====== Praxistest ====== Erstelle beliebige Hashwerte von Passwörter [[https://www.hashgenerator.de|Hashgenerator]] und versuche diese mithilfe von bereitgestellten Tools wie z.B.: [[https://crackstation.net|Crackstation]] zu knacken. ===== Have I beeen pwned? ===== Have I Been Pwned? (’;--have i been pwned?, „pwned“ steht für „owned“, wird jedoch wie „poned“ ausgesprochen, übersetzt in etwa „Hat's mich erwischt?“) ist eine Website, auf der Nutzer überprüfen können, ob ihre persönlichen Daten durch Datenlecks kompromittiert wurden. Der Dienst greift auf eine Vielzahl von Datenbankdumps und Pastebins zu und ermöglicht es dem Nutzer so Milliarden von geleakten Konten auf die eigenen Informationen zu durchsuchen. Über eine Anmeldung können Nutzer sich auch benachrichtigen lassen, wenn ihre Daten in zukünftigen Dumps auftauchen. Die Website gilt weithin als wertvolle Ressource für Internetnutzer, um ihre eigene Sicherheit und Privatsphäre zu überprüfen. [[https://haveibeenpwned.com/Passwords|Have I been password pwned ]] ===== Python - Passwort Brute Force Attack ===== 5-stelliges Passwort import hashlib import datetime import time print("Given Hash: ", hashlib.sha1("hallo".encode('utf-8')).hexdigest()) passhash = hashlib.sha1("hallo".encode('utf-8')).hexdigest() #Passwort 5 Zeichen lang alphabet_lowercase=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] alphabet_uppercase=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] digits=["0","1","2","3","4","5","6","7","8","9"] alphabet=alphabet_lowercase+alphabet_uppercase+digits finished = False print("\n#### Start Bruteforce Attack #### \n") ts_start=time.time() print(datetime.datetime.now()) while finished == False: for char1 in alphabet: for char2 in alphabet: for char3 in alphabet: for char4 in alphabet: for char5 in alphabet: # Kombination erstellen und ausgeben password = char1+char2+char3+char4+char5 #print(password) hash=hashlib.sha1(password.encode('utf-8')).hexdigest() if hash == passhash: print("\nHash found:", hash) print("Password:", password,"\n") ts_end=time.time() print(datetime.datetime.now()) finished = True break if finished == True: break if finished == True: break if finished == True: break if finished == True: break if finished == True: break print("\nTime for Hacking:" , ts_end - ts_start, "s") ===== Python - Attacke mithilfe von Listen von häufig vorkommenden / gestohlenen Passwörtern ===== Die häufigsten 10 Millionen Passwörter [[https://github.com/danielmiessler/SecLists/blob/88392ee1e6976b163e87ddb677635deec0082bc3/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt|Passwortliste]] Passwortliste von Crackstation [[https://crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm|Cracking Dictionary]] import hashlib import datetime import time wahl = int(input("Wollen Sie einen Hash-wert eines Passworts (1) oder das Passwort (2) selbst eingeben: ")) wort="" passhash="" if wahl == 2: wort = input("Geben Sie das gewünschte Passwort ein, nachdem in der Passwortliste gesucht werden soll: ") print("Given Hash: ", hashlib.sha1(wort.encode('utf-8')).hexdigest()) passhash = hashlib.sha1(wort.encode('utf-8')).hexdigest() else: passhash = input("Geben Sie einen Hashwert (SHA-1, z.B.: von http://www.sha1-online.com generiert) ein: ") foundpassword = False ts_start = time.time() print("\n...Suche in Passwortliste 1....\n") file1 = open("passwords.txt", "r") for line in file1: line=line[:-1] #print(line) hash = hashlib.sha1(line.encode('utf-8')).hexdigest() if passhash == hash: foundpassword = True break file1.close() if foundpassword == False: print("\n...Suche in Passwortliste 2....\n") file2 = open("passwords2.txt", "r", encoding="utf-8", errors="ignore") for line in file2: line=line[:-1] #print(line) hash = hashlib.sha1(line.encode('utf-8')).hexdigest() if passhash == hash: foundpassword = True break file2.close() if foundpassword == False: print("\nKeine Übereinstimmung!") else: print("Passwort gefunden:", line) print("Hashwert:", hash) ts_end = time.time() print("Zeitdifferenz: ", ts_end - ts_start)