Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/ragibson/steganography
取证分析隐写术密码学CTF学习与教育隐写术 分类第 6 名
GitHubragibson/steganography

Steganography

最低有效位隐写术,适用于位图图像(.bmp 和 .png)、WAV 声音文件以及字节序列。针对位图图像的简单 LSB 隐写分析(LSB 提取)。

查看仓库
6561055311个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Steganography

隐写术插图

目录

  • 安装
  • 字节序列操作
  • WavSteg
  • LSBSteg
  • StegDetect

如果你不熟悉隐写术技术,我还写了一篇该领域的概述文章: Steganography: Hiding Data Inside Data。

安装

该项目已上传至 PyPI,可通过以下命令安装:

root@kitploit:~
pip install stego-lsb

或者,你也可以直接从本仓库安装:

root@kitploit:~
git clone https://github.com/ragibson/Steganography
cd Steganography
python3 setup.py install

安装完成后,在终端中使用 stegolsb 命令,或在代码中从 stego_lsb 导入函数。

字节序列操作

bit_manipulation 提供了将载荷字节快速交错插入载体字节序列最低有效位(LSBs)的能力。

具体来说,它包含四个主要函数:

root@kitploit:~
# 将 payload 的字节交错插入 carrier 的 num_lsb 个最低有效位中。
lsb_interleave_bytes(carrier, payload, num_lsb, truncate=False)

# 从 carrier 的 num_lsb 个最低有效位中解交错取出 num_bits 位。
lsb_deinterleave_bytes(carrier, num_bits, num_lsb)

# 对 List[uint8] 类型的 carrier 执行 lsb_interleave_bytes。
lsb_interleave_list(carrier, payload, num_lsb)

# 对 List[uint8] 类型的 carrier 执行 lsb_deinterleave_bytes。
lsb_deinterleave_list(carrier, num_bits, num_lsb)

运行 bit_manipulation.py、直接调用其 test() 函数,或运行 stegolsb test 应产生类似以下的输出:

root@kitploit:~
Testing 1.0 MB payload -> 10.0 MB carrier...
Progress: [################################]
----------------------------------------
| # LSBs | 编码速率    | 解码速率    |
| 1      | 60.6   MB/s | 95.9   MB/s |
| 2      | 56.6   MB/s | 52.7   MB/s |
| 3      | 82.5   MB/s | 77.4   MB/s |
| 4      | 112.4  MB/s | 105.9  MB/s |
| 5      | 135.9  MB/s | 129.8  MB/s |
| 6      | 159.9  MB/s | 152.4  MB/s |
| 7      | 181.7  MB/s | 174.6  MB/s |
| 8      | 372.8  MB/s | 1121.8 MB/s |
----------------------------------------

WavSteg

WavSteg 使用最低有效位隐写术将文件隐藏在 .wav 文件的样本中。

对于音频文件中的每个样本,我们用文件中的数据覆盖其最低有效位。

使用方法

WavSteg 需要 Python 3。

使用以下命令行参数运行 WavSteg:

root@kitploit:~
命令行参数:
 -h, --hide               将数据隐藏在声音文件中
 -r, --recover            从声音文件中恢复数据
 -i, --input TEXT         .wav 文件的路径
 -s, --secret TEXT        要隐藏在声音文件中的文件路径
 -o, --output TEXT        输出文件路径
 -n, --lsb-count INTEGER  使用多少个最低有效位  [默认: 2]
 -b, --bytes INTEGER      从声音文件中恢复多少字节
 --help                   显示此消息并退出。

示例:

root@kitploit:~
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 1
# 或
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 1 -b 1000

隐藏数据

隐藏数据使用参数 -h、-i、-s、-o 和 -n。

以下命令会将 file.txt 的内容隐藏到 sound.wav 中,并将结果保存为 sound_steg.wav。该命令还会输出在理论最大值下已使用的字节数。

示例:

root@kitploit:~
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 2
使用 2 个 LSB,最多可隐藏 6551441 字节
读取文件                    耗时 0.01s
5589889 字节隐藏            耗时 0.24s
输出 wav 写入              耗时 0.03s

如果你尝试隐藏过多数据,WavSteg 会打印出隐藏你的数据所需的最小 LSB 数量。

恢复数据

恢复数据使用参数 -r、-i、-o、-n 和 -b。

以下命令会从 sound_steg.wav 中恢复隐藏的数据,并将其保存为 output.txt。这要求隐藏数据的大小(字节)准确,否则结果可能过短或包含多余数据。

示例:

root@kitploit:~
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 2 -b 5589889
读取文件                    耗时 0.02s
恢复 5589889 字节           耗时 0.18s
写入输出文件                耗时 0.00s

LSBSteg

LSBSteg 使用最低有效位隐写术将文件隐藏在 RGB 图像(.bmp 或 .png)的颜色信息中。

对于图像中每个像素的每个颜色通道(例如 R、G 和 B),我们用文件中的数据覆盖颜色值的最低有效位。为了更容易恢复这些数据,我们还将输入文件的大小隐藏在图像的前几个颜色通道中。

使用方法

你需要 Python 3 和 Pillow(Python Imaging Library 的一个分支)。

使用以下命令行参数运行 LSBSteg:

root@kitploit:~
命令行参数:
 -h, --hide                      将数据隐藏在图像文件中
 -r, --recover                   从图像文件中恢复数据
 -a, --analyze                   打印图像中可以隐藏多少数据   [默认: False]
 -i, --input TEXT                位图图像(.bmp 或 .png)的路径
 -s, --secret TEXT               要隐藏在图像中的文件路径
 -o, --output TEXT               输出文件路径
 -n, --lsb-count INTEGER         使用多少个最低有效位  [默认: 2]
 -c, --compression INTEGER RANGE
                                  1(最佳速度)到 9(最小文件大小)  [默认: 1]
 --help                          显示此消息并退出。

示例:

root@kitploit:~
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
# 或
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
# 或
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2

分析

在将数据隐藏到图像之前,查看可以隐藏多少数据是很有用的。以下命令将实现此目的,并产生类似以下的输出:

root@kitploit:~
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
图像分辨率: (2000, 1100, 3)
使用 2 个 LSB,最多可隐藏:     1650000 B
输入文件大小:                   1566763 B
文件大小标签:                   3 B

隐藏数据

以下命令会将数据隐藏到输入图像中,并将结果写入隐写后的图像,产生类似以下的输出:

root@kitploit:~
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
读取文件                    耗时 0.26s
1566763 字节隐藏            耗时 0.31s
图像覆盖完成                耗时 0.27s

恢复数据

以下命令会从隐写后的图像中恢复数据,并将结果写入输出文件,产生类似以下的输出:

root@kitploit:~
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
读取文件                    耗时 0.30s
1566763 字节恢复            耗时 0.28s
输出文件写入                耗时 0.00s

StegDetect

StegDetect 提供了一种检测图像中简单隐写术的方法。

使用方法

你需要 Python 3 和 Pillow(Python Imaging Library 的一个分支)。

使用以下命令行参数运行 StegDetect:

root@kitploit:~
命令行参数:
 -i, --input TEXT         图像路径
 -n, --lsb-count INTEGER  显示多少个最低有效位  [默认: 2]
 --help                   显示此消息并退出。

显示图像的最低有效位

我们将每个像素的 RGB 颜色通道的最低 n 位相加,并将结果归一化到 0-255 范围。然后将此值应用于该像素的每个颜色通道。其中 n 是要显示的最低有效位数,以下命令将保存结果图像,并在文件名后附加 "_nLSBs",产生类似以下的输出:

root@kitploit:~
$ stegolsb stegdetect -i input_image.png -n 2
运行时间: 0.63s
下载工具