Manyan06/png-metadata-steganalysis
GitHub: Manyan06/png-metadata-steganalysis
基于机器学习的 PNG 图像元数据隐写分析研究原型,通过提取元数据统计特征来检测隐藏在 PNG 文件中的隐蔽载荷。
Stars: 0 | Forks: 0
# 基于机器学习的 PNG 图像元数据隐写分析
## 概述
数字图像不仅可以在像素中隐藏隐蔽信息,还可以在 **元数据字段** 中隐藏。PNG 图像支持 `tEXt`、`zTXt` 和 `iTXt` 等元数据块,这些块可能被滥用以存储隐藏的有效载荷,而无需修改图像的视觉内容。
本项目演示了一个 **概念验证隐写分析系统**,该系统使用 **机器学习** 检测嵌入在 PNG 元数据中的隐藏有效载荷。该方法不分析像素模式,而是完全关注元数据特征,使其轻量级且易于解释。
该系统通过将编码的有效载荷注入 PNG 元数据字段来构建 **受控数据集**,然后提取统计元数据特征以训练分类器,从而能够区分 **干净图像与元数据隐写图像**。
## 关键目标
- 演示如何利用 PNG 元数据隐藏有效载荷
- 构建包含干净图像和隐写图像的 **受控实验数据集**
- 从元数据中提取统计特征
- 训练机器学习模型以检测隐藏的元数据有效载荷
- 为基于元数据的隐写分析研究提供可复现的流水线
## 项目流水线
```
Clean PNG Image
│
▼
Payload Generation (plain / base64 / XOR / AES)
│
▼
Metadata Injection (tEXt / zTXt chunks)
│
▼
Labeled Dataset Creation
│
▼
Metadata Feature Extraction
│
▼
Machine Learning Classification
```
## 数据集结构
```
dataset/
│
├── clean/
│ └── clean_img.png
│
├── stego_text/
│ └── clean_img_text_injected.png
│
└── stego_ztxt/
└── clean_img_ztxt_injected.png
```
数据集标签存储于:
```
metadata/dataset_labels.csv
```
## 提取的特征
分类器使用基于元数据的统计特征,例如:
- **元数据键的数量**
- **元数据总长度**
- **元数据值平均长度**
- **元数据值的香农熵**
- **ASCII 字符比率**
这些特征捕捉了 **由隐藏有效载荷引入的结构异常**。
## 机器学习模型
使用 **逻辑回归分类器** 进行概念验证检测。
### 分类任务
干净 PNG vs 隐写 PNG
分类器基于 **从每张图像提取的元数据特征向量** 进行训练。
## 仓库结构
```
png-metadata-steganalysis/
│
├── dataset/
│ ├── clean/
│ ├── stego_text/
│ └── stego_ztxt/
│
├── payloads/
│ ├── plain/
│ ├── base64/
│ ├── xor/
│ └── aes/
│
├── scripts/
│ ├── inject_png_text_chunk_pillow.py
│ ├── inject_png_ztxt_chunk_pillow.py
│ ├── extract_metadata_features.py
│ ├── train_classifier.py
│ ├── xor_encode.py
│ ├── aes_encode.py
│ └── verify_png_text.py
│
├── metadata/
│ ├── dataset_labels.csv
│ ├── features.csv
│ └── payload_manifest.csv
│
├── requirements.txt
└── README.md
```
## 安装
克隆仓库:
```
git clone https://github.com/yourusername/png-metadata-steganalysis.git
cd png-metadata-steganalysis
```
安装依赖项:
```
pip install -r requirements.txt
```
## 运行流水线
### 1️⃣ 提取元数据特征
```
python extract_metadata_features.py
```
这将生成:
```
metadata/features.csv
```
### 2️⃣ 训练分类器
```
python train_classifier.py
```
该模型用于评估图像是干净的还是包含隐藏的元数据有效载荷。
## 特征输出示例
```
image_path,label,num_meta_keys,total_meta_len,avg_value_len,mean_entropy,mean_ascii_ratio
clean/clean_img.png,clean,0,0,0,0,0
stego_text/clean_img_text_injected.png,stego_text,1,264,264,3.62,0.5
stego_ztxt/clean_img_ztxt_injected.png,stego_ztxt,1,13640,13640,3.68,0.5
```
## 限制
本项目旨在作为研究原型,存在若干限制:
- 实验数据集较小
- 仅分析了 PNG 元数据块
- 仅测试了基础机器学习模型
- 未包含现实世界的恶意软件样本
## 未来工作
- 更大的数据集
- 额外的元数据块类型
- 基于深度学习的异常检测
- 集成到数字取证工具中
## 相关工作
关于隐写术检测的研究传统上集中在像素域隐写分析,即隐藏数据会修改图像统计数据。然而,基于元数据的隐写术仍是一个较少被探索的攻击面。
多项研究已经证明了在图像元数据(如 EXIF 字段和 PNG 文本块)中嵌入信息的可能性。传统的隐写分析方法通常无法检测此类有效载荷,因为它们分析的是视觉内容而非结构性元数据。
本项目探索了一种以元数据为中心的检测方法,利用从元数据字段中提取的统计特征和机器学习分类来区分干净图像与元数据隐写图像。
本项目演示了使用机器学习进行基于元数据的隐写分析的可行性。
## 作者
本项目是作为网络安全和隐写分析研究探索的一部分而开发的。
## 许可证
本项目发布用于教育和研究目的。
标签:AMSI绕过, Apex, DNS 反向解析, Metadata, PNG图像, Python, Steganalysis, Steganography, 信息隐藏, 元数据安全, 分类算法, 图像处理, 威胁检测, 数字取证, 数据隐藏, 数据集构建, 无后门, 机器学习, 特征提取, 网络安全, 自动化脚本, 逆向工具, 隐写分析, 隐写术, 隐写检测, 隐私保护