Я изучаю Python в свое свободное время в течение небольшого количества времени, и я поставил перед собой задачу создать взломщик паролей для очень конкретной задачи, чтобы проверить, насколько эффективна безопасность на моем ADSL-маршрутизатор был (не очень) - используя Wireshark, я вполне мог понять, как он хэширует пароль через http, и я разработал некоторый код для выполнения атаки в wordlist. (Прошу прощения, если вы считаете, что мой код плохо написан - вы, вероятно, будете правы!).Python Multiprocessing password cracker
#!/usr/bin/env python
import hashlib, os, time, math
from hashlib import md5
def screen_clear():
if os.name == 'nt':
return os.system('cls')
else:
return os.system('clear')
screen_clear()
print ""
print "Welcome to the Technicolor md5 cracker"
print ""
user = raw_input("Username: ")
print ""
nonce = raw_input("Nonce: ")
print ""
hash = raw_input("Hash: ")
print ""
file = raw_input("Wordlist: ")
print ""
realm = "Technicolor Gateway"
qop = "auth"
uri = "/login.lp"
HA2 = md5("GET" + ":" + uri).hexdigest()
wordlist = open(file, 'r')
time1 = time.time()
for word in wordlist:
pwd = word.replace("\n","")
HA1 = md5(user + ":" + realm + ":" + pwd).hexdigest()
hidepw = md5(HA1 + ":" + nonce +":" + "00000001" + ":" + "xyz" + ":" + qop + ":" + HA2).hexdigest()
if hidepw == hash:
screen_clear()
time2 = time.time()
timetotal = math.ceil(time2 - time1)
print pwd + " = " + hidepw + " (in " + str(timetotal) + " seconds)"
print ""
end = raw_input("hit enter to exit")
exit()
wordlist.close()
screen_clear()
time2 = time.time()
totaltime = math.ceil(time2 - time1)
print "Sorry, out of " + str(tested) + " passwords tested, your password was not found (in " + str(totaltime) + " seconds)"
print ""
end = raw_input("hit enter to exit")
screen_clear()
exit()
Это работает достаточно хорошо, но оставил меня желать большего, так что я мог бы добавить MultiProcessing силу к нему, чтобы ускорить процесс - используя различные различные инструкции и руководства, мне не удалось закончить с успешным результатом ! (хотя чувство, что я был очень близко)
Пожалуйста, кто-нибудь может указать мне на «Руководство для идиотов по многоядерному взлому паролей python» или помочь мне изменить мой код.
P.S. мой первоначальный план состоял в том, чтобы использовать opencl или cuda ... но я быстро узнал, как из моей глубины я был!
Что вы очень за подробный ответ, из-за трудовых обязательств, у меня не было времени вернуться домой, чтобы попробовать это, я обязательно сообщу о своем успехе по возвращении! – Andy
Провел вечер, когда мой код работал, и теперь он дает мне правильный ответ (теперь сравним, чтобы узнать, насколько он быстрее)! спасибо за вашу помощь - вы объяснили, что для меня еще нужно подумать! одна из проблем заключалась в том, что в словаре содержался float с целым числом (легко решался), но мне потребовалось некоторое время, чтобы выяснить, как выводить какую-либо ошибку из процессов apply_async (print (a.get())) - все это было очень Интересно, и я, конечно, многому научился – Andy
Просто для того, чтобы следить за этим, это всего лишь половину времени, необходимого для запуска всего слова «rockyou.txt» на моем гиперпоточном двухъядерном ноутбуке! Фантастика. – Andy