 
                            今天偶然看到一篇文章,思路很棒,值得学习
https://mp.weixin.qq.com/s/rvkhkvirdq6Ab64n-lIn0Q
PCvx的文件路径一般放在C盘的文档下的WeChat Files里,每个账号的vxID就是文件夹名
图片一般是这个位置
拿出一张图片,用winhex打开看16进制,文件头是 DE 07
同时,png图片的文件头是89 50
DE XOR 89= 57,而同时,07 XOR 50 =57
写一个小脚本跑一下
核心代码就这几行
| 1 | with open(file,'rb')as fr: | 
主要是想记录一下
python用二进制读取文件(rb)的时候,如果直接遍历用print输出,得到的是每一个字节的10进制,就比如这个文件,读前16个字节,
第一排是直接print得到的,第二排是把第一排的结果转成了16进制,第三排是winhex的显示
要进行异或的时候,要与得到的值(57(实际上应该要写0x57))的十进制(87)异或。
最后写入的时候,也要用二进制的方式(wb),直接把结果写入是不行的,需要用bytes转换一下
常用文件及其文件头
|文件名|文件头|
|—|–|
|JPEG (jpg) | FF  D8  FF  E1   |
|PNG (png) | 89  50  4E  47   |
|GIF (gif) | 47  49  46  38   |
|TIFF (tif) | 49  49  2A  00   |
|Windows Bitmap (bmp) | 42  4D   |
|CAD (dwg) | 41  43  31  30   |
|Adobe Photoshop (psd) | 38  42  50  53   |
|Rich Text Format (rtf) | 7B  5C  72  74  66   |
|XML (xml) | 3C  3F  78  6D  6C   |
|HTML (html) | 68  74  6D  6C  3E   |
|Email [thorough only] (eml) | 44  65  6C  69  76  65  72  79  2D  64  61  74  65  3A   |
|Outlook Express (dbx) | CF  AD  12  FE  C5  FD  74  6F   |
|Outlook (pst) | 21  42  44  4E   |
|MS Word/Excel (xls.or.doc) | D0  CF  11  E0   |
|MS Access (mdb) | 53  74  61  6E  64  61  72  64  20  4A   |
|WordPerfect (wpd) | FF  57  50  43   |
|Postscript (eps.or.ps) | 25  21  50  53  2D  41  64  6F  62  65   |
|Adobe Acrobat (pdf) | 25  50  44  46  2D  31  2E   |
|Quicken (qdf) | AC  9E  BD  8F   |
|Windows Password (pwl) | E3  82  85  96   |
|ZIP Archive (zip) | 50  4B  03  04   |
|RAR Archive (rar) | 52  61  72  21   |
|Wave (wav) | 57  41  56  45   |
|AVI (avi) | 41  56  49  20   |
|Real Audio (ram) | 2E  72  61  FD   |
|Real Media (rm) | 2E  52  4D  46   |
|MPEG (mpg) | 00  00  01  BA   |
|MPEG (mpg) | 00  00  01  B3   |
|Quicktime (mov) | 6D  6F  6F  76   |
|Windows Media (asf) | 30  26  B2  75  8E  66  CF  11   |
|MIDI (mid) | 4D  54  68  64   |
