Ez a Python program, egy megadott karakterkészletből kiindulva, brute force módszerrel (minden lehetséges kombinációt kipróbálva) megkeresi a jelszót.A hatékonyság érdekében a beépített itertools.product függvényt használtam, amely generátorként működik, így nem használ sok memóriát.
--------------
import string
import time
from itertools import product
def brute_force_password(target_password, max_length=5):
# Karakterkészlet: kisbetűk, nagybetűk és számok
# Szükség esetén kiegészíthető írásjelekkel is: + string.punctuation
chars = string.ascii_letters + string.digits
attempts = 0
start_time = time.time()
print(f"Keresés indítása a következő karakterekkel: {chars}\n")
# Próbálkozás különböző jelszóhosszúságokkal a megadott maximumig
for length in range(1, max_length + 1):
print(f"Próbálkozás {length} karakter hosszúságú kombinációkkal...")
# Generálja az összes lehetséges kombinációt az adott hosszon
for combination in product(chars, repeat=length):
attempts += 1
# Összeilleszti a karaktereket egy szöveggé
guess = "".join(combination)
# Ellenőrzés, hogy egyezik-e a céllal
if guess == target_password:
end_time = time.time()
duration = end_time - start_time
return {
"found": True,
"password": guess,
"attempts": attempts,
"time": round(duration, 4),
}
return {"found": False, "attempts": attempts, "time": round(time.time() - start_time, 4)}
# --- Program futtatása ---
if __name__ == "__main__":
# Adj meg egy teszt jelszót (figyelem: a brute force hosszú jelszavaknál nagyon lassú!)
# Példák: "a", "Ab3", "pass"
secret_password = "Ab3"
# Maximális hossz, ameddig a program keresni fog
maximum_search_length = 5
result = brute_force_password(secret_password, maximum_search_length)
if result["found"]:
print("\n" + "=" * 40)
print("SIKER! A jelszó megvan.")
print(f"Megtalált jelszó: {result['password']}")
print(f"Próbálkozások száma: {result['attempts']}")
print(f"Eltelt idő: {result['time']} másodperc")
print("=" * 40)
else:
print("\n" + "=" * 40)
print("Sikertelen keresés.")
print(f"A jelszó nem található {maximum_search_length} karakteres hosszig.")
print(f"Összes próbálkozás: {result['attempts']}")
print("=" * 40)
----------------
Nincsenek megjegyzések:
Megjegyzés küldése