文章总结: 本文是CTF隐写术入门教程,涵盖LSB隐写、图片结构隐写、音频隐写和文件分离四大题型。核心要点包括:LSB通过修改像素最低有效位隐藏信息;图片隐写涉及文件头分析、图种拼接和EXIF元数据;音频隐写包含频谱分析和波形隐写;文件分离需使用binwalk、foremost等工具。文章提供了详细的操作命令和工具速查表,适合新手快速掌握隐写术基础。 综合评分: 85 文章分类: CTF,安全培训
三、LSB隐写详解
LSB(Least Significant Bit,最低有效位)是最基础也最高频的隐写手法。每个像素由R、G、B三个字节组成(24位真彩色),修改每个字节的最低位(即最低1个比特),人眼根本无法察觉颜色变化,却能存储大量信息。一张1920×1080的图片,LSB隐写可存储约1920×1080×3÷8 ≈ 777,600字节(约760KB)的秘密数据。
LSB隐写的提取方式有两种:按行扫描(从上到下、从左到右提取每个像素的LSB)和按颜色通道提取(分别提取R/G/B通道的LSB信息)。Stegsolve工具可以非常方便地完成这些操作。 ▎ Stegsolve工具详解
Stegsolve是CTFer人手必备的图片隐写分析工具,基于Java开发。它的核心功能包括:
# Stegsolve启动java -jar stegsolve.jar# 基础操作1. File->Open 载入图片2. 左右箭头切换RGB/Alpha通道3. Analyse->Data Extract LSB提取4. Bit Order: LSB First/MSB First5. Plane: RGB/BGR/RGBA6. Preview预览,出现flag即成功
▎ Python手动实现LSB提取
理解LSB原理后,用Python手动实现能加深认识。核心思路:加载图片像素矩阵,提取每个颜色通道的最低位,拼接成二进制数据后转回ASCII。
from PIL import Imagedef extract_lsb(p): img=Image.open(p) pix=img.load() b=[] for y in range(img.height): for x in range(img.width): r,g,b=pix[x,y][:3] b+=str(r&1),str(g&1),str(b&1) s="".join(b) return "".join([chr(int(s[i:i+8],2)) for i in range(0,len(s)-7,8)])print(extract_lsb("stego.png"))
四、音频隐写
音频隐写在CTF中虽然没有图片隐写常见,但几乎是每场大赛的”必出题型”。最典型的两种手法:频谱隐写和波形隐写。 ▎ 频谱隐写(Spectrogram)
频谱隐写是将文字或二维码隐藏在音频文件的频谱图中。用Audacity打开音频文件,切换到频谱图视图(Spectrogram),就能看到隐藏在频域中的图案——通常是一个二维码或一串文字。
# Audacity音频隐写频谱查看1. File->Open 载入音频2. 选中轨道,左侧切换Spectrogram频谱图3. Settings->Scale->Linear4. 调整Window Size窗口大小5. 出现二维码截图扫码获取flag
▎ 波形隐写与摩斯电码 有些音频隐写将信息编码为摩斯电码形式的嘀嗒声,或通过波形的振幅变化来编码二进制数据。用Audacity查看波形图,识别出长音(-)和短音(.)即可还原出摩斯电码。
# 摩斯解码在线工具:https://morsecode.world/international/decoder/audio-decoder-adaptive.html.-=A -...=B -.-.=C -..=D.=E ..-.=F --.=G ....=H..=I .---=J -.-=K .-..=L--=M -.=N ---=O .--.=P--.-=Q .-.=R ...=S -=T..-=U ...-=V .--=W -..-=X-.--=Y --..=Z
五、文件隐藏与分离
很多CTF隐写题会将多个文件拼接在一起(如图片尾部附加ZIP、ZIP中嵌套其他文件),需要专门的工具来检测和分离。掌握以下工具能应对绝大部分文件分离场景。
# binwalkbinwalk mystery.pngbinwalk -e mystery.png# foremostforemost -i mystery.png -o output/# 字符串检索strings mystery.png | grep -i "flag\|ctf\|{"# zsteg LSB隐写zsteg -a mystery.png# 查看文件尾部tail -c 1000 mystery.png | xxdstrings mystery.png | tail -20
六、隐写常用工具速查
| 工具 | 适用场景 | 下载/安装 | | — | — | — | | Stegsolve | 图片通道分析/LSB提取 | GitHub搜索stegsolve.jar | | zsteg | PNG/BMP自动LSB检测 | gem install zsteg | | binwalk | 固件/文件嵌入式分析 | apt install binwalk | | foremost | 按文件头分离文件 | apt install foremost | | Audacity | 音频波形/频谱分析 | apt install audacity | | exiftool | EXIF元数据提取 | apt install libimage-exiftool-perl | | strings | 提取文件中可见字符串 | 内置(binutils) | | 010 Editor | 十六进制编辑器 | 商业软件/在线试用 |
常见踩坑 ❌ 只检查文件扩展名,不检查文件头 — 文件可能被改后缀 ❌ Stegsolve只遍历RGB通道,漏掉了Alpha通道或灰度位图 ❌ 音频文件只听了声音没看频谱图 — 漏掉频谱隐写 ❌ 找到可疑数据但没注意提取顺序(Bit Order / Plan Order) ❌ 忘记检查图片尾部是否有附加文件(用tail -c看最后几百字节)
防守要点 企业应阻止员工在网络中传输未经审核的图片/音频文件 对敏感文件的图片输出做LSB清洗(随机化最低位) 文件上传功能应检查文件头与扩展名是否一致 使用内容安全检测系统扫描上传文件中的嵌入式数据
觉得有用?点个在看支持一下
下期预告:取证分析 — 内存取证、磁盘取证、流量分析、Volatility实战。初学者也能上手的数字取证全流程。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全值班室 安全值班室 安全值班室《CTF入门|第6期 隐写术入门》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论