所以我有一个暴力攻击者,我想知道破解密码需要多长时间。但是,当我去了几个像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)))
答案 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密集型程序提供了主要的加速功能。