2017-12-23 1 views
-1

sind habe ich den folgenden Code, der Brute-Force hilft Hashes Die erste if-Anweisung ausgeführt wird, sind die Werte hash=wordlist.txt, args=abtfg, values=[0, "0,1", 0, wordlist.txt, true]Zwei Zeichenketten sind gleich, aber Python sagt sie nicht

def bruteforce(hash, args, values): 
    if "." in hash: 
     files = open(values[args.find("f")]) # Open wordlist.txt 
     for xhsd in files.readlines(): 
      hash = xhsd 
      alphabet = "abcdefghijklmnopqrstuvwxyz" 
      alphabet += alphabet.upper() + "!$%^&*(){}~#][;:'@/?.>,<" 
      if "b" in args: # It is 
       m = args.find("b") 
       m = values[m] 
      else: 
       m = "0,16" 
      # m is 0,10 
      start_time = strftime("%Y-%m-%d %H:%M:%S", gmtime()) 
      l = 0 
      print("Cracking...") 
      attempts = 0 
      while l == 0: 
       password = "" 
       for x in range(random.randrange(int(m.split(",")[0])+1,int(m.split(",")[1])+1)): # range(random.randrange(0,10)) 
        password += alphabet[random.randrange(0,len(alphabet)-1)] 
       num = hash_types[int(values[args.find("t")])] # num="md5" 
       htype = "hash2 = hashlib."+num+"(password).hexdigest()" 
       exec(htype) # hash2 = md5(password) 
       print hash2 + ":" + hash # Compares the hashes 
       if hash == hash2: 
        print password 
        l = 1 
       else: 
        print "Trying..." 

Das erste Element, um es versucht, es knackt es fast sofort, Drucken:

0cc175b9c0f1b6a831c399e269772661:0cc175b9c0f1b6a831c399e269772661 

(das ist Hash2 und Hash). Wir wissen jetzt, dass diese beiden Variablen gleich sind. Die if-Anweisung direkt darunter wird jedoch nicht ausgeführt. Das ist das seltsamste Ding, das ich in Python gesehen habe. Könnte jemand erklären, warum das so ist? Ich habe beide Variablen gedruckt und sie sind eindeutig die gleiche ...

+1

Newline. – user2357112

Antwort

1

Entfernen Leerzeichen helfen könnte:

if hash.strip() == hash2.strip(): 
Verwandte Themen