Base64 压缩文件

Summary: Author: 张亚飞 | Read Time: 1 minute read | Published: 2024-02-16
Filed under Categories: NoteTags: Enshrine, Web,

通过字符串传播文件

一次在博客上看到一个使用 base64 解压缩微信二维码的自我介绍,在终端解压出来显示一个二维码,比较有意思。

echo "H4sIANTeHl4AA71USRLDMAi79xV6KgcOfkEf6Je0dTDIDnZyaWaYTLwAEjLUd6kP2uvJZHM+1Ley
oW3LcVLaXgGOA7Xd3GcR/esNjybdfmtp3rbu/5p4rSIThh6f0zRoBr1g6ZOroJkZSsdehpoItp4p
C5yiW6Fl/EbtKBmDkL0G7CDEsfiS45nCAlDyizfr94KJB2J1jaLBYdMJ0bZeHSLHjDK6EtIfgF/c
MhleySRBLKMdiAX8bM+AyqQnzlrnIsoEn4NfsRm14H/OplQiqdzdTSZsezCZA4MeQblnip65q4dP
AnBFaD6laCQ68u78CO0QYAtq9p4uqr6aHTpeK9FhqWA6JTrn+rs9nu8DeIHHHX4HAAA=" | base64 --decode | gzip -d

[](https://www.h1ya.com/about)

研究技术原理及实现方案

  • 首先将 base64 编码解压后存到一个文件
echo "H4sIANTeHl4AA71USRLDMAi79xV6KgcOfkEf6Je0dTDIDnZyaWaYTLwAEjLUd6kP2uvJZHM+1Ley
oW3LcVLaXgGOA7Xd3GcR/esNjybdfmtp3rbu/5p4rSIThh6f0zRoBr1g6ZOroJkZSsdehpoItp4p
C5yiW6Fl/EbtKBmDkL0G7CDEsfiS45nCAlDyizfr94KJB2J1jaLBYdMJ0bZeHSLHjDK6EtIfgF/c
MhleySRBLKMdiAX8bM+AyqQnzlrnIsoEn4NfsRm14H/OplQiqdzdTSZsezCZA4MeQblnip65q4dP
AnBFaD6laCQ68u78CO0QYAtq9p4uqr6aHTpeK9FhqWA6JTrn+rs9nu8DeIHHHX4HAAA=" | base64 --decode > test.txt.gz

test.txt.gz 这是一个压缩文件,我们使用 gzip -d 进行解压

gzip -d test.txt.gz

解压出来是一个 test.txt 文本文件,在终端打开文件看到就是一个文本二维码

$ cat test.txt
█████████████████████████████████████
█████████████████████████████████████
████ ▄▄▄▄▄ █▀█ █▄█  ▄ ▄█ █ ▄▄▄▄▄ ████
████ █   █ █▀▀▀█ ▀▄▀▀█▄▀▄█ █   █ ████
████ █▄▄▄█ █▀ █▀▀▄▄  ▄ █ █ █▄▄▄█ ████
████▄▄▄▄▄▄▄█▄▀ ▀▄█▄█ █ ▀ █▄▄▄▄▄▄▄████
████  ▄▄▄█▄▄ ▄▀▄▀▄▀█▀▀▀ █ ▀ ▀▄█▄▀████
████ █ ▀ ▀▄▀██▄█▀██ ▀▄██ ▄▀  ▀█▀█████
█████▀█▀▄█▄▄█ ▄█▄▀▄▄▄ ▀ ▀▀▀▀▀▄▄█▀████
████  ▄▄█ ▄▀▄▄▄ ▄▄█▄ █▄▀  ▄ ▀▄▄▀█████
████ █ █▄▀▄▀▄▀▀▄▀▄ ▄ ▄▀ ▀▀▀ ▀▄ █▀████
████ █▀▄▄▄▄█▀█▄█▀▄█▄▀▄ ▀▄▄█▀██▄▀█████
████▄█▄▄▄█▄▄▀█▄█▄  ▄ ▀▀█ ▄▄▄ ▀   ████
████ ▄▄▄▄▄ █▄▄▄ ▄██ ██▄  █▄█ ▄▄▀█████
████ █   █ █ ▄▀▄ █ █▄███ ▄▄▄▄▀ ▀ ████
████ █▄▄▄█ █ █▀█ ▄  ██ ▄ █▄▀  ▄ █████
████▄▄▄▄▄▄▄█▄▄███▄█  ▀███▄█▄▄▄▄██████
█████████████████████████████████████
█████████████████████████████████████

原来是一个显示二维码特殊黑白字符组成的文本文件,再进行压缩,最后转成 base64 编码实现的

根据原理反向操作,修改 test.txt 文本文件

例如

┈╭━━━━━━━━━━━╮┈
┈┃╭━━━╮┊╭━━━╮┃┈
╭┫┃┈🦀┈┃┃┈🦀┈┃┣╮
┃┃╰━━━╯┊╰━━━╯┃┃
╰┫╭━╮╰━━━╯╭━╮┣╯
┈┃┃┣┳┳┳┳┳┳┳┫┃┃┈
┈┃┃╰┻┻┻┻┻┻┻╯┃┃┈
┈╰━━━━━━━━━━━╯┈

压缩成 test.txt.gz 文件

gzip test.txt

使用 base64 进行编码

base64 -i test.txt.gz

最后仿照上面的命令格式拼接起来

echo "H4sICNwwfmYAA3Rlc3QudHh0AHs0pePR1LWPpjQSQFPXPZrSwQXEj6Y0o2gASXRhiDSDVYNEV0M4H+Yva4DqxuAvBmrhgspM3YBk0Hqw0WgiIGVcYNHVUGuBFqIpgouDzF7PhWTx4kdTNmNDq+EuQ1INMnU3FgRzBkw1su04A3A9SDUAswNXGW8BAAA=" | base64 --decode | gzip -d

Comments

Cor-Ethan, the beverage → www.iirii.com