将安全君呀设为’星标⭐️’
第一时间收到文章更新
声明: 安全君呀 公众号文章中的技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负,与本公众号无关。
文章声明:本篇文章内容部分选取网络,如有侵权,请告知删除。
最近学习了历年江苏省第二届数据安全技术应用职业技能竞赛,现在和大家分享一些初赛题目解析。不到之处欢迎评论留言,笔者定会积极改正。原文放到最后啦。
✅ 解题思路:.wav 音频隐写题全流程
🔍 第一步:初步判断文件类型
-
文件后缀是
.wav,但不代表它一定是标准 WAV 格式。 -
使用
file命令(Linux)或010 Editor查看文件头:
-
-
正常 WAV 文件头应为:
52 49 46 46(即RIFF) -
若文件头异常(如
PK、JFIF、89 50 4E 47等),说明可能伪装成 WAV 的 ZIP、JPG、PNG 等文件。
-
🔍 第二步:音频隐写工具排查(无 Flag 时)
你提到 DeepSound、SilentEye、Audacity 无果,这是正确的第一步。
|
工具 |
用途 |
备注 |
|
DeepSound |
检测是否用 DeepSound 工具加密隐藏数据 |
需密码,若无密码可尝试爆破 |
|
SilentEye |
检测 LSB 隐写 |
支持 WAV、BMP,可尝试密码 |
|
Audacity |
查看频谱图、波形 |
看是否有摩斯电码、频谱图隐藏文字(如 |
|
Sonic Visualiser |
更专业的频谱分析 |
插件多,可查看频谱、音高、节奏等 |
✅ 技巧:在 Audacity 中点击 “频谱图视图”,放大高频区域,看看有没有文字或二维码。
🔍 第三步:十六进制分析(010 Editor)
你提到用 010 打开,这是关键一步。
-
搜索关键字:
-
-
flag、ctf、key、zip、png、jpg、txt、pw、password -
PK(ZIP 文件头) -
IHDR(PNG 文件头) -
JFIF(JPG 文件头) -
FF FB(MP3 帧头)
-
-
若发现
PK或其他文件头,说明文件中嵌入了其他文件。
🔍 第四步:使用 binwalk 分析 & 分离
你提到用 Kali 的 binwalk,这是下一步核心操作。
binwalk file.wav-
输出示例:
DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 RIFF (little-endian) data, WAVE audio 123456 0x1E240 Zip archive data, encrypted, at least v2.0 to extract
-
若有 ZIP 或其他文件,使用:
binwalk -e file.wav或更稳妥地:
foremost -i file.wav -o output_dir
🔍 第五步:若 binwalk 无果?试试手动提取
-
用
010 Editor找到PK开头位置,手动复制十六进制数据,新建文件粘贴保存为.zip,再解压。 -
若加密 ZIP,可尝试:
-
-
弱密码爆破:
zip2john + john -
明文攻击(已知部分明文)
-
🔍 第六步:其他高级技巧(可选)
|
技巧 |
工具 |
场景 |
|
LSB 音频隐写 |
|
检测是否 LSB 隐藏数据 |
|
Morse 码 |
Audacity 看波形 |
短长波形对应滴嗒 |
|
DTMF 拨号音 |
|
音频中是电话按键音 |
|
SSTV 图像 |
|
音频是慢扫描电视信号,可解出图片 |
✅ 总结:解题流程图(建议收藏)
.wav 文件 ↓ file 命令 + 010 Editor 看文件头 ↓ DeepSound / SilentEye / Audacity 无果? ↓ 010 Editor 搜索 'flag', 'PK', 'png', 'zip' 等关键字 ↓ 发现嵌入文件? → 手动提取 or binwalk -e ↓ 得到 ZIP / PNG / TXT → 常规解题(爆破、明文、图片分析) ↓ 无果? → 尝试 LSB(wavsteg)、Morse、SSTV、DTMF 等🔧 附:常用命令速查
# 查看文件类型 file file.wav # binwalk 分析 binwalk file.wav # 自动提取 binwalk -e file.wav # 更稳妥提取 foremost -i file.wav -o out/ # LSB 音频隐写检测(Python) pip install stegano stegano-lsb-set reveal -i file.wav # 或使用 wavsteg(更专业) git clone https://github.com/ragibson/Stegano python -m stegano.wav -r -f file.wav
✅ 实战建议
-
不要迷信工具无果 = 无隐藏,可能只是方式不对。
-
十六进制是王道,很多题就是“藏了个 ZIP”。
-
多试几个工具组合,比如
binwalk + foremost + 手动提取。 -
注意密码提示,有时密码藏在文件名、ID3 标签、频谱图里。
下载附件,解压得到一段以“.wav”结尾的音频,丢进“deepsound”、“silenteye”、“Audacity”均无果,这时候就要使用“010”打开分析一下,看看里面有没有什么关键信息,比如“flag”或者“zip”关键字样,再接着我们也可以丢进“kali”中使用“binwalk”来分析一下,看看里面有没有可以分离的文件。
“DeepSound”无果:
“silenteye”无果
“Audacity”无果:
那就暂时没办法嘛,只能丢进“kali”中简单使用“binwalk”分析一下,发现存在一个残缺的“zip”,但是使用“binwalk -e”还不足以提取出来,那这里我们就尝试使用“foremost -i”(原理跟binwalk -e差不多只不过换了一种提取方式)取音频存在的隐藏文件。
使用命令:
binwalk -e 333.wav --run-as=root
得到:
使用“foremost -i”提取成功,打开发现里面并不是我们之前使用“binwalk”分析出的“zip”,而是又一段’.wav’结尾的音频,不过通过简单分析发现,这个音频并不是之前的音频,(它们的大小不一样)所以这里,我们还是如图上面一样基本的常见“.wav”分析工具都过一遍,最后也是在“Audacity”中发现关键信息!
使用命令:
foremost -i 333.wav -o /root/桌面/123 -T
打开分离出的文件得到两个音频,都简单分析一下即可:
最后也是第二个音频“00006606.wav”中的“Audacity”的“频谱图”发现关键信息!
得到关键信息,pass:stego0626;
它肯定是某某的密码,毕竟都“pass”那也就不言而喻了,那到这里其实就没有什么可以分析的了,因为基本能翻到的想到的也全都尝试了一遍但是都没有效果,但这里突然想到之前使用“binwalk”分析的时候,里面确实有一个残缺的“zip”,没有分离成功,然后才使用“foremost -i”才分离出的“pass”,那我们不妨使用“010”简单定位一下,看看这个”zip“是不是残缺的,因为有时候残缺的使用”foremost“或者”binwalk“是不能直接分离出的,必须手动分离。
使用“010”分析查找“zip”(zip的十六进制——504B0304)
大致简单看一下,发现了关键的信息“flag”,确实是我们心心念念的flag,但是好像这个zip缺少了主要的头部,也就是我们刚刚查找的“504B0304”这个开头,我们可以拿一张正常的“zip”开头做为对比;
正常的“zip”十六进制表示:
不难看出正常的“zip”确实是开头包含着“504B0304”等等,但是这里的我们并没有发现存在,那我们尝试直接补全保存看看难不难正常打开:
直接在“010”中“新建十六进制文件”,选中’zip’的主体内容,右键复制即可:
当然这里既然是缺少“zip”的头部,那我们新建好的同时,可以直接先输入“504B0304”,以防后面需要插入(当然也可以后插入内容,看各位师傅的习惯),粘贴,并且保存格式选择“zip”即可:
最后打开“zip”也确确实实需要密码,那我们输入前面提取出来的密码“pass:stego0626”即可打开:
得到的空白文件,我们可以选中右键“记事本”打开进行分析:
发现并不是我们需要的flag,不过没关系,我们可以选中使用“010”打开再进行分析一下,得到:
发现这个“flag”空白文件的头部,是以“78 9c 4b cb”开头的,通常来说以十六进制 78 9c 4b cb 开头的文件通常是使用 zlib 压缩算法压缩过的文件。
所以我们可以直接添加一个“zlib”后缀,接着再使用“binwalk -e”进行分离,最后发现了flag,使用命令:
binwalk -e flag.zlib --run-as=root成功分离:
打开分离的文件进行分析,最后也是成功得到了flag:
至此:
flag{81633464866e622d275c309b22cb907b}
这里分离并不是唯一的方法,我们可以使用“CyberChef”进行“zlib”解码也是可以解出flag;
操作如下;(当然方法不唯一,看自己喜欢什么)
至此:flag{81633464866e622d275c309b22cb907b}
解题思路
我们找关键的信息,简单来说就是让我们从中找出使用次数最多的软件名称提交即可,那这里我们还是首先简单了解一下什么是“pf”文件吧。
PF文件(Prefetch File)是Windows操作系统中的一种缓存文件,用于加快应用程序的启动速度。每当你在Windows中运行某个应用程序时,系统会创建或更新与该应用程序相关联的PF文件。这个文件记录了该程序启动时所需的资源,包括加载的DLL、文件路径等信息。
主要特点:
存储位置:PF文件通常存储在C:WindowsPrefetch目录下,文件名格式为程序名-哈希值.pf。
加快启动速度:
PF文件通过记录程序启动所需的资源,可以帮助操作系统在下次启动该程序时更快速地加载这些资源,从而加快启动速度。
取证分析:在数字取证中,PF文件可以用于分析用户行为,查看某个程序何时、如何被启动,帮助重建事件时间线。
清理影响:清理PF文件可能会导致应用程序首次启动速度变慢,但对系统的整体性能影响不大。
总结:PF文件是Windows系统用于优化程序启动性能的一种缓存文件,存储在特定目录下,并在程序启动时被创建或更新。在数字取证领域,这些文件也有助于分析用户行为。
那既然已经初步了解到了“pf”文件,我们直接下载附件,打开发现需要密码,哎,一开始还很奇怪,想着题目中也没有密码,主办方也没有给密码,那密码难道被主办方遗忘了?
后面仔细观察发现这个下载的附件,也就是所谓的“zip”名称,既然是一个“base64”编码,那我们直接进行解码,也是成功得出了密码
Base64 编码/解码 – 锤子在线工具
解码得到:
zip密码:IAMPASSWORD
最后也是解压成功了,那我们话又说回来了,想要分析“Prefetch”,到底使用什么工具分析呢?
这里给师傅们总结一下;
PECmd:
用途:PECmd 是一个命令行工具,用于解析和分析Windows Prefetch文件。它可以提取Prefetch文件中的详细信息,如程序的执行时间、路径、关联的DLL等,非常适合进行数字取证分析。
特点:支持批量处理、生成CSV报告,并能够解析多种Windows版本的Prefetch格式。
WinPrefetchView:
用途:WinPrefetchView 是一款简单的GUI工具,用于查看和分析Prefetch文件。它可以快速列出Prefetch目录中的文件,并显示每个文件的详细信息,如程序的启动次数、最后一次运行时间等。
特点:界面友好,操作简单,适合快速查看Prefetch文件内容。
这两个工具是分析Prefetch文件时最常用的,适合不同层次的需求,从简单的查看到深入的取证分析。
那这里我们就先使用“PECmd”来进行分析;
使用命令:
PECmd.exe -d D:最新下载PECmdPrefetch --json output.txt
简单分析一下命令:
就是使用 PECmd 工具来解析位于D:最新下载PECmdPrefetch目录下的 Prefetch 文件,并将输出结果以 JSON 格式保存到output.txt文件中。
得到:
最后也是在当前目录下,发现了我们创建的“output”文件:
选中右键选中“记事本”打开分析即可:
题目让我们查找软件使用次数最多的是,所以我们找的使用次数最多的即可,那这里“RunCount”英文翻译过来就是肯定就是执行了,所以我们只需“Ctrl+F”进行定位“RunCount”即可,一个一个慢慢看,因为它后面会跟着一个数字,那个就是软件执行的次数:
但是发现并不是执行次数最多的,后面陆陆续续发现了还有更多的38、71等等,也是慢慢查找,确定了最多“82”:
至此:
flag{SEARCHFILTERHOST.EXE}接着上面我们使用了“PECmd”来进行分析“Prefetch”,那有点师傅就觉得,哎,这是不是有点麻烦了,又是解析,又是记事本打开查找的,是不是有点太麻烦了?哎!确实还真有比这更so easy的方法,就是我们接下来要说到的工具“WinPrefetchView”。
这边已提取下载好,那我们这里直接打开工具“WinPrefetchView”
接着点击“选项”,选中“高级选项”,更改你的“Prefetch”位置即可,最后点击确认即可。
得到:
我们直接简单给运行次数排个序即可得知,这种方法相比于第一种来说,确实方便了不少,而且更为直观并且清晰的看见。
原文链接:
欢迎大家学习!
Tips
欢迎大家在下面点赞评论加关注,让我们一起在网安之路越走越远!!!