Los sistemas numéricos.



Antes de comenzar a utilizar las herramientas que usaremos en el cracking, vamos a repasar los conceptos básicos e indispensables que tenéis que saber para utilizarlas, de la misma forma que no podemos aprender mecánica con un manual en inglés, si no sabemos ingles, no podemos pretender aprender a usar un conversor hexadecimal si previamente no estamos familiarizados con los sistemas numéricos, decimal, binario y hexadecimal. Por lo tanto vamos a tomar apuntes de en que consisten los sistemas numéricos mencionados y como pasar de uno a otro.



* Sistema numérico decimal: Este es el más conocido y usado por todos y el que nos enseñan en la escuela primaria. Se llama decimal porque la base de su sistema es 10, por lo que consta de diez cifras que van desde el 0 hasta el 9.


* Sistema numérico binario: Las computadoras utilizan un sistema numérico distinto que es el binario (de base dos) esto se debe a que la información que manejan se encuentra codificada en forma de bits (verdadero y falso) por lo que sólo usan dos cifras (el 0 y el 1) ya que los ordenadores trabajan internamente con dos niveles de voltaje, por lo que su sistema de numeración natural es el sistema binario (encendido 1, apagado 0)

* Sistema numérico octal
.Como explico en el apartado anterior para simplificar la conversión de números decimales a binarios también se utiliza el sistema octal, como su nombre indica utiliza 8 dígitos que van del 0 al 7 a los que se otorga un valor dependiendo de la posición en la que se encuentren.



* Sistema numérico hexadecimal. Es un sistema de numeración posicional (de base 16) por lo que usa 16 símbolos, generalmente suele abreviarse en hex. Este sistema se emplea en informática porque los ordenadores utilizan el byte u octeto como unidad básica de memoria; y, debido a que un byte representa 28. Además hex., establece un puente entre la conversión decimal y binario pues para representar valores decimales en binario se requieren muchos mas dígitos por lo que la conversión resulta algo incómoda. Algo que se reduce con el uso del sistema hexadecimal ya que el mecanismo de conversión es más simple.


Una vez aclarados estos conceptos procedamos a la conversión entre estos sistemas numéricos, una vez asimilada la mecánica de la conversión resulta verdaderamente sencillo, solo se requiere de operaciones matemáticas básicas sumar, multiplicar, potenciar, etc.



* Conversión de un número decimal en binario
. Convertir un número decimal al sistema binario es muy sencillo: basta con realizar divisiones sucesivas por 2 y escribir los restos obtenidos en cada división en orden inverso al que han sido obtenidos. Vamos a ver un ejemplo práctico para entenderlo:


Vamos a pasar el numero 15010 decimal a binario, para ello los descomponemos en una tabla realizando divisiones sucesivas por 2 con todo los restos hasta llegar a un número indivisible.





150: 2 = 75 Resto: 0
75: 2 = 37 Resto: 1
37: 2 = 18 Resto: 1
18: 2 = 9 Resto: 0
9: 2 = 4 Resto: 1
4: 2 = 2 Resto: 0
2: 2 = 1 Resto: 0
1: 2 = 0 Resto: 1



Ahora lo que haremos será ordenar los resultados, osea los restos de las operaciones a la inversa y el resultado será 10010110 por lo que llegamos a la conclusión que:





15010 = 1001011010




* Conversión de un número binario a decimal Para hacerlo a la inversa debemos desarrollar el número teniendo en cuenta el valor de cada dígito en su posición, que es el de una potencia de 2, cuyo exponente es 0 en el bit situado más a la derecha, y se incrementa en una unidad según vamos avanzando posiciones hacia la izquierda.Dicho de otra forma, cada dígito se multiplica por 2 (que es la base del sistema binario) y el número 2 se eleva a la potencia del número al que multiplica en función del puesto que ocupe y luego se suman todos los resultados. Veamos un ejemplo práctico:

Convirtamos el número 110111 2 a decimal:




1*25 + 1*24 + 0*23 + 1*22 + 1*21 + 1*20 = 32+16+0+4+2+1=55


1101112 = 5510





* Conversión de un número decimal a octal Se utiliza el mismo sistema de conversión que en los números binarios sólo que en lugar de dividir entre dos, se divide entre 8.EJ:

Para convertir 11910 en octal sería así:




119: 8 = 14 Resto: 7
14: 8 = 1 Resto: 6
1: 8 = 0 Resto: 1


11910 = 1678


* Conversión octal a decimal Se utiliza la misma fórmula que para los números binarios, lo único que cambia es que en lugar de por 2, se multiplica por 8 que comienza con exponente 0 y se añade +1 progresivamente hacia la izquierda. Veamos un ejemplo.





1*82 + 2*81 + 5*80 = 64+ 16 + 5 = 8510

1258 = 18510




* Conversión hexadecimal a decimal: Como hemos visto el sistema numérico decimal es representado por 16 dígitos que van del 0 al 9,seguido de las letras A, B, C, D, E y F que representan a los números 10, 11, 12, 13, 14 y 15 del sistema decimal ya en éste no existen los dígitos mayores de 9. El valor de cada número depende de su posición se calcula mediante potencias de base 16. Veámoslo.




2BC5 16 = 2*163 + B*162 + C*161 + 5*160
2*4096 + 11*256 + 12*16 + 5*1=8192+2816+192+5=11205

2BC516 = 1120510





* Conversión a decimal hexadecimal: Para ello volvemos a las divisiones sucesivas, en este caso el dividendo será el número 16.






1735: 16 = 108 Resto: 7
108: 16 = 6 Resto: C es decir, 1210
6: 16 = 0 Resto: 6

173510 = 6C716






* Conversión de números binarios a octales y viceversa
Para Poder realizar esta conversión es indispensable controlar esta tabla:




D B O
0 000 0
1 001 1
2 010 2
3 001 3
4 100 4
5 101 5
6 110 6
7 111 7







Para representar números octales en binario se agrupan en 3 bits y su correspondiente número octal dependerá del puesto que ocupe en esta tabla.Por ejemplo,para convertir en nº 1010010112 en octal,haríamos lo siguiente:





1012 = 58
0012 = 18
0112 = 38


1010010112 = 5138


La conversión de números octales a binarios se hace, siguiendo el mismo método, reemplazando cada dígito octal por los tres bits equivalentes. Por ejemplo, para convertir el número octal 7508 a binario, tomaremos el equivalente binario de cada uno de sus dígitos:





78 = 1112
58 = 1012
08 = 0002

7508 = 1111010002



* Conversión de números binarios a hexadecimales y viceversa





D B H
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 10
11 1011 11
12 1100 12
13 1101 13
14 1110 14
15 1111 15




Pues en este caso es igual que el anterior solo que la agrupación se realiza entre 4 dígitos.




10102 = A16
01112 = 716
00112 = 316

1010011100112 = A7316




En caso de que los dígitos binarios no formen grupos completos de cuatro dígitos, se deben añadir ceros a la izquierda hasta completar el último grupo. Por ejemplo:




1011102 = 001011102 = 2E16



La conversión de números hexadecimales a binarios se hace del mismo modo, reemplazando cada dígito hexadecimal por los cuatro bits equivalentes de la tabla. Para convertir a binario, por ejemplo, el número hexadecimal 1F616 hallaremos en la tabla las siguientes equivalencias:





116 = 00012
F16 = 11112
616 = 01102


1F616 = 0001111101102

Fuente consultada Platea.


Pues esto es todo, no os preocupéis porque no vais a tener realizar todos estos cálculos mentalmente, ya que existen herramientas que nos facilitan esa tarea, pero si debemos saber esto para comprender como funcionan los editores hexadecimales y comprender mejor el assembler. Supongo que después de leer esto todos comprenderéis el famoso chiste de programadores que dice:

“En programación solo existen 10 tipos de personas; las que saben binario y las que no”



Si queréis practicar estas conversiones para ver si asimilasteis bien los conceptos, podéis ayudaros de esta tabla para verificar los resultados y de estaherramienta para verificar los cálculos en las conversiones hexadecimales.

No hay comentarios :