2013-12-02 3 views
0

Я довольно новичок в Python, и я пытаюсь создать простую программу, которая собирает пароли MD5 Hash, а затем сопоставляет их со словарем, который я создал с общими паролями.Python MD5 Хеш-пароли и словарь

Я могу собрать пароли MD5 без проблем, проблема в том, когда я пытаюсь сравнить их со словарем слов. Я не могу заставить его работать вообще.

Любые советы или указания будут оценены, я не знаю, что делать дальше, и я искал много дней в Интернете, прежде чем обращаться за помощью.

Мой код выглядит следующим образом,

import sys, re, hashlib 


def dict_attack(passwd_hash): 
    print 'dict_attack(): Cracking hash:', passwd_hash 
    #set up list of common password words 
    passwords = open('J:/dictionary.txt') 

    passwd_found = False 


    if passwd_found: 
     print 'dict_attack(): Password recovered: ' (passwd) 
def main(): 
    print'[dict_crack] Tests' 
    passwd_hash = '4297f44b13955235245b2497399d7a93' 
    dict_attack(passwd_hash) 
if __name__ == '__main__': 
    main() 

Применимое КОД ДЛЯ ДАЛЬНЕЙШЕГО ВОПРОС

hash_to_crack = password 
    dict_file = "J:/dictionary.txt" 

with open(dict_file) as fileobj: 
    for line in fileobj: 
     line = line.strip() 
     if hashlib.md5(line).hexdigest() == hash_to_crack: 
      print "Successfully cracked the hash %s: It's %s" % (hash_to_crack, line) 
      return "" 
print "Failed to crack the file." 
+0

Не могли бы вы отобразить, как выглядит ваш файл? Каков ожидаемый результат? – aIKid

+0

Содержимое файла словаря выглядит следующим образом: 123,1234 12345, 123456 1234567, 12345678 пароль, qwerty abc, abcd abc123, 111111 обезьяна, арсенал letmein, trustno1 дракон, бейсбол супермен, iloveyou starwars, montypython cheese, 123123 футбол, пароль batman ожидаемый результат 123123 – user3057762

+0

обновить его в свой вопрос, пожалуйста :) – aIKid

ответ

0

Следующий скрипт делает трюк и может работать с чрезвычайно большими файлами, так как он не читает весь словарь сразу. Удачи вам в вашем коде. Комментарий, если у вас есть какие-либо проблемы или вопросы по этому поводу.

import hashlib 
hash_to_crack = "5badcaf789d3d1d09794d8f021f40f0e" 
dict_file = "dict.txt" 

def main(): 
    with open(dict_file) as fileobj: 
     for line in fileobj: 
      line = line.strip() 
      if hashlib.md5(line).hexdigest() == hash_to_crack: 
       print "Successfully cracked the hash %s: It's %s" % (hash_to_crack, line) 
       return "" 
    print "Failed to crack the file." 

if __name__ == "__main__": 
    main() 

EDIT: Multiple хэш растрескиванию. Наслаждаться.

import hashlib 
hashes_to_crack = ["5badcaf789d3d1d09794d8f021f40f0e", "d0763edaa9d9bd2a9516280e9044d885", "8621ffdbc5698829397d97767ac13db3"] 
dict_file = "dict.txt" 

def main(hash_to_crack): 
    with open(dict_file) as fileobj: 
     for line in fileobj: 
      line = line.strip() 
      if hashlib.md5(line).hexdigest() == hash_to_crack: 
       print "Successfully cracked the hash %s: It's %s" % (hash_to_crack, line) 
       return "" 
    print "Failed to crack the file." 

if __name__ == "__main__": 
    for hashToCrack in hashes_to_crack: 
     main(hashToCrack) 
+0

Это очень понравилось, вы знаете, как я мог редактировать код, чтобы он мог взломать больше одного хэша, скажем, я хранили хэши, найденные под переменной? – user3057762

+0

Например, в моем коде у меня есть hash_to_crack = password, но он только трещит один хеш и не все 3 хранится в пароле – user3057762

+0

Вы хотите сделать это из командной строки или отредактировать скрипт? @ user3057762 – GKBRK

1

Я отсутствует код в вашем фрагменте кода ... может быть, это может стать отправной точкой для разработки (не проверен, не уверен, что он работает):

from hashlib import md5 

_hashes = { md5(pwd.strip()).hexdigest() : pwd.strip() 
     for pwd in open('J:/dictionary.txt') } 

def main(): 
    print'[dict_crack] Tests' 
    passwd_hash = '4297f44b13955235245b2497399d7a93' 

    if passwd_hash in _hashes: 
     print "found %s = %s" % (passwd_hash, _hashes[passwd_hash]) 

if __name__ == '__main__': 
    main() 
+0

содержимое файла словаря являются следующие 123,1234 12345, 123456 1234567, 12345678 пароль, QWERTY ABC, ABCD ABC123, 111111 обезьяны, арсенал letmein, довериеno1 дракон, бейсбол супермен, iloveyou звездаwars, montypython сыр, 123123 футбол, пароль batman Ожидаемый результат: 123123 – user3057762

+0

Благодарим за помощь, но этот код выдает ошибку на passwd_hash, pwd. Есть идеи, как это решить? – user3057762

+0

скопируйте и вставьте histeria :) Going to edit ... – Giupo

Смежные вопросы