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.

zCrack | Jugando con /etc/shadow y Python

  • 3 Respuestas
  • 1312 Vistas

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

Desconectado [Z]tuX

  • *
  • Underc0der
  • Mensajes: 27
  • Actividad:
    0%
  • Reputación 0
  • ZtuX W4s H3r3 !!
    • Ver Perfil
    • ztux.net
« en: Agosto 03, 2013, 03:40:04 am »
Bien pues hace rato que hice un script en Python que crackear las Passwords de lo que hay en el archivo /etc/shadow en Linux.
El método es demasiado viejo y muy lento pero puede que a alguien le sirva con un buen diccionario, paciencia y suerte xD se puede crackear el password de algunos usuarios.
Aclaro también que es la primer versión que codeo, así que se aceptan sugerencias, criticas constructivas, etc...
Pues aquí el código:
Código: Python
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import os,sys
  5. import crypt
  6. import argparse
  7.  
  8. autor = '[Z]tuX'
  9. mail = 'alfr3kx@gmail.com'
  10. web = 'http://ztux.blogspot.com'
  11. version = 1.0
  12. caracteres = ['!','*','x']
  13.  
  14. usuarios = []
  15. passwordsCifrados = []
  16.  
  17. def banner():
  18.     print """
  19.      ____                _                  
  20. ____/ ___|_ __ __ _  ___| | __
  21. |_  / |   | '__/ _` |/ __| |/ /
  22. / /| |___| | | (_| | (__|   <
  23. /___|\____|_|  \__,_|\___|_|\_|
  24.                                  
  25. """
  26.      
  27.      
  28. def info():
  29.     print 'Autor: '+autor
  30.     print 'Mail: '+mail
  31.     print 'Sitio web: '+web
  32.     print "Versión del programa: "+str(version)
  33.      
  34.      
  35. def crackear(usuario,passwordCifrado,diccionario,verbose):
  36.     print "[*] Trabajando en "+usuario
  37.     cifrado=passwordCifrado.split('$')[1]
  38.     if cifrado!= '6':
  39.         print "[-] No se ah detectado hash SHA-512"
  40.         return -1
  41.     salt = passwordCifrado.split('$')[2]
  42.     insalt = '$'+cifrado+'$'+salt+'$'
  43.     if verbose:
  44.         print "[*] Salt: "+salt
  45.         print "[*] inSalt: "+insalt
  46.     listaPass = open(diccionario,'r')
  47.     print "[+] Crackeando Password..."
  48.     for palabra in listaPass.readlines():
  49.         palabra=palabra.strip('\n')
  50.         password = crypt.crypt(palabra,insalt)
  51.         if (password == passwordCifrado):
  52.             print "[+] Password encontrado para "+usuario+": "+ palabra+"\n"
  53.             return 0
  54.     print '[-] Password NO encontrado.\n'  
  55.     return 0
  56.      
  57.  
  58. def main():
  59.     parse = argparse.ArgumentParser(description='Password Cracker by '+autor)
  60.     parse.add_argument('-i','--info',action='store_true',dest='info',help='Muestra información del programador')
  61.     parse.add_argument('-v','--verbose',action='store_true',dest='verbose',help="Muestra mas información")
  62.     parse.add_argument('-d','--diccionario',action='store',dest='diccionario',help="Diccionario para crackear la Password")
  63.     parse.add_argument('-a', action='store', dest='archivo', help='Ruta del archivo a crackear, ejemplo: \'/etc/shadow\'')
  64.     argumento=parse.parse_args()
  65.     if argumento.info==True:
  66.         info()
  67.         exit
  68.     elif argumento.archivo==None:
  69.         print "Falta especificar la ruta del archivo a crackear."
  70.         parse.print_help()
  71.         exit
  72.     else:
  73.         banner()
  74.         if argumento.verbose:
  75.             print "[!] Modo verbose esta encendido."
  76.         listaPasswds = open(argumento.archivo,'r')
  77.         for linea in listaPasswds.readlines():
  78.             linea = linea.replace("\n",' ').split(':')
  79.             if not linea[1] in caracteres:
  80.                 usuario = linea[0]
  81.                 passwordCifrado = linea[1]
  82.                 usuarios.append(usuario)
  83.                 passwordsCifrados.append(passwordCifrado)
  84.         if argumento.verbose:
  85.             print "Usuarios encontrados en el sistema:"
  86.             for i in range(0,len(usuarios)):
  87.                 print usuarios[i]+" => "+passwordsCifrados[i]
  88.             print "Crackeando usuarios:"
  89.         for i in range(0,len(usuarios)):
  90.             crackear(usuarios[i],passwordsCifrados[i],argumento.diccionario,argumento.verbose)        
  91.         exit        
  92.                      
  93. if __name__=="__main__":
  94.     main()
  95.  

Puedes descargar el código aquí: You are not allowed to view links. Register or Login

Un Saludo!
« Última modificación: Agosto 04, 2013, 10:17:13 pm por [Z]tuX »

Desconectado MagoAstral

  • *
  • Underc0der
  • Mensajes: 115
  • Actividad:
    0%
  • Reputación 0
  • Nada resulta más engañoso que un hecho evidente.
    • Ver Perfil
« Respuesta #1 en: Agosto 03, 2013, 08:10:26 am »
Bastante interesante, por ahora solo le eché un ojo a la sintaxis y creo que podrías haber abreviado el código así como el espacio en la memoria, ejemplos claros tu información, veo inútil declarar una variable autor que sea igual a blablabla y después hacer un print de "Autor: " y su correspondiente declaración, si lo haces de seguido pues lo dicho.
Por lo demás bastante limpio, ahora solo me queda testearlo.
Un saludo,
MagoAstral.
Lo que sabemos es una gota de agua; lo que ignoramos es el océano.

Desconectado Sanko

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    0%
  • Reputación 0
  • ¿Puedes?
    • Ver Perfil
    • Underc0de
« Respuesta #2 en: Agosto 04, 2013, 09:32:11 am »
Esta bien el script, pero es lo que comentan, dale un poco de orden a tus códigos porque aqui hay mucho por optimizar y ves pensandote en empezar a escribir POO, a la larga te será mucho mejor.

Edito : deberias pensarte el automatizar todo mucho más, en lugar de crackear un user en concreto, lee el archivo, parsealo y guarda los usuarios en una lista, luego iteras y ya.
« Última modificación: Agosto 04, 2013, 09:37:40 am por Sanko »
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Desconectado [Z]tuX

  • *
  • Underc0der
  • Mensajes: 27
  • Actividad:
    0%
  • Reputación 0
  • ZtuX W4s H3r3 !!
    • Ver Perfil
    • ztux.net
« Respuesta #3 en: Agosto 04, 2013, 10:26:57 pm »
Gracias por sus recomendaciones.
Citar
pensandote en empezar a escribir POO, a la larga te será mucho mejor.
Acabo de subir una nueva "version", uso POO... =). Igual si te gustaría ayudar con el code, bienvenido.

 

¿Te gustó el post? COMPARTILO!



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

Iniciado por LucaSthefano

Respuestas: 0
Vistas: 1242
Último mensaje Mayo 29, 2011, 01:27:34 am
por LucaSthefano
Python keylogger - by "bLiNdFiR3"

Iniciado por d33k40

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

Iniciado por LucaSthefano

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

Iniciado por d33k40

Respuestas: 1
Vistas: 1881
Último mensaje Abril 03, 2010, 11:01:59 pm
por Dharok
Python phpmyadmin "BruteForce"

Iniciado por linkgl

Respuestas: 2
Vistas: 2319
Último mensaje Agosto 19, 2011, 12:14:37 pm
por linkgl