ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – md5多线程暴力

2019-09-01 23:59:31  阅读:389  来源: 互联网

标签:brute-force python multithreading md5


我使用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个线程1签入’for’循环.

我想要多一点:1个线程和几个线程来检查密码.所以work()应该从队列中读取哈希并启动一个新的线程来检查密码(1个线程哈希,10个线程检查密码).例如:20个带有哈希的线程和20个线程,用于在每个线程中使用哈希值.这样的事情.

我怎样才能做到这一点?

附:对不起我的解释,问你是否理解我想要的东西.

P.P.S.这不是关于brd md5,而是关于多线程.

谢谢.

解决方法:

Python的默认实现(称为CPython)使用Global Interpreter Lock(GIL),它实际上只允许一个线程一次运行.对于I / O绑定的多线程应用程序,这通常不是问题,但对于像你这样的CPU绑定应用程序,这意味着你不会看到多核加速.

我建议使用不具有GIL的不同Python实现,例如Jython,或者重写代码以使用不具有GIL的其他语言.在本机编译的代码中编写它是一个好主意,但是大多数具有MD5功能的脚本语言通常都会在本机代码中实现,所以老实说,我不会期望在本机编译语言和脚本语言之间加速很多.

标签:brute-force,python,multithreading,md5
来源: https://codeday.me/bug/20190901/1786841.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有