下载附件是一个picture,拖入HXD 发现表头 50 4B 03 04 为一个zip压缩包表头,回来为文件添加.Zip后缀
dat 文件微信加密 通过与某一个值进行异或运算的加密方法将图片,压缩包等文件的进行异或运算成新的加密文件百度搜素压缩包文件的16进制开头为50 4B 与dat的开头 DE C5 异或得到密钥8E
将8E 与dat的每个16进制进行异或还原文件添加后缀.zip
zip压缩包解压里面有一个encode.py文件
加密方式为调取flag.jpg 宽高倒转每个for循环从(i,j)坐标取rgb值,在经过异或运算出新的rgb值,再以b,g,r的顺序放到新的地址((i787+j)//1200,(i787+j)%1200)中去最后生成一个新的图片flag.png。
逆着推导从新坐标((i787+j)//1200,(i787+j)%1200)取rgb值在经过r=r^g ,g=g^b,b=b^r
解密出原来的rgb值再放回I,j本来坐标生成flag.jpg
总结
1,利用16进制编辑器查看未知类型的文件,与常见的png,jpg,zip等文件的16进制文件头,文件尾比较一下,或许添加一下后缀就可以还原
2,dat 是通过异或进行加密的,只需要根据文件头计算出异或值,即可进行解密
3,encode.py对图片的加密方式每次从(I,J)中调取rgb值进行异或运算后在放到新的地址中以bgr的顺序放入生成新的图片的加密方式。