mark第一个Rust小项目,Png图片隐写术

950 阅读1分钟

学习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>