5 Descifrando secuencias codificadas en Base64
|-----------------------------------------------------------------------------------------------|
| Descifrando secuencias codificadas en Base64 |
|-----------------------------------------------------------------------------------------------|
| 09-01-2003 | | XyborG |
|-----------------------------------------------------------------------------------------------|
| _____ ___ _ _ _____ _ |
| | ___|_ _| | | | | ____|___(_)_ __ ___ |
| | |_ | || |_| | | _| |_ / | '_ \ / _ \ |
| | _| | || _ | | |___ / /| | | | | __/ |
| |_| |___|_| |_| |_____/___|_|_| |_|\___| |
| xyborg@bigfoot.com |
| [ Traduccion al Español 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 contraseña de este modo no hay "clear" text contraseñas volando alrededor de la red durante conexiones FTP.
Cuando ves con un sniffer el nombre del usuario 'Administrator' y su contraseña 'pass' aparece como 'QWRtaW5pc3RyYXRvcjpwYXNz'. Cuando se codifican el userID y su contraseña, 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 carácter "m" tiene el valor decimal de 109
- El carácter "n" tiene el valor decimal de 110
- El carácter "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:
- Convertir cada caracter a el valor decimal de la tabla Base64.
- Convertir este valor decimal en binario.
- Reune los 6 bit binarios de cada caracter en una gran cadena.
- Separa esta secuencia en grupos de 8 bit (empezando de derecha a izquierda).
- Convertir cada valor binario 8-bit en un numero decimal.
- 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
------------------------