如何加速我的蛮力攻击

时间:2018-01-14 08:56:04

标签: python brute-force

所以我有一个暴力攻击者,我想知道破解密码需要多长时间。但是,当我去了几个像this这样的网站估算你的长度或地点来计算像这个here那样需要多长时间的网站时,他们都会说一个六七位数的密码可能是在一秒钟之内崩溃了!

如何加快我的强力计划以匹配这些速度?

# Imports
import itertools
import time


# Brute force function
def tryPassword(passwordSet, stringTypeSet):
    start = time.time()
    chars = stringTypeSet
    attempts = 0
    for i in range(1, 9):
        for letter in itertools.product(chars, repeat=i):
            attempts += 1
            letter = ''.join(letter)
            if letter == passwordSet:
                end = time.time()
                distance = end - start
                return (attempts, distance)


password = "123456"
# Allowed characters
stringType = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()_-+=[{]}|:;'\",<.>/?"
tries, timeAmount = tryPassword(password, stringType)
print("CyanCoding's BFPC cracked the password %s in %s tries and %s seconds!" % (password, tries, timeAmount)))

2 个答案:

答案 0 :(得分:1)

您的字母设置为93个字符 你的pw是6个字符

搜索空间为93^6 = 646,990,183,449

如果您可以检查10^7 pw一秒钟,您仍然需要

646,990,183,449 / 10^7 / (60 * 60) = 18 hours

破解它。

推论:如果你每秒只能检查一百万pw,你需要180小时(一周以上)

答案 1 :(得分:1)

您正在使用Python,这相对较慢。

但是,您可以将python代码更改为更快地运行。 使用 Numba ,它是一个将代码编译为汇编的库(我们说的是将速度提高到1000X到100万以上)

这是Numba的5分钟指南 https://numba.readthedocs.io/en/stable/user/5minguide.html

我以前使用Numba生成素数,根据我的个人经验,值得努力更改代码。大多数情况下,不需要重大更改。 示例:

@jit ##this is most of the times the only change, the jit(just-in-time compiler)
def python_function():
 ... ...
 return xx

注意:像上面的程序一样,CPU密集型程序提供了主要的加速功能。