破解LabviewVI文件密码

今天需要查看以前labview项目的一个文件,发现加密了看不到源码,密码又忘记了,试了很多个都不对,无奈只好想着破解。在网上找到了一种思路,试验之后发现是可以的。

原来,vi文件密码的md5值是以二进制形式存储在文件里面的。用二进制方式打开vi文件,查找hex00 00 00 30,这段之后的16个字节就是密码的md5值。按照这种方法可能找到好几个不同的md5值,只有一个是正确的。实际操作中,用notepad++或者sublime text这样的编辑器,很容易就找到了这个值。

破解LabviewVI文件密码_第1张图片
查找到md5值

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')

执行结果有两个符合条件的:


md5查找结果

拿到这两个字符串,再手动上网去解密就好,当然也可以再写爬虫自动去网上查到密码。

你可能感兴趣的:(破解LabviewVI文件密码)