图种

一种彩特殊方式将图片文件(如jpg格式)与压缩文件结合起来的文件。
该文件一般输出为jpg图片文件,可以正常预览图片;当有人将该图片下载到本地后,可以通过修改文件的后缀,将.jpg改为.zip,并用解压软件查看得到数据。
由于这种方式有利于某些网友(老司机)传播种子文件,故称图种,又叫作内涵图。

具体原理

所有文件的本质是二进制数据,.rar文件的二进制数据是以52 61 72 21开头,而.jpg是以ff d9结尾。
利用这个特性,把.jpg的数据拼接.rar的数据,再以.jpg为后缀名,就可以得到图种文件。

代码

  1. const fs = require('fs');
  2. const { resolve } = require('path');
  3. const { argv } = require('process');
  4. const [, , picPath, rarPath, targetPath] = argv;
  5. let picBuffer, // 图片二进制数据
  6. rarBuffer; // 文件二进制数据
  7. picBuffer = fs.readFileSync(picPath);
  8. rarBuffer = fs.readFileSync(rarPath);
  9. const data = Buffer.concat([picBuffer, rarBuffer]);
  10. const targetFile = !targetPath ? resolve(__dirname, './target.jpg') : targetPath;
  11. fs.writeFileSync(targetFile, data);