Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- #astea sunt librarii pe care le importi ca sa iti mearga urmatoarele lucruri: Hash-urirea (adica sa decriptezi parola)
- #pentru threaduri (adica mai multe fire de executie)
- #pentru timp (aici, cand il foloseam in program, acum nu il mai folosesti)
- #config - ai un fisier separat cu 2 variabile. findFlag si result : in findFlag ai ori true ori false daca a gasit sau nu parola.
- # si in result memorezi
- import hashlib
- import threading
- import time
- import config
- # aici ai parola care trebuie decriptata si in linia urmatoare faci toate caracterele ei (vezi ca sunt majuscule) in litere mici.
- passwordToHack = '9F4120757968E8323904848F05C8B32511FFA9BBF5655BE737A6F03AE28047B6'
- passwordToHack = passwordToHack.lower()
- #ai clasa myThread care mosteneste threading.Thread. Clasa asta, threading.Thread, e facuta de aia de la Python, adica e implicita
- #si are printre altele metoda run (tu o suprascrii mai jos, ca sa folosesti in ea algoritmul SHA256 - asta iti decripteaza parola)
- # In __init__ -> asta e constructorul, iti initalizeaza membrii clasei (threadId, name, startNumber, endNumber).
- #Self refera spre obiectul curent, cum e this in C++
- class myThread (threading.Thread):
- def __init__(self, threadID, name, startNumber, endNumber):
- threading.Thread.__init__(self)
- self.threadID = threadID
- self.name = name
- self.startNumber = startNumber
- self.endNumber = endNumber
- def run(self):
- print ("Starting " + self.name)
- rangeSha256Algorithm(self.startNumber, self.endNumber, self.name)
- #algoritmul pentru descriptare. Ni l-a dat el / sau a zis sa il luam de pe net
- def rangeSha256Algorithm (startNumber,endNumber,threadName):
- for i in range(startNumber-1,endNumber):
- myHash = hashlib.sha256(bytes(str(i), encoding='utf-8')).hexdigest()
- if myHash == passwordToHack or config.findFlag == True:
- if config.findFlag == True:
- print ("Stoping %s" % (threadName))
- break
- config.result = i
- print ("Stoping %s" % (threadName))
- config.findFlag = True
- break
- # o lista de threaduri in care retii fiecare thread
- threads = []
- #aici ii atribui fiecarui thread un interval pe care sa lucreze si dai start la threaduri
- for i in range(1,37):
- startNumber = round(float(10000000) + float(i - 1) * (float(89999999) / float(42)))
- endNumber = round(float(10000000) + float(i) * (float(89999999) / float(42)))
- name = "Thread-"+ str(i)
- threads.append(myThread(i, name, startNumber, endNumber))
- threads[i-1].start()
- # asta face tot, fara asta nu merge :)), practic e executia
- for t in threads:
- t.join()
- print ("Exiting Main Thread")
- print (config.result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement