HackingPain/steganography-tool

GitHub: HackingPain/steganography-tool

一款安全的PNG图像隐写工具,支持AES-256加密和HMAC完整性校验,提供LSB像素嵌入与元数据嵌入两种方式,同时具备GUI和CLI界面。

Stars: 0 | Forks: 0

# 隐写术工具 一个安全的图像隐写术工具,用于在 PNG 图像中嵌入和提取加密 payload。包括 GUI 和命令行界面。 ## 功能特性 - **AES-256-CBC 加密**,使用 PBKDF2-HMAC-SHA256 密钥派生(60万次迭代) - **HMAC-SHA256 完整性检查**,可检测错误密码和被篡改的数据 - 每次加密使用**随机盐和 IV**,因此没有两次加密会产生相同的输出 - 密钥材料使用后进行**尽力清除 (Best-effort memory wiping)** - **两种嵌入方法:** - **Pixel (LSB)** - 将数据隐藏在像素颜色通道的最低有效位中 - **Metadata** - 将数据存储在 PNG 文本块中 - **文件类型检测** - 在提取时建议正确的扩展名 - **容量指示器** - 在嵌入前显示 payload 大小与可用空间的对比 ### GUI 功能 - 图像预览,显示尺寸和格式 - 深色/浅色主题切换 - 密码确认对话框,带显示/隐藏切换 - 线程化操作,在嵌入/提取期间保持 GUI 响应 - 通过 `tkinterdnd2` 实现可选的拖放功能 ### CLI 功能 - 交互式密码提示(进程列表中不显示密码) - `--password-stdin` 用于脚本编写 - `--verbose` 标志用于调试日志记录 - 正确的退出代码(0 成功,1 错误,2 用法错误) ## 安装 ``` pip install -e . ``` 用于开发(包含 pytest): ``` pip install -e ".[dev]" ``` ## 使用方法 ### GUI ``` stego-tool ``` 或者: ``` python -m stego.gui.app ``` ### CLI ``` # 嵌入(交互式密码提示) stego-cli embed -i cover.png -p secret.txt -o output.png # 使用 stdin 密码嵌入(用于脚本) echo "MyPassword123!" | stego-cli embed -i cover.png -p secret.txt -o output.png --password-stdin # 提取 stego-cli extract -i output.png -o recovered.txt # 使用 metadata 方法代替 pixel LSB stego-cli embed -i cover.png -p secret.txt -o output.png -m metadata # 详细日志 stego-cli -v embed -i cover.png -p secret.txt -o output.png # 版本 stego-cli --version ``` ### 嵌入 Payload (GUI) 1. 选择一个 PNG 图像 2. 选择一个要嵌入的 payload 文件 3. 选择方法:Pixel (LSB) 或 Metadata 4. 输入并确认加密密码(至少 8 个字符) 5. 点击 **Embed Payload**。结果保存为 `_steg.png` ### 提取 Payload (GUI) 1. 选择一张包含隐藏 payload 的图像 2. 选择与嵌入时相同的方法 3. 输入解密密码 4. 点击 **Extract Payload**。保存对话框会自动检测文件类型 ## 运行测试 ``` pytest tests/ -v --cov=stego ``` ## 项目结构 ``` src/stego/ __init__.py Package version __main__.py python -m stego entry point (launches CLI) exceptions.py Custom exception hierarchy crypto.py AES-256-CBC + PBKDF2 + HMAC wire format lsb.py LSB pixel steganography engine (NumPy vectorized) metadata.py PNG metadata embedding/extraction capacity.py Image capacity calculation filetype.py Magic-byte file type detection cli.py argparse CLI interface log.py Logging configuration gui/ app.py Main application window widgets.py File picker, preview, capacity bar, password dialog theme.py Light/dark theming tests/ test_crypto.py, test_lsb.py, test_metadata.py, test_integration.py test_cli.py, test_filetype.py, test_capacity.py legacy/ Zeroclick_coregraphics.py Original file (kept for reference) ``` ## Wire 格式 (v1) ``` [4B magic "STG1"] [2B version=1] [16B salt] [16B IV] [32B HMAC-SHA256] [4B ciphertext length] [N bytes ciphertext] ``` ## 向后兼容性 v1 wire 格式故意与原始工具不兼容。原始协议存在严重的安全问题(硬编码盐、确定性 IV、无完整性检查)和错误(终止标记不匹配)。使用原始工具嵌入的图像无法使用 v1 提取。 ## 许可证 MIT 许可证。详见 [LICENSE](LICENSE)。 ## 作者 **Domenic Laurenzi**, DarkHorse Information Security ## 免责声明 本工具仅用于教育和道德用途。作者不对任何滥用行为负责。
标签:AES-256, DNS 反向解析, DNS 解析, GUI应用, HMAC完整性校验, LSB隐写, PBKDF2, PNG元数据, Python, Python安全工具, Steganography, 信息隐藏, 图像隐写, 安全存储, 安全规则引擎, 密码学, 手动系统调用, 操作系统检测, 数字载体, 数据加密, 数据渗漏, 文件嵌入, 无后门, 漏洞评估, 网络信息收集, 逆向工具, 隐写术, 隐私保护工具