概述
MD5:
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import hashlib
import re
import os
i = 215962000
while True:
i += 1
c =f'0e{i}'
#md5加密
m1 = hashlib.md5()
m1.update(c.encode('utf-8'))
m2=m1.hexdigest()
#以e作为分隔符分割md5字符串
messageList = m2.split('e')
if len(messageList) == 2:
print(i)
pattern = re.compile(r'^[0]+$')
if pattern.match(messageList[0]) and messageList[1].isdigit():
print(f"{c}'s MD5 is {m2}")
#输出文件
f=open("hash.txt",'a+')
f.write(c+":"+m2)
f.close()
else:
continue
MD4:
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import struct
import re
class MD4:
width = 32
mask = 0xFFFFFFFF
h = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476]
def __init__(self, msg=None):
if msg is None:
msg = b""
self.msg = msg
ml = len(msg) * 8
msg += b"x80"
msg += b"x00" * (-(len(msg) + 8) % 64)
msg += struct.pack("<Q", ml)
self._process([msg[i: i + 64] for i in range(0, len(msg), 64)])
def __repr__(self):
if self.msg:
return f"{self.__class__.__name__}({self.msg:s})"
return f"{self.__class__.__name__}()"
def __str__(self):
return self.hexdigest()
def __eq__(self, other):
return self.h == other.h
def bytes(self):
return struct.pack("<4L", *self.h)
def hexbytes(self):
return self.hexdigest().encode
def hexdigest(self):
return "".join(f"{value:02x}" for value in self.bytes())
def _process(self, chunks):
for chunk in chunks:
X, h = list(struct.unpack("<16I", chunk)), self.h.copy()
# Round 1.
Xi = [3, 7, 11, 19]
for n in range(16):
i, j, k, l = map(lambda x: x % 4, range(-n, -n + 4))
K, S = n, Xi[n % 4]
hn = h[i] + MD4.F(h[j], h[k], h[l]) + X[K]
h[i] = MD4.lrot(hn & MD4.mask, S)
# Round 2.
Xi = [3, 5, 9, 13]
for n in range(16):
i, j, k, l = map(lambda x: x % 4, range(-n, -n + 4))
K, S = n % 4 * 4 + n // 4, Xi[n % 4]
hn = h[i] + MD4.G(h[j], h[k], h[l]) + X[K] + 0x5A827999
h[i] = MD4.lrot(hn & MD4.mask, S)
# Round 3.
Xi = [3, 9, 11, 15]
Ki = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]
for n in range(16):
i, j, k, l = map(lambda x: x % 4, range(-n, -n + 4))
K, S = Ki[n], Xi[n % 4]
hn = h[i] + MD4.H(h[j], h[k], h[l]) + X[K] + 0x6ED9EBA1
h[i] = MD4.lrot(hn & MD4.mask, S)
self.h = [((v + n) & MD4.mask) for v, n in zip(self.h, h)]
@staticmethod
def F(x, y, z):
return (x & y) | (~x & z)
@staticmethod
def G(x, y, z):
return (x & y) | (x & z) | (y & z)
@staticmethod
def H(x, y, z):
return x ^ y ^ z
@staticmethod
def lrot(value, n):
lbits, rbits = (value << n) & MD4.mask, value >> (MD4.width - n)
return lbits | rbits
def getMD4(s):
message = s.encode()
return MD4(message).hexdigest()
def main():
i = 0
while True:
i += 1
message = f'0e{i}'
messageMd4 = getMD4(message)
messageList = messageMd4.split('e')
if len(messageList) == 2:
print(i)
pattern = re.compile(r'^[0]+$')
if pattern.match(messageList[0]) and messageList[1].isdigit():
print(f"{message}'s md4 is {messageMd4} by Y1ng")
break
else:
continue
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
pass
最后
以上就是含糊羊为你收集整理的魔术hash爆破脚本的全部内容,希望文章能够帮你解决魔术hash爆破脚本所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复