Hola a todos actualmente ando en la lectura de 2 libros uno técnico y el otro no técnico, el primero es Python Forensic, el otro ya viene de la mano de Steve Jobs la Biografía un poco de cultura heee! varias cosas que no tenia ni el mínimo conocimiento de su origen y detalles voy descubriendo, pero ya veremos ello en otra entrada, la serie de entradas de jugando a ser forense con Python vendrán de la mano del primero, en el cual tratare de mostar explicar lo que vaya aprendiendo en el lenguaje de Cervantes, aún con su valor adicional de que anda con Python
Python + Forensic = Locura Total para Snifer
Antes de todo esta mas que claro, que necesitamos tener instalado Python, ya estemos en Linux, Windows o Mac para ello ya saben tener como requisito el interprete la versión 2.7 porfavor ;).
Librerías entandar en Python
Python cuenta con librerías estándar o bien que se encuentran por defecto, una de ellas es hashlib el cual veremos un ejemplo, como trabaja para ver mas sobre HashLib aquí y comprender como es su funcionamiento, a continuación realizaremos un script de ejemplo tomando MD5 y SHA1 cabe resaltar que podemos hacer uso de MD5, SHA1, SHA256, SHA224, SHA512, SHA384 tomando en cuenta que un proceso forense, se debe de evitar hacer uso de MD5 por las famosos colisiones, que ya es conocido pero para fines prácticos nos vamos con el script.
import hashlib
print "Ejemplo del uso de Hashlib "
print "==========================\\n"
String = "Python Forensic with Snifer@L4b's"
md5 = hashlib.md5()
sha1 = hashlib.sha1()
hexMD5 = md5.hexdigest()
hexSHA1 = sha1.hexdigest()
print ("El hash de " + String + " es:\\n")
print ("MD5 Hash -> " + hexMD5 ) #Mostramos el hash en minúsculas
print ("SHA1 Hash -> " + hexSHA1.upper())#Mostramos el resultado del Hash en mayúsculas
Script en Github HashLib.py
El script en ejecución
Se observa que el script genera de la frase “Python Forensic with Snifer@L4b’s” su Hash en MD5 y SHA1.
Built-in Functions
hex() y bin()
Ahora, viene algo interesante mas para aprender y es el uso de hex() y bin() funciones que nos permiten obtener los valores en hexadecimal de algun valor entero y bin() que nos da el resultado en binario, pero cabe resaltar que no es de un solo lado, es decir puedes pasar de un binario a hexadecimal y al final obtenemos el mismo resultado ya que Python en ello nos colabora con hacer los cálculos (porque no conocí a Python en la universidad en primeros semestres, me hubiera salvado el trasero en las conversiones :P.).
En este ejemplo nos vamos al interprete y procedemos a declarar una variable con el valor de 100 y jugamos con ambos hex() y bin().
Y bueno que pasa si hacemos al reves? asignamos el valor hexadecimal de 0x64 realizaremos la inversa, es decir volviendo a su valor entero.
Hey interesante no? vi mucho el uso de ellas en el REVERSING, ahora si comprendo muchas cosas… por ahora….
range()
A veces o bueno gran parte de las veces necesitamos, tener un rango de datos es decir desde el 1 al 1000 por decirlo así viendo un uso mas adecuado generar un listado de direcciones IP :3. un ejemplo desde el intérprete.
Ok seguimos con las Built-in Functions ? xD las que quise mostrar fueron solo unos ejemplos ya que tenemos el listado por si no lo sabían son los siguientes:
Fuente: Built in functions
Ya con esto terminamos la primera entrega ya vendremos desarrollando una herramienta, y descubriendo mas del poder de Python ;).
NOTA: Recomiendo que siempre le den una mirada a la documentación oficial de Python https://docs.python.org/2/ ya que con ella podremos conocer mas las librerías funciones y demás detalles sobre el lenguaje.
Regards,
Snifer