Падбор паролей на python - Общение Python мододелов

Вопрос Падбор паролей на python

Регистрация
27 Сен 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
У меня уже есль код :

for a in range(99999999):

pas = '%08d' % a

print(pas,end='\r')

else:

print('парроль не найден')



Но мне надо его как-то ускорить он находит 99999999 за 32 минуты
 
Регистрация
21 Мар 2013
Сообщения
64
Репутация
0
Спасибо
0
Монет
0
без сторонних импортов ускорить его можно максимум на 10-15%.

for a in range(99999999):
pas = f'{a:08d}'
print(pas, end='\r')

print('пароль не найден')
 
Регистрация
22 Дек 2012
Сообщения
70
Репутация
0
Спасибо
0
Монет
0
Можно запускать процесс перебора на нескольких ядрах процессора. Делим диапазон чисел между несколькими процессами. И останавливаем все процессы как только пароль найден. 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Пароль не найден")
 
Регистрация
20 Авг 2013
Сообщения
100
Репутация
0
Спасибо
0
Монет
0
Питон медленный язык
 
Сверху Снизу