Можно запускать процесс перебора на нескольких ядрах процессора. Делим диапазон чисел между несколькими процессами. И останавливаем все процессы как только пароль найден.
import multiprocessing
def brute_force_worker(start, end, stop_event, result_queue):
for a in range(start, end):
if stop_event.is_set():
return
pas = f'{a:08d}'
print(pas, end='\r')
if pas == "12345678":
result_queue.put(pas)
stop_event.set()
return
if __name__ == "__main__":
total_range = 99999999
num_processes = multiprocessing.cpu_count()
chunk_size = total_range // num_processes
stop_event = multiprocessing.Event()
result_queue = multiprocessing.Queue()
processes = []
for i in range(num_processes):
start = i * chunk_size
end = start + chunk_size if i != num_processes - 1 else total_range + 1
process = multiprocessing.Process(
target=brute_force_worker, args=(start, end, stop_event, result_queue)
)
processes.append(process)
process.start()
found_password = None
while not result_queue.empty() or any(p.is_alive() for p in processes):
try:
found_password = result_queue.get(timeout=0.1)
break
except:
continue
stop_event.set()
for process in processes:
process.join()
if found_password:
print(f"\nПароль найден: {found_password}")
else:
print("\nПароль не найден")
for a in range(99999999):
pas = '%08d' % a
print(pas,end='\r')
else:
print('парроль не найден')
Но мне надо его как-то ускорить он находит 99999999 за 32 минуты