私はpython 2.7を使用しており、単純なマルチヘッドのmd5 dictブルートを持っています:
# -*- coding: utf-8 -*-
import md5
import Queue
import threading
import traceback
md5_queue = Queue.Queue()
def Worker(queue):
while True:
try:
item = md5_queue.get_nowait()
except Queue.Empty:
break
try:
work(item)
except Exception:
traceback.print_exc()
queue.task_done()
def work(param):
with open('pwds', 'r') as f:
pwds = [x.strip() for x in f.readlines()]
for pwd in pwds:
if md5.new(pwd).hexdigest() == param:
print '%s:%s' % (pwd, md5.new(pwd).hexdigest())
def main():
global md5_queue
md5_lst = []
threads = 5
with open('md5', "r") as f:
md5_lst = [x.strip() for x in f.readlines()]
for m in md5_lst:
md5_queue.put(m) # add md5 hash to queue
for i in xrange(threads):
t = threading.Thread(target=Worker, args=(md5_queue,))
t.start()
md5_queue.join()
if __name__ == '__main__':
main()
5 つのスレッドで動作します。各スレッドはキューから 1 つのハッシュを読み取り、パスワードのリストでそれをチェックします。非常に単純です。「for」ループで 1 スレッド 1 チェックインします。
パスワードをチェックするための 1 つのスレッドといくつかのスレッド。したがって、work() はキューからハッシュを読み取り、新しい数のスレッドを開始してパスワードをチェックする必要があります (1 スレッド ハッシュ、10 スレッドでパスワードをチェックします)。例: ハッシュを持つ 20 のスレッドと、各スレッドでハッシュをブルートするための 20 のスレッド。そんな感じ。
これどうやってするの?
PS私の説明で申し訳ありません。私が何を望んでいるのか理解できなかったかどうか尋ねてください。
PPS それは md5 をブルーティングすることではなく、マルチスレッドについてです。
ありがとう。