CTF思路
点击放大

!Steganography illustration
* Installation
* Byte Sequence Manipulation
* WavSteg
* LSBSteg
* StegDetect
If you are unfamiliar with steganography techniques, I have also written a
basic o of the field in
Steganography: Hiding Data Inside Data.
This project is on PyPI and can be
installed with
pip install stego-lsb
Alternatively, you can install it from this repository directly:
git clone
cd Steganography
python3 setup.py install
After installation, use the stegolsb command in the terminal or import
functions from stego_lsb in your code.
bit_manipulation provides the ability to (quickly) interleave the bytes of a
payload directly in the least significant bits of a carrier byte sequence.
Specifically, it contains four primary functions:
# Interleave the bytes of payload into the num_lsb LSBs of carrier.
lsb_interlea(carrier, payload, num_lsb, truncate=False)
# Deinterlea bits from the num_lsb LSBs of carrier.
lsb_deinterlea(carrier, num_bits, num_lsb)
# Runs lsb_interlea with a List[uint8] carrier.
lsb_interlea(carrier, payload, num_lsb)
# Runs lsb_deinterlea with a List[uint8] carrier.
lsb_deinterlea(carrier, num_bits, num_lsb)
Running bit_manipulation.py, calling its test() function directly, or
running stegolsb test should produce output similar to
Testing 1.0 MB payload -> 10.0 MB carrier...
Progress: [################################]
----------------------------------------
| # LSBs | Encode Rate | Decode rate |
| 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 uses least significant bit steganography to hide a file in the samples
of a .wav file.
For each sample in the audio file, we o the least significant bits with
the data from our file.
WavSteg requires Python 3
Run WavSteg with the following command line arguments:
Command Line Arguments:
-h, --hide To hide data in a sound file
-r, --recover To recover data from a sound file
-i, --input TEXT Path to a .wav file
-s, --secret TEXT Path to a file to hide in the sound file
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-b, --bytes INTEGER How many bytes to recover from the sound file
--help Show this message and exit.
Example:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 1
# OR
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 1 -b 1000
Hiding data uses the arguments -h, -i, -s, -o, and -n.
The following command would hide the contents of file.txt into sound.wav and
save the result as sound_steg.wav. The command also outputs how many bytes have
been used out of a theoretical maximum.
Example:
$ stegolsb wavsteg -h -i sound.wav -s file.txt -o sound_steg.wav -n 2
Using 2 LSBs, we can hide 6551441 bytes
Files read in 0.01s
5589889 bytes hidden in 0.24s
Output wa in 0.03s
If you attempt to hide too much data, WavSteg will print the minimum number of
LSBs required to hide your data.
Reco data uses the arguments -r, -i, -o, -n, and -b
The following command would recover the hidden data from sound_steg.wav and
save it as output.txt. This requires the size in bytes of the hidden data to
be accurate or the result may be too short or contain extraneous data.
Example:
$ stegolsb wavsteg -r -i sound_steg.wav -o output.txt -n 2 -b 5589889
Files read in 0.02s
Recovered 5589889 bytes in 0.18s
Written output file in 0.00s
LSBSteg uses least significant bit steganography to hide a file in the color
information of an RGB image (.bmp or .png).
For each color channel (e.g., R, G, and B) in each pixel of the image, we
o the least significant bits of the color value with the data from our
file. In order to make reco this data easier, we also hide the file size
of our input file in the first few color channels of the image.
You need Python 3 and Pillow, a fork of the Python Imaging Library (PIL).
Run LSBSteg with the following command line arguments:
Command Line Arguments:
-h, --hide To hide data in an image file
-r, --recover To recover data from an image file
-a, --analyze Print how much data can be hidden within an image [default: False]
-i, --input TEXT Path to an bitmap (.bmp or .png) image
-s, --secret TEXT Path to a file to hide in the image
-o, --output TEXT Path to an output file
-n, --lsb-count INTEGER How many LSBs to use [default: 2]
-c, --compression INTEGER RANGE
1 (best speed) to 9 (smallest file size) [default: 1]
--help Show this message and exit.
Example:
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
# OR
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
# OR
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Before hiding data in an image, it can be useful to see how much data can be
hidden. The following command will achieve this, producing output similar to
$ stegolsb steglsb -a -i input_image.png -s input_file.zip -n 2
Image resolution: (2000, 1100, 3)
Using 2 LSBs, we can hide: 1650000 B
Size of input file: 1566763 B
File size tag: 3 B
The following command will hide data in the input image and write the result to
the steganographed image, producing output similar to
$ stegolsb steglsb -h -i input_image.png -s input_file.zip -o steg.png -n 2 -c 1
Files read in 0.26s
1566763 bytes hidden in 0.31s
Image o in 0.27s
The following command will recover data from the steganographed image and write
the result to the output file, producing output similar to
$ stegolsb steglsb -r -i steg.png -o output_file.zip -n 2
Files read in 0.30s
1566763 bytes recovered in 0.28s
Output file written in 0.00s
StegDetect provides one method for detecting simple steganography in images.
You need Python 3 and Pillow, a fork of the Python Imaging Library (PIL).
Run StegDetect with the following command line arguments:
Command Line Arguments:
-i, --input TEXT Path to an image
-n, --lsb-count INTEGER How many LSBs to display [default: 2]
--help Show this message and exit.
We sum the least significant n bits of the RGB color channels for each pixel
and normalize the result to the range 0-255. This value is then applied to each
color channel for the pixel. Where n is the number of least significant bits to
show, the following command will save the resulting image, appending "_nLSBs"
to the file name, and will produce output similar to the following:
$ stegolsb stegdetect -i input_image.png -n 2
Runtime: 0.63s
开发语言:Python
Star 数:665
该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕Least Significant Bit Steganography for bitmap images (.bmp and .png), WAV sound files, and byte sequences. Simple LSB Steganalysis (LSB extraction) for bitmap images.展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | Steganography - Least Significant Bit Steganography for bitmap ima |
| 所属分类 | CTF思路 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 23:39:56 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 279 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |