ein Neuling, ein Fehler und keine Fehlermeldung

Code-Stücke können hier veröffentlicht werden.
Antworten
Wasserglas
User
Beiträge: 12
Registriert: Donnerstag 30. November 2017, 11:48

Moin :) wie der Titel vllt schon vermuten lässt, bin ich noch recht neu in Python und gerade ziemlich verwirrt :D
Denn ich soll für die Uni ein Brute-Force Programm schreiben, das danach das pw mit einem gegebenen sha1 wert vergleicht, klingt einfach, aber genau da liegt der gepfefferte Hase... Denn genau das vergleichen der beiden sha1 Werte will mein Programm patu nicht machen.
Er gibt mir aber auch keine Fehlermeldung aus. mein BruteForce läuft fröhlich durch die kombinationen und auch wenn das richtige pw dabei ist, ignoriert er das und rennt einfach weiter. So. Ihr seid meine lezte Hoffnung, ich hab langsam keinerlei Ideen mehr.

ich versuche das hier mal einzufügen:

Code: Alles auswählen

import string 
from itertools import product
import hashlib
import itertools

user_password = 'db23fe065e9f857e4cd3398a25299be0bc383c2b' #  test password Ute
found = False

zeichen = itertools.permutations("a-zA-Z0-9") 


for length in range(1, 11): 
    password_to_attempt = product(string.ascii_letters + string.digits, repeat=length)

    for attempt in password_to_attempt:
        attempt = ''.join(attempt) # <- Join letters together
        #print(attempt)


        attempt_sha1 = attempt.encode('utf-8')
        sha_1 = hashlib.sha1()
        sha_1.update(attempt_sha1)
        attempt_sha1 = sha_1.hexdigest()



        print(attempt)        
        print(attempt_sha1)
        print(user_password)
        
        if attempt_sha1 == user_password:
            print("Utes password is: " + attempt)
            found = True    

           
        
    if found:
        break

so. ich hoffe das ist richtig so und ihr habt vllt ne idee :D Lg das Glas
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Wasserglas: für mich läuft das Programm.

Und das selbe etwas kompakter:

Code: Alles auswählen

import string 
from itertools import product, chain
import hashlib

user_password = 'db23fe065e9f857e4cd3398a25299be0bc383c2b' #  test password Ute

password_attempts = chain.from_iterable(
    product(string.ascii_letters + string.digits, repeat=length)
    for length in range(1, 11)
)
for attempt in password_attempts:
    attempt = ''.join(attempt)
    attempt_sha1 = hashlib.sha1(attempt.encode('utf-8')).hexdigest()
    if attempt_sha1 == user_password:
        print("Utes password is: ", attempt)
        break
Wasserglas
User
Beiträge: 12
Registriert: Donnerstag 30. November 2017, 11:48

wie es funktioniert? :o
bekommst du auch ne Ausgabe heraus?
Also "Utes pw ist:..."?

das ist ja noch schlimmer,.. dann liegts an meinem mich ärgernden Rechner Oo
aber danke fürs schnelle anschauen :D
Antworten