Mostrando entradas con la etiqueta desencripcion. Mostrar todas las entradas
Mostrando entradas con la etiqueta desencripcion. Mostrar todas las entradas
Cómo descifrar un hash MD5 online
Aloe Vera
Este fin de semana me encontré con la necesidad de descifrar un password hasheado con md5. Para ello estuve a punto de utilizar el viejo y querido John the Ripper, pero un segundo antes se me ocurrió buscar alguna herramienta online que haga el trabajo por mí. Motivado por la vagancia, pero también para hacerlo más rápidamente (aprovechando la nube o rainbow tables), encontré buscando en Google este muy buen artículo: How to crack MD5 passwords online, el cual contiene una lista de servicios para reconstruir texto digerido mediante md5.
La mayoría de estos sitios utilizan rainbow tables (grandes tablas de hashes precomputados) con el objetivo de intercambiar tiempo de ejecución por memoria. De esta forma el resultado logrado es muy rápido (si es exitoso). Aunque también algunos utilizan diccionarios.

A continuación dejo la lista de servicios que realizan esta tarea. Les recomiendo que lean el artículo original, ya que el autor incluye una valuación de los mismos (calculada como la cantidad de hashes encontrados de un conjunto de 10):
www.tmto.org
md5.noisette.ch
md5decryption.com
www.c0llision.net
www.netmd5crack.com
www.md5decrypter.com
md5hashcracker.appspot.com
www.hashhack.com
isc.sans.edu
www.md5crack.com
passcracking.com
authsecu.com
md5.rednoize.com
md5.web-max.ca
www.cmd5.com
md5.thekaine.de
www.shell-storm.org
www.md5this.com
www.hashchecker.com
hashcrack.com
md5pass.com
md5pass.info

Cabe destacar que algunos de estos sitios incluyen una herramienta para generar hashes md5. No es recomendable utilizarlas para calcular hashes de nuestras contraseñas, ya que no sabemos si guardan los hashes que calculamos en sus bases de datos, lo cual las vuelve 100% crackeables ;)

Para lograr mi objetivo, tomé el primer servicio de la lista y obtuve el texto hasheado (admin1234) en 3.55 segundos. Lo que más me molestó fue que había probado sin éxito varias contraseñas, entre las que se encontraban 'admin', '1234' y 'admin123' pero no 'admin1234'!



Para finalizar, dejo un excelente artículo que explica cómo utilizar Google como password cracker (a esta altura creo que a Google le descubren más propiedades que al Aloe Vera). La justificación de esta técnica es que a veces los programadores incluyen hashes md5 en la URL (para ver la explicación detallada les recomiendo lean el artículo), lo que transforma a las bases de datos de Google en rainbow tables.


No me deja de sorprender la cantidad de tareas útiles que se pueden realizar utilizando Google, la mayoría de las cuales con propósitos o fines no pensados en un simple buscador. Es aquí donde uno toma conocimiento del verdadero poder y valor de la información.

Espero que les sirva!
Encriptar y Desencriptar con GPG por linea de comandos
Si bien existen GUIs como kgpg para realizar el trabajo de encripción y desencripción de archivos, muchas veces es más rápido realizarlo utilizando la línea de comandos. También es útil conocer el comando en caso de necesitar un script en bash o algún otro lenguaje.

Hoy me vi forzado a leer el manual de GPG para poder realizar este trabajo (siempre utilizaba kgpg...), y como me resultó muy interesante, quería compartirlo con ustedes.

Para el que no tenga idea de qué trata GPG (Gnu Privacy Guard), les comento que es la alternativa libre a PGP (Pretty Good Privacy). Tanto PGP como GPG son herramientas que proveen encripción simétrica, asimétrica y firma digital. La idea de este post no es explicar GPG ni criptografía, así que si les interesa, pueden arrancar leyendo las respectivas entradas en wiki.

Vayamos al grano. Supongamos que ya tengo incorporadas las claves públicas de las personas a las que deseo enviar archivos encriptados y que ya generé mi propio par de claves (pública y privada). Si todavía no generaron su par de claves, pueden hacerlo con el comando interactivo:
$ gpg --gen-key
Si todavía no importaron la clave pública del destinatario, pueden hacerlo utilizando:
$ gpg --import pepito.asc
Ya con las claves necesarias, veamos el comando para encriptar un archivo:
$ gpg -sev -r pepito -o prueba.gpg archivo.txt
-s indica que firmaremos el archivo, -e indica que se debe encriptar, -v para que la salida sea verbosa, con -r indicamos el receptor (puede ser alguno de los nombres, o el e-mail), y -o indica cómo se llamará el archivo de salida. A continuación de las opciones, colocamos el archivo de entrada (el que deseamos encriptar), en mi caso llamado archivo.txt
Una vez ejecutado el comando, gpg nos pedirá la passphrase de la clave privada para poder firmar el archivo de salida. No es necesario firmar el archivo cuando encriptamos, pero lo agregué para que el ejemplo quede más completo.

Si deseamos utilizar la passphrase en el mismo comando, para evitar que el comando sea interactivo y así utilizarlo en un script en bash (o lo que sea), podemos utilizar el parámetro --passphrase-fd 0, donde 0 indica que lea la passphrase de la standar input:
$ echo "passphrase" | gpg -sev -r pepito -o prueba.gpg --passphrase-fd 0 archivo.txt
donde con echo "passphrase" pasamos la passphrase que protege la clave privada.

Muy bien, ya sabemos encriptar. Veamos ahora qué comando ejecutar para realizar la desencripción de un archivo. Esto es tan simple como ejecutar:
$ gpg -o salida.txt input.gpg
al ejecutar el comando, gpg nos pedirá nuevamente la passphrase de la clave privada para poder desencriptar. Si bien no es necesario, agregué la opción -o para indicar cómo llamar al archivo de salida.

Si deseamos utilizar la passphrase en el mismo comando y no tener que colocarla de forma interactiva, nuevamente podemos usar el parámetro --passphrase-fd 0 y un echo:
echo "passphrase" | gpg --passphrase-fd 0 -o salida.txt input.gpg

Como ven, para nada difícil el manejo de GPG por línea de comandos. El problema siempre es acordarse los parámetros, algo que con la GUI es mucho más simple.
Espero que les sea de utilidad y puedan utilizarlo de aquí en adelante.


Referencia
- Linux / Unix Command: gpg