学习Rust一个月多了,得做一个小项目练练手,这是我的第一个Rust小项目,将一串字符串信息隐藏进png图片,原理是新增一个对图片显示没有影响的chunk,解析该chunk就可以得到隐藏的信息,这种方法比较初级,主要是用于作为rust入门的一个锻炼。
原始参考链接:picklenerd.github.io/pngme_book/…
项目地址:lijing-2008/pngme: hide secret message into png (github.com)
Introduction
该小项目根据PNG文件结构自定义Png的创建与解析,PNG文件结构其实很简单,由一个固定头signature和多个chunk组合而成,如下图所示
具体细节还有很多,包括chunk_type的定义,chunk_type由各自字母组成,大小写的不同代表了chunk的不同特性。
将
Data Structure
ChunkType
pub struct ChunkType(u8, u8, u8, u8);
Chunk
pub struct Chunk {
data_length: u32,
chunk_type: ChunkType,
data: Vec<u8>,
crc: u32,
}
Png
pub struct Png {
signature: [u8; 8],
pub(crate) chunks: Vec<Chunk>,
}
使用示例
encode <file_path> <chunk_type> <out_file_path>
decode <file_path> <chunk_type>
remove <file_path> <chunk_type>
print <file_path>