图种
一种彩特殊方式将图片文件(如jpg格式)与压缩文件结合起来的文件。
该文件一般输出为jpg图片文件,可以正常预览图片;当有人将该图片下载到本地后,可以通过修改文件的后缀,将.jpg改为.zip,并用解压软件查看得到数据。
由于这种方式有利于某些网友(老司机)传播种子文件,故称图种,又叫作内涵图。
具体原理
所有文件的本质是二进制数据,.rar文件的二进制数据是以52 61 72 21
开头,而.jpg是以ff d9
结尾。
利用这个特性,把.jpg的数据拼接.rar的数据,再以.jpg为后缀名,就可以得到图种文件。
代码
const fs = require('fs');
const { resolve } = require('path');
const { argv } = require('process');
const [, , picPath, rarPath, targetPath] = argv;
let picBuffer, // 图片二进制数据
rarBuffer; // 文件二进制数据
picBuffer = fs.readFileSync(picPath);
rarBuffer = fs.readFileSync(rarPath);
const data = Buffer.concat([picBuffer, rarBuffer]);
const targetFile = !targetPath ? resolve(__dirname, './target.jpg') : targetPath;
fs.writeFileSync(targetFile, data);