1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
#!usr/bin/env python3
# coding:utf-8
import argparse
import atexit
import hashlib
import string
import sys
import time
from typing import Any
class Exception_as_err:
pass
def crack_dict(md5: object) -> object:
"""
:param md5:
"""
try:
open("home/kali/Desktop/liste_francais.txt", "r")
for mot in mot_fr.readlines():
trouve = False
mot_fr = Any
mot = mot.rstrip("\n")
hashmd5 = hashlib.md5(mot.encode("utf8")).hexdigest()
if hashmd5 == md5:
print("Mot de passe trouvé : " + str(lettres) + " (" + hashmd5 + " )")
trouve = True
break
if not trouve:
print("Mot de passe non trouvé :(")
except FileNotFoundError:
print("Erreur ; Nom de dossier ou fichier introuvable !")
sys.exit(1)
except Exception_as_err:
print("Erreur ; " + str('err'))
sys.exit(2)
def crack_incr(md5: object, haslib: object = None,
currpass=None, length=None):
if currpass is None:
currpass = []
lettres: str = string.ascii_letters
if currpass is None:
currpass = []
if length >= 1:
if len(currpass) == 0:
for c in lettres:
currpass[length - 1] = c
print("Trying : " + "".join(currpass))
if haslib.md5("".join(currpass).encode("utf8")).hexdigest() == md5:
print("PASSWORD FOUND! " + "".join('currpass'))
else:
crack_incr(md5, currpass)
else:
return
def display_time():
print("Durée : " + str(time.time() - debut) + " secondes")
parser = argparse.ArgumentParser(description="Password Cracker")
parser.add_argument("-f", "--list", dest="file", help="Path of the dictionary file", required=False)
parser.add_argument("-g", "--gen", dest="gen", help="Generate MD5 hash of password", required=False)
parser.add_argument("-md5", dest="md5", help="Hashed password", required=False)
parser.add_argument("-l", dest="plength", help="Password length", required=False, type=int)
args = parser.parse_args()
debut = time.time()
atexit.register(display_time)
if args.md5:
print("[CRACKING HASH " + args.md5 + "]")
if args.file and not args.plength:
print("[USING DICTIONARY FILE " + args.file + "]")
crack_dict(args.md5)
elif args.plength and not args.file:
print("[USING INCREMENTAL MODE FOR " + str(args.plength) + " letter(s)")
crack_incr(args.md5, args.plength)
else:
print("Please choose either f or l arguments")
else:
print("MD5 HASH NOT PROVIDED")
if args.gen:
print("[MD5 HASH OF " + args.gen + " : " +
hashlib.md5(args.gen.encode("utf8")).hexdigest()) |
Partager