|-----------------------------------------------------------------------------------------------|
|                          Descifrando secuencias codificadas en Base64                         |
|-----------------------------------------------------------------------------------------------|
| 09-01-2003 |                                                                         | XyborG |
|-----------------------------------------------------------------------------------------------|
|                            _____ ___ _   _   _____     _                                      |
|                           |  ___|_ _| | | | | ____|___(_)_ __   ___                           |
|                           | |_   | || |_| | |  _| |_  / | '_ \ / _ \                          |
|                           |  _|  | ||  _  | | |___ / /| | | | |  __/                          |
|                           |_|   |___|_| |_| |_____/___|_|_| |_|\___|                          |
|                                      xyborg@bigfoot.com                                       |
|				                            [ Traduccion al Espaol por XyborG ]|
|-----------------------------------------------------------------------------------------------|


Introduccion:
-------------

Esta es una traduccion del texto en Ingles, que pueden encontrar en la 
siguiente URL:

http://www.rzweb.com.ar/files/txt/textos/base64.htm

Me dejo de vueltas y empiezo con el texto :o)

-----------------------------------------------------

A menudo es necesario para algunos servidores web poder autenticar usuarios 
para permitir el acceso a directorios de archivos. Hay muchas formas de 
hacer esto...la mas comun (y menos segura) es una autenticacion basica. La 
autenticacion basica utiliza Base64 para codificar el nombre del usuario y 
la contrasea de este modo no hay "clear" text contraseas volando alrededor 
de la red durante conexiones FTP.

Cuando ves con un sniffer el nombre del usuario 'Administrator' y su 
contrasea 'pass' aparece como 'QWRtaW5pc3RyYXRvcjpwYXNz'. Cuando se 
codifican el userID y su contrasea, se utilizan los dos puntos ( ':' sin 
comilla :) para separlos. Entonces:

'QWRtaW5pc3RyYXRvcjpwYXNz'

Se traduce a:

Administrator:pass

Base64 utiliza un subconjunto de 65 caracteres del US-ASCII, permitiendo 6 
bits para cada caracter, entonces el caracter 'm' tiene un valor Base64 de 
38, y cuando esta representado en forma binaria, es 100110.

Cuando se codifica una secuencia, vamos a decir 'mne' esto es lo que sucede:

La secuencia de texto se cinvierte en su valor US-ASCII (En US-ASCII a cada 
caracter se le asigna un valor):

El carcter "m" tiene el valor decimal de 109
El carcter "n" tiene el valor decimal de 110
El carcter "e" tiene el valor decimal de 101

de este modo 'mne' (una secuencia 3 8-bit-bytes) es 109 110 101 en forma 
decimal.

Cuando convertimos esta secuencia a Binario nos queda lo siguiente:

01101101 01101110 01100101

Estos 3 8-bit-bytes se concatenan (se juntan) para hacer una cadena de 24 
bit:

011011010110111001100101

Esta cadena de 24 bit la dividiremos en 4 secciones de 6 bit:

011011 010110 111001 100101

Ahora tenemos 4 valores. Estos valores binarios, cuando son convertidos al 
sistema Decimal obtenemos lo siguiente:

27 22 57 37

Ahora cada caracter del conjunto de Base64 tiene un valor decimal. Ahora 
cambiaremos estos valores decimales por los equivalentes en Base64:

27 = b

22 = W

57 = 5

37 = l

De este modo 'mne' cuando es codificado en Base 64 obtenemos 'bW51'.
Debajo esta la tabla del conjunto de caracteres Base64 con sus valores 
Decimales:

                            Tabla 1: Alfabeto Base64

       Valor Codif.    Valor Codif.    Valor Codif.    Valor Codificado
           0 A            17 R            34 i            51 z
           1 B            18 S            35 j            52 0
           2 C            19 T            36 k            53 1
           3 D            20 U            37 l            54 2
           4 E            21 V            38 m            55 3
           5 F            22 W            39 n            56 4
           6 G            23 X            40 o            57 5
           7 H            24 Y            41 p            58 6
           8 I            25 Z            42 q            59 7
           9 J            26 a            43 r            60 8
          10 K            27 b            44 s            61 9
          11 L            28 c            45 t            62 +
          12 M            29 d            46 u            63 /
          13 N            30 e            47 v
          14 O            31 f            48 w         (pad) =
          15 P            32 g            49 x
          16 Q            33 h            50 y

Para descifrar una secuencia codificada en Base64 solo debe hacer esto al 
reves:

1)Convertir cada caracter a el valor decimal de la tabla Base64.

2)Convertir este valor decimal en binario.

3)Reune los 6 bit binarios de cada caracter en una gran cadena.

4)Separa esta secuencia en grupos de 8 bit (empezando de derecha a 
izquierda).

5)Convertir cada valor binario 8-bit en un numero decimal.

6)Convertir este valor decimal en su equivalente US-ASCII.

Listo, ahora todos pueden descifrar una cadena codificada en Base64 :o)

-----------------------------------------------------

Bueno espero que les sea util esta traduccion, si les parece que hace falta 
alguna correccion, o tienen alguna duda, solo consulten, no molestan :o)

------------------------
By XyborG
xyborg@bigfoot.com
http://www.rzweb.com.ar
------------------------
