#png #store #command

bin+lib s2png

将任何数据存储在PNG图像中

2个版本

0.11.1 2023年7月13日
0.11.0 2023年7月13日

#1606 in 命令行工具

GPL-2.0 许可

74KB
3K SLoC

s2png —— “转换到PNG”

GitHub Actions CI status. AppVeyor CI build status

该程序将任意二进制数据编码为看起来像噪声的PNG图像,并能够将其解码回原始数据。最初由k0wax 在SourceForge 开发。我开始这个分支是为了修复导致s2png 0.01在现代操作系统编译时崩溃的问题。这个分支随后累积了各种错误修复和改进。最近,我已经将其移植到Rust。其中之一是,这使得将s2png作为静态二进制文件分发变得更容易。如果您不使用玩具加密功能,分支与原始版本保持数据兼容。

安装

预构建的二进制文件适用于x86_64 Linux和i686 Windows。它们附在发布 页上的版本中。开发(不稳定)的二进制文件也自动构建 Windows。

使用Cargo安装

cargo install s2png

在Debian和Ubuntu上构建

按照说明,从源代码在最近的Debian和Ubuntu上构建s2png的静态Linux二进制文件。

1. 安装 Rustup。通过Rustup添加您CPU的稳定MUSL目标。

rustup target add x86_64-unknown-linux-musl

2. 安装构建依赖项。

sudo apt install build-essential musl-tools

3. 克隆此仓库。构建二进制文件。

git clone https://github.com/dbohdan/s2png
cd s2png
make test
make release-linux

为Windows交叉编译

按照说明,在最近的Debian和Ubuntu上构建32位Intel Windows二进制文件。

1. 安装 Rustup。通过Rustup添加i686 GNU ABI Windows目标。

rustup target add i686-pc-windows-gnu

2. 安装构建依赖项。

sudo apt install build-essential mingw-w64

3. 配置Cargo进行交叉编译。在 ~/.cargo/config 中放入以下内容。

[target.i686-pc-windows-gnu]
linker = "/usr/bin/i686-w64-mingw32-gcc"

4. 克隆此仓库。构建二进制文件。

git clone https://github.com/dbohdan/s2png
cd s2png
make release-windows

用法

s2png ("stuff to png") version 0.11.1
usage: s2png [-h] [-o filename] [-w width (600) | -s] [-b text]
             [-p hex-key] [-e | -d] file

Store any data in a PNG image.
This version can encode files of up to 16777215 bytes.

  -h            display this message and quit
  -o filename   output the encoded or decoded data to filename
  -w width      set the width of the PNG image output (600 by default)
  -s            make the output image roughly square
  -b text       custom banner text ("" for no banner)
  -p hex-key    encrypt/decrypt the output with a hexadecimal key
                using RC4 (Warning: completely insecure! Do not use this if
                you want actual secrecy.)

Normally s2png detects which operation to perform by the file type. You can
override this behavior with the following switches:
  -e            force encoding mode
  -d            force decoding mode

See README.md for further details.

示例

要将 foo.mp3 存储在图像中,请输入以下命令

s2png foo.mp3

将在与 foo.mp3 相同的目录中创建一个名为 foo.mp3.png 的文件。

添加 -s 开关以确保生成的图像是正方形(上下可能有一像素),并使用 -b "some text" 更改底部横幅的文本。

s2png -s -b hello foo.mp3

要解码 decode_me.mp3.png 并检索原始文件 decode_me.mp3,请运行以下命令

s2png decode_me.mp3.png

解码 xyz.pngdecoded.mp3 使用

s2png -o decoded.mp3 xyz.png

许可证

s2png 采用 GNU GPL 2.0 许可证。查看文件 LICENSE。在 src/rc4/mod.rs 中实现的 RC4 流加密算法属于公共领域。来自 libgd 的字体采用类似 BSD 的许可证进行分发。查看文件 src/font/COPYING.libgd

依赖关系

~13MB
~61K SLoC