今天需要查看以前labview项目的一个文件,发现加密了看不到源码,密码又忘记了,试了很多个都不对,无奈只好想着破解。在网上找到了一种思路,试验之后发现是可以的。
原来,vi文件密码的md5
值是以二进制形式存储在文件里面的。用二进制方式打开vi文件,查找hex的00 00 00 30
,这段之后的16个字节就是密码的md5
值。按照这种方法可能找到好几个不同的md5值,只有一个是正确的。实际操作中,用notepad++
或者sublime text
这样的编辑器,很容易就找到了这个值。
![](https://img.haomeiwen.com/i1219924/ba08d8bc4f9cd443.png)
用 76f3154b83e937edc04996af54848040 这个字符串就可以找到密码。
虽然说
md5
不能直接逆向破解,但是只要有一个足够大的数据库,把很多字母数字字符串能够求到的md5
全部保存下来,那么要反向查询到密码也就很容易了。https://www.cmd5.com/ 这就是一个很好用的在线解密网站。
上面是手动查询,如果要用python
找到md5的话,可以像下面这样:(其实这里对bytes
数据的处理并不好,不过考虑到我这里vi
文件一般都很小,也无所谓了,因为bytes
不能直接用正则表达式,而find
只返回第一个匹配的,所以用这种办法是可行的,比全部转成字符串再找要好一些)
def getMd5(path):
dest=bytes.fromhex('00000030')
with open(path,'rb') as fs:
content = fs.read()
md5Pos = 0
while content:
md5Pos = content.find(dest, md5Pos)
if md5Pos==-1:
break
print(content[md5Pos+4:md5Pos+20].hex())
md5Pos += 20
if __name__=='__main__':
getMd5(r'C:\Users\upython\Desktop\xxx.vi')
执行结果有两个符合条件的:
![](https://img.haomeiwen.com/i1219924/9afadad2ea742f6c.png)
拿到这两个字符串,再手动上网去解密就好,当然也可以再写爬虫自动去网上查到密码。
网友评论