· file2img¶
file2img 是个小工具,把任意二进制文件塞进 PNG 或其它无损编码的图片里。原理是把字节分成 RGB 像素(每像素 3 字节),无损压缩。逆向也一样,无损还原。
实现¶
现在看来两年前代码还真是充斥着过度封装 😂
from msgspec.json import decode, encode
class Metadata(Struct, omit_defaults=True):
length: int
filename: Optional[str] = None
def encode_meta(length: int, filename: Optional[str] = None):
return encode(Metadata(length, filename))
def encode(data, file_format: Format, filename: Optional[str] = None):
data = encode_meta(len(data), filename) + b"\n" + data
length = len(data)
img_size = ceil((length / 3) ** 0.5)
buffer = np.zeros((img_size, img_size, 3), np.uint8)
buffer.ravel()[:length] = np.frombuffer(data, dtype=np.uint8)
return imwrite("<bytes>", buffer, extension=f".{file_format}", lossless=True)
def decode(data):
meta, data = bytes(imread(data)).split(b"\n", 1)
meta = decode_meta(meta)
return data[: meta.length], meta
效果¶
比如这张图片就是一个文本文件被压缩为 webp
x-size-in: 237994
x-size-out: 62000
看来压缩率还蛮高的

欢迎猜猜或者试试这张图片是什么。在 file2img.vercel.app 上 parse 试试看吧!
在杭州 实习 的时候跟老板聊过一下,然后试了下用各种中继传图片,发现都打不开了。看来它们都会隐性地重新压制图片……