2

这是一个常识性问题,很快就会变成一个项目。我有一个脚本试图用已知的盐来暴力破解 sha1。无论如何,在这个应用中盐是已知的。无论如何,脚本工作正常,它是一个 python 脚本。当我运行它时,它会超过我可用的 16 个核心。我也想利用所有 16 个核心进行蛮力攻击!我对脚本进行了一些处理,并且能够在这里使用一个示例来利用多个内核,但它们并没有被完全使用。

http://forum.openopt.org/viewtopic.php?id=51

这个parrelization东西对我来说很新,我不知道如何在python中处理它(更不用说任何脚本语言了)。

TL;DR,在 python 中,利用所有可用于对哈希(例如 MD5)进行暴力破解的核心的最佳方法是什么?

基本上我现在拥有的是这个......(注意释义的代码)

from multiprocessing imports Pools

def prog()
    generate hash_attempt
    compare it to target
jobs = []
po = Pool()
for stuff in things:
    po.apply_sync(prog())

这可行,但就像我想我说的那样,它并没有充分利用所有核心,然后有时它只是随机杀死。它只会停止执行,我调用脚本的终端将返回到它的提示符,在它上面,它会说,“Killed”。奇怪的东西。

万分感谢!

4

1 回答 1

8

由于全局解释器锁,您无法有效地将 Python 线程用于 CPU 密集型工作。在这种情况下,您将不得不使用multiprocessing. multiprocessing由于通信开销,子进程可能无法 100% 地运行给定的 CPU 内核。为了最大限度地减少通信开销,请将工作分配给大块而不是小块的子进程。

于 2012-12-19T15:00:17.893 回答