上文中介绍了异或公式:
A xor B= C,则:B xor C=A .
讲到微信如何加密.data文件:
原始图片A用16进制表示,每一位都和一个16进制密钥B进行异或得到加密文件C。那么解密反过来通过C用16进制表示,每一位和密钥B进行异或解密得到图片A。
那么电脑中只有.data文件(C变量),那么我们还需要知道密钥B,这样才可以异或得到原图片A。那么怎么得到密钥B呢?
我们知道同样的格式都一个同样的文件头。比如jpg,doc,pdf等等。我们已经知道.data文件都是一些图片。那么图片二进制头都有指定格式:
JPEG (jpg),文件头:FFD8FF
PNG (png),文件头:89504E47
GIF (gif),文件头:47494638
此外,通过二进制查看这些.data文件会发现,都是同样的文件头。比如我的.data文件头: 22FBE5....
那么异或尝试一下:
22FBE5 Xor FFD8FF = DD231A 22FBE5 Xor 89504E = ABABAB 22FBE5 Xor 474946 = 65B2A3
可以发现 十六进制 密钥就是AB。
知道怎么加密,已知C,已知密钥B,要求A很简单。解密就很简单了,利用下面的代码,替换下面出现的 密钥B( 0xAB ),即可解密微信的data文件:
博客地址:http://blog.yoqi.me/?p=16622
这篇文章还没有评论