方式的探索"/>
查找微信图片方式的探索
文章目录
- 前言
- 一、微信图片保存在哪里?
- 二、解码过程
- 1.dat是什么:一切皆数字
- 2.转换输出图片
- 3. 验证
- 三、找目标图片
- 方法一:模板匹配
- 方法二:特征匹配
前言
某一天,领导让找几张现场调研的图片,要求是是近2年来的,正面形象气质佳,指点江山气质的优先。想来愚钝,没怎么保存领导调研的图片,后来想从微信里面的各种群找,工作量一下就上来了,思前想后,不如搞个小程序弄下,于是就有了下面探索的内容。
一、微信图片保存在哪里?
电脑微信,设置,文件管理,即可看到文件管理的路径,各种文件均在此。
微信聊天记录,找一个非图片文件,右键,在文件夹中显示。
找到Image文件夹,里面基本都是图片,但是不是常规图片后缀名,均为.dat。
二、解码过程
1.dat是什么:一切皆数字
使用Notepad++软件打开任意一个dat文件:
结果是乱码
使用插件,插件,插件管理,下载Hex Editor
再次打开刚才的dat文件,view in hex 显示如下:
按网上各路大神所说,随机再打开其他的dat文件,94和4d这2个数字均一致。
这里引用网上教程解释:jpeg格式的图片开头两个16进制的值通常为FFD8,将e2 c5这两个值异或一下,得到16进制的值,通常来说应该是一样的,修改加密的异或值,比如说我的异或值最后两位是1D,则xor_value = 0x1D,0x表示16进制,记下这个值。
做好文件备份!验证下dat文件的开头是否如上面想的一样:
import os
path = r"E:\微信文件\WeChat Files\wxid_r3f11i50p8f022\FileStorage\MsgAttach" #wxid_r3f11i50p8f022 每个微信账号下的文件夹,且都不一致,注意换成自己的
result = {}
files_list = os.listdir(path)
for i in files_list:dat_paths = os.path.join(path, i,"Image")try:dat_dir = os.listdir(dat_paths)except FileNotFoundError:print(i)continuefor j in dat_dir:dat_file_dir = os.path.join(dat_paths,j)dat_files = os.listdir(dat_file_dir)for f in dat_files:dat_file = os.path.join(dat_file_dir,f)dats = open(dat_file,"rb")txts = dats.read()head_txt = hex(txts[0]) + hex(txts[1])if head_txt in result.keys():result[head_txt] = result[head_txt] + 1else:result[head_txt] = 1
print(result)
这可能会花费大量时间和计算机资源,取决于你的文件数量,完全是基于探索,所以,一定要做备份。
{‘0xe20xc5’: 11743, ‘0x940x4d’: 1921, ‘0xff0xd8’: 26, ‘0x770x78’: 44, ‘0x890x50’: 4}
我的文件开头e2c5的占大多数,所以就它了,后面转换验证的时候,其他的转换后图片无法显示也证明了这点。
2.转换输出图片
代码如下(示例):
def toimg(dat,img_save_path,img_name):imgs = os.path.join(img_save_path,img_name) #转换后图片保存路径txt = open(dat,"rb") #读取dat文件img = open(imgs,"wb") #保存图片xor_value = 0x1D #0x表示16进制for lines in txt:for nowByte in lines:newByte = nowByte ^ xor_valueimg.write(bytes([newByte]))txt.close()img.close(
更多推荐
查找微信图片方式的探索
发布评论