Day 21 solved
This commit is contained in:
		
							parent
							
								
									e1eb374cfe
								
							
						
					
					
						commit
						320d615bea
					
				
							
								
								
									
										60
									
								
								Day 21/decode.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										60
									
								
								Day 21/decode.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | ||||
| #!/usr/bin/python | ||||
| 
 | ||||
| import hashlib, binascii, base64 | ||||
| from fastecdsa import keys, curve, point | ||||
| from Crypto.Cipher import AES | ||||
| import queue | ||||
| import threading | ||||
| import time | ||||
| import sys | ||||
| 
 | ||||
| x = 0xc58966d17da18c7f019c881e187c608fcb5010ef36fba4a199e7b382a088072f | ||||
| y = 0xd91b949eaf992c464d3e0d09c45b173b121d53097a9d47c25220c0b4beb943c | ||||
| 
 | ||||
| PUBLIC_KEY = point.Point(x, y, curve.P256) | ||||
| PASSWORD_QUEUE = queue.Queue() | ||||
| 
 | ||||
| def tryPassword(pw): | ||||
|     privKey = hashlib.sha256(pw).digest() | ||||
|     pubKey = keys.get_public_key(int.from_bytes(privKey, "big"), curve.P256) | ||||
|     if pubKey != PUBLIC_KEY: | ||||
|         return False | ||||
| 
 | ||||
|     print("Found possible password:", pw) | ||||
|     salt = b'TwoHundredFiftySix' | ||||
|     aesKey = hashlib.pbkdf2_hmac('sha256', pw, salt, 256*256*256) | ||||
|     cipher = AES.new(aesKey, AES.MODE_ECB) | ||||
|     encrypted = base64.b64decode(b"Hy97Xwv97vpwGn21finVvZj5pK/BvBjscf6vffm1po0=") | ||||
| 
 | ||||
|     try: | ||||
|         decrypted = cipher.decrypt(encrypted) | ||||
|         print(decrypted.decode('utf-8')) | ||||
|         return True | ||||
|     except Exception as e: | ||||
|         print(str(e)) | ||||
|         return False | ||||
| 
 | ||||
| def doWork(): | ||||
|     while not PASSWORD_QUEUE.empty(): | ||||
|         pw = PASSWORD_QUEUE.get() | ||||
|         if tryPassword(pw): | ||||
|             print("Done?") | ||||
| 
 | ||||
| with open("/usr/share/wordlists/SecLists/Passwords/Leaked-Databases/rockyou.txt", "rb") as f: | ||||
|     for pw in f.readlines(): | ||||
|         pw = pw.strip() | ||||
|         if len(pw) == 16: | ||||
|             PASSWORD_QUEUE.put(pw) | ||||
| 
 | ||||
| initialSize = PASSWORD_QUEUE.qsize() | ||||
| print("Read %d passwords, starting threads…" % initialSize) | ||||
| threads = [] | ||||
| for i in range(8): | ||||
|     t = threading.Thread(target=doWork) | ||||
|     t.start() | ||||
|     threads.append(t) | ||||
| 
 | ||||
| while not PASSWORD_QUEUE.empty(): | ||||
|     sys.stdout.write("\rProgress: %04d/%04d" % (initialSize - PASSWORD_QUEUE.qsize(), initialSize)) | ||||
|     sys.stdout.flush() | ||||
|     time.sleep(0.5) | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user