comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Python] Hasher v1.0 (Crackeador de hashes)

  • 4 Respuestas
  • 1521 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado khyv123

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« en: Julio 19, 2011, 01:37:38 pm »
Aqui os dejo un code en python crackeador de hashes hecho por mi compatible con hashes md5, sha1, sha224, sha256, sha384 y sha512 y posibilidad de crackeo por dicionario o por fuerza bruta:

Código: Python
  1. # ******************************************
  2. #     Hasher v1.0:
  3. #     Autor : khyv123  
  4. #     Fecha de creacion : 18/07/11
  5. #     Creado para : www.underc0de.org
  6. # ******************************************
  7.  
  8. import hashlib,sys
  9. from os import path
  10.  
  11. def main():
  12.         print '\n *********************************'
  13.         print ' *  Hasher v1.0  --  by khyv123  *'
  14.         print ' *********************************'
  15.  
  16. def options():
  17.         print '\nArgumentos disponibles:\n'
  18.         print '\t-h hash\t\tHash a crackear'
  19.         print '\t-t tipo\t\tTipo de hash (md5,sha1,sha224,sha256,sha384,sha512)'
  20.         print '\t-v\t\tModo verbose'
  21.         print '\n\nTipos de ataque:\n'
  22.         print '\t-f\t\tFuerza bruta'
  23.         print '\t-d dic.txt\tAtaque por dicionario'
  24.         print '\n\nCaracteres utilizados:\n'
  25.         print '\t-m\t\tLetras minusculas (a-z)'
  26.         print '\t-M\t\tLetras mayusculas (A-Z)'
  27.         print '\t-n\t\tNumeros (0-9)'
  28.         print '\t-p caracteres\tCaracteres defindos por el usuario'
  29.  
  30. def eleva(base,ex):
  31.         if ex <= 0:return 1
  32.         return base * eleva(base,ex-1)
  33.  
  34.  
  35. def comb(caracteres,num_car,num_comb):
  36.         res=''
  37.         for i in range(num_car-1,-1,-1):
  38.                 if num_comb==0:
  39.                         while len(res)!=num_car: res=res+caracteres[0]
  40.                         return res
  41.                 for j in range(len(caracteres)-1,-1,-1):
  42.                         if (eleva(len(caracteres),i)*j)<=num_comb:
  43.                                 res=res+caracteres[j]
  44.                                 num_comb=num_comb-(eleva(len(caracteres),i)*j)
  45.                                 break
  46.         return res
  47.                        
  48. def muestra_datos():
  49.         print '\n*******************************************************************'
  50.         print '  Hash : '+hash
  51.         print '  Encriptacion : '+enc
  52.         if tda=='fuerza_bruta':
  53.                 print '  Caracteres maximos : '+str(high)
  54.                 print '  Caracteres minimos : '+str(low)
  55.                 print '  Caracteres utilizados : '+char
  56.         elif tda=='dicionario':
  57.                 print '  Archivo de hashes : '+file
  58.         print '*******************************************************************\n'
  59.  
  60.  
  61. verbose=high=low=0
  62. hash=enc=char=tda=file=''
  63.  
  64. if len(sys.argv)==1:
  65.         main()
  66.         options()
  67.         sys.exit(1)
  68.  
  69. for opt in sys.argv[1:]:
  70.         if opt=='-v':
  71.                 verbose=1
  72.         if opt=='-f':
  73.                 tda='fuerza_bruta'
  74.         if opt=='-d':
  75.                 tda='dicionario'
  76.                 file=sys.argv[int(sys.argv[1:].index(opt))+2]
  77.         elif opt=='-h':
  78.                 hash=sys.argv[int(sys.argv[1:].index(opt))+2]
  79.         elif opt=='-t':
  80.                 enc=sys.argv[int(sys.argv[1:].index(opt))+2]
  81.         elif opt=='-c':
  82.                 char=sys.argv[int(sys.argv[1:].index(opt))+2]
  83.         elif opt=='-a':
  84.                 high=sys.argv[int(sys.argv[1:].index(opt))+2]
  85.         elif opt=='-i':
  86.                 low=sys.argv[int(sys.argv[1:].index(opt))+2]
  87.         elif opt=='-m':
  88.                 char=char+'abcdefghijklmnopqrstuvwxyz'
  89.         elif opt=='-M':
  90.                 char=char+'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  91.         elif opt=='-n':
  92.                 char=char+'0123456789'
  93.         elif opt=='-p':
  94.                 char=char+sys.argv[int(sys.argv[1:].index(opt))+2]
  95.  
  96. if hash=='':
  97.         sys.exit('\nERROR : Hash no especificado (-h)')
  98.  
  99. if enc=='':
  100.         if len(hash)==32: enc='md5'
  101.         elif len(hash)==40: enc='sha1'
  102.         elif len(hash)==56: enc='sha224'
  103.         elif len(hash)==64: enc='sha256'
  104.         elif len(hash)==96: enc=='sha384'
  105.         elif len(hash)==128: enc='sha512'
  106.  
  107. if tda=='':
  108.         sys.exit('\nERROR : Tipo de ataque no especificado (-f/-d)')
  109. elif tda=='fuerza_bruta':
  110.         if char=='': char='abcdefghijklmnopqrstuvwxyz0123456789'
  111.         if high==0: high=8
  112.         if low==0: low=3
  113. elif tda=='dicionario':
  114.         if file=='':
  115.                 sys.exit('\nERROR : Archivo de hashes no especificado (-d)')
  116.         elif not path.exists(file):
  117.                 sys.exit('\nERROR : El archivo selecionado no existe')
  118.  
  119. muestra_datos()
  120.  
  121. if tda=='fuerza_bruta':
  122.         for i in range(low,high):
  123.                 for j in range(eleva(len(char),i)):
  124.                         if enc=='md5':
  125.                                 bfhash=hashlib.md5(comb(char,i,j))
  126.                         elif enc=='sha1':
  127.                                 bfhash=hashlib.sha1(comb(char,i,j))
  128.                         elif enc=='sha224':
  129.                                 bfhash=hashlib.sha224(comb(char,i,j))
  130.                         elif enc=='sha256':
  131.                                 bfhash=hashlib.sha256(comb(char,i,j))
  132.                         elif enc=='sha384':
  133.                                 bfhash=hashlib.sha384(comb(char,i,j))
  134.                         elif enc=='sha512':
  135.                                 bfhash=hashlib.sha512(comb(char,i,j))
  136.                         else:
  137.                                 sys.exit('ERROR : El tipo de hash especificado no es valido.')
  138.                         if verbose==1:
  139.                                 print comb(char,i,j)+' -> '+bfhash.hexdigest()
  140.                         if bfhash.hexdigest()==hash:
  141.                                 print 'Hash crackeado: '+comb(char,i,j)
  142.                                 sys.exit(1)
  143. elif tda=='dicionario':
  144.         dic=open(file,'r')
  145.         for line in dic.xreadlines():
  146.                 if line.count(':::'):
  147.                         line=line.replace('\n','')
  148.                         line=line.split(':::')
  149.                         if line[1]==hash:
  150.                                 print 'Hash encontrado: '+line[0]
  151.                                 sys.exit(1)
  152.                         if verbose==1:
  153.                                 print line[0]+' -> '+line[1]
  154.         dic.close()
  155.  
  156. else:
  157.         main()
  158.         options()
  159.  
  160.  


PD : link de descarga con el programa más un dicionario de hashes md5 compatible: No tienes permisos para ver links. Registrate o Entra con tu cuenta
« Última modificación: Julio 23, 2011, 01:43:38 pm por khyv123 »

Desconectado [C]orrupted[B]yte

  • *
  • Underc0der
  • Mensajes: 172
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • R00TW0RM
    • Email
« Respuesta #1 en: Julio 19, 2011, 03:04:59 pm »
Excelente aporte (Descargado)  ;)

Desconectado Comandante Linux

  • *
  • Underc0der
  • Mensajes: 175
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • http://comandante-linux.blogspot.com/
    • Email
« Respuesta #2 en: Julio 19, 2011, 03:13:22 pm »
Citar
   Autor : khyv123

   Fecha de creación : 18/07/11

   Creado para : No tienes permisos para ver links. Registrate o Entra con tu cuenta

Muy bueno, podrías también agregarse lo a lo primero como comentario.
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    38.33%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #3 en: Julio 19, 2011, 03:19:10 pm »
Waaaaaa!!! es como el que estabamos haciendo para el foro!! jajajaja
Esta excelenteeeee!


Desconectado JaAViEr

  • *
  • Underc0der
  • Mensajes: 163
  • Actividad:
    0%
  • Reputación 0
  • http://codigo.ga
    • Ver Perfil
    • Blog de Programación :: Python
« Respuesta #4 en: Julio 19, 2011, 05:14:55 pm »
Lindo código :o
Solo una mini sugerencia al sys.argv[1:] le añadiría el .lower()
así no hay problem con que sea -F || -f o -V || -v
Lo demás muy bien ;D
No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[Código] Yardas a metros - Metros a yardas [Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1419
Último mensaje Mayo 29, 2011, 01:27:34 am
por LucaSthefano
Python phpmyadmin "BruteForce"

Iniciado por linkgl

Respuestas: 2
Vistas: 2548
Último mensaje Agosto 19, 2011, 12:14:37 pm
por linkgl
Python keylogger - by "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 0
Vistas: 2059
Último mensaje Abril 07, 2010, 03:30:22 am
por d33k40
[Código] Entero / No Entero [Ejercicio - Python]

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1387
Último mensaje Mayo 29, 2011, 01:24:09 am
por LucaSthefano
Python Trojan - By "bLiNdFiR3"

Iniciado por d33k40

Respuestas: 1
Vistas: 2109
Último mensaje Abril 03, 2010, 11:01:59 pm
por Dharok