Перебор в нескольких процессах
Задача: Программа должна перебрать все строки из 'wordlixt.txt' и подставлять их в функцию brute() в 10 процессах.
Но у меня в консоль выводится почему-то 6 раз по '...'.
from multiprocessing import Pool
import os
string_with_pass = 'scooby'
def brute(password):
if password == string_with_pass:
print(f'[+] Found: {password}')
os._exit(0)
else:
print(f'...')
def get_pass():
passwords = open('wordlist.txt', 'r').readlines()
for line in passwords:
password = line.strip()
return password
def main():
with Pool(10) as p:
p.map(brute, get_pass())
if __name__ == '__main__':
main()
Ответы (1 шт):
Автор решения: Evgeniy
→ Ссылка
Можно попробовать конкурентно запустить:
import asyncio
async def brute(password):
string_with_pass = 'brutit_ploho'
if password == string_with_pass:
return f'Found: {password}'
else:
return '...'
async def main(future):
passwords = await future
for result in asyncio.as_completed([brute(pswd) for pswd in passwords]):
print(await result)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
file = open('asd', 'r')
passwords_list = file.read().splitlines()
future = loop.create_future()
future.set_result(passwords_list)
asyncio.run(main(future))