Last active
February 21, 2024 13:38
-
-
Save miodeqqq/8e064f14d446348914f0e45818234a2e to your computer and use it in GitHub Desktop.
Python MD5 decrypt.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import hashlib | |
import sys | |
import time | |
# Using: ./hash.py hashcode | |
# For example: ./hash.py 9743a66f914cc249efca164485a19c5c | |
def timing(f): | |
def wrap(*args): | |
time1 = time.time() | |
ret = f(*args) | |
time2 = time.time() | |
print '%s Time: %0.3f s' % (f.func_name, float(time2 - time1)) | |
return ret | |
return wrap | |
@timing | |
def decryptMD5(testHash): | |
s = [] | |
while True: | |
m = hashlib.md5() | |
for c in s: | |
m.update(chr(c)) | |
hash = m.hexdigest() | |
if hash == testHash: | |
return ''.join([chr(c) for c in s]) | |
wrapped = True | |
for i in range(0, len(s)): | |
s[i] = (s[i] + 1) % 256 | |
if s[i] != 0: | |
wrapped = False | |
break | |
if wrapped: | |
s.append(0) | |
print(decryptMD5(sys.argv[1])) |
Hi! Nice work! There is an way to add hint? Suppose we know part of the hash like 0192023a7bbd73250516f069df18b500 (admin123) and I know "min1". I think that maybe it is something more efficient and decreases the decryption time.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Make it run in python 3 is actually pretty easy, you just need to wrap the
print
string in parenthesis and then correct the line 29 encoding the Unicode character inm.update(chr(c))
into bytes, it has to bem.update(chr(c).encode("utf-8"))
instead, because theupdate()
method in themd5
object expects byte characters, and finally in the decorator functiontiming(f):
to get the function name, you need to use the__name__
attribute instead offunc_name
if it is even relevant to you to know the function name, if not, just remove%s
at the beginning of the string in theprint
function as well asf.func_name,
, if you only care about the time it took the script to decrypt the hash.Though I suggest you should learn first some of python before even thinking on running anyone else's scripts, so you'll be able to see how the script works and even solve these problems by yourselves that are actually QUITE basic.
The next code works in python 3.10, so it should work in python 3.8 or 3.6 just fine ...
`
`