常用工具
-
binwalk
-
foremost
-
winhex
-
010
-
file
-
stegsolve
-
zsteg
-
F5
-
Stegdetect
-
Steghide
-
outguess
-
exiftool
-
stegseek
解题思路
一.未知文件类型
当文件没有后缀名或者有后缀名却无法打开时,我们需要去识别图片类型
1.可以用file命令进行识别
2.通过以下应用查看文件头类型---->然后判断出文件类型
- winhex
- 010
- notepad++
常见文件头如表所示
文件类型 | 文件头 |
---|---|
JPEG(jpg) | FFD8FFE1 |
PNG(png) | 89504E47 |
GIF(gif) | 47494638 |
TIFF(tif) | 49492A00 |
Windows Bitmap(bmp) | 424DC001 |
ZIP Archive(zip) | 504B0304 |
RAR Archive(rar) | 52617221 |
Adobe Photoshop(psd) | 38425053 |
3.文件头 缺失/错误
先用file查看,得到结果data,意思是不知道是什么类型
通常文件无法正常打开有两种情况,一种是文件头部残缺,另一种是文件头部字段错误。
针对文件头部残缺的情况,使用 winhex /010手动补全文件头
针对头部字段错误,可以找一个相同类型的文件进行替换。
二.已知文件类型
题型1:文件分离操作
图片隐写:出题人把很多同类型或者不同类型的文件融合成一个文件----->文件分离操作
1.binwalk工具(命令)
查看文件结构,可以用binwalk -e 来分离文件
如果分离成功会在同目录下生成一个形如_文件名_extracted 的文件目录,目录中有分离后的文件。
linux下的命令binwalk查看图片中有没有隐藏信息(是否包含其他文件)
说明0x0--0x596f范围内的文件是jpeg,后面的是zip
现在的任务是要分离JPEG中的zip
2.foremost工具(命令)
binwalk用不了的时候用foremost
命令格式: foremost 文件名 -o 输出目录名
foremost会把文件夹自动分类,分类后还帮你写个日志
** 3.dd(最难用,最复杂)**
当文件自动分离出错或者因为结构复杂无法自动分离时,可以使用 dd 实现文件手动分离。
半自动化工具,可以实现手动分离
如下图所示情况(此时每个文件都不完整),用前两个工具无法完整的把文件分离出来
用法说明:
dd if=源文件 of=目标文件名 bs=n(长度)count=n(几个) skip=开始分离的字节数
eg:
(1)dd if=1.txt of=2.txt bs=5 count =1
从源文件1.txt里截取内容,创建成一个新文件2.txt,截取的长度为5(从头开始),截取一个(块)
就是12345
(2)dd if=1.txt of=3.txt bs=5 count =2
从源文件1.txt里截取内容,创建成一个新文件3.txt,截取的长度为5(从头开始),截取两个(块)
就是1234567890
(3)如果我不想让他从头开始
dd if=1.txt of=4.txt bs=5 count =3 skip=1
从源文件1.txt里截取内容,创建成一个新文件4.txt,截取的长度为5(从跳过的5个字节后再开始),截取三个(块),跳过第一个块(从头开始)
就是从头开始跳过5个字节,然后截取后面的15个字节
结果就是67890abcdefg
应用:
(1)用命令行进行半手动分离
(2)用010手动存到一个文件夹里
能直接看懂文件头,可以直接修改文件后缀
题型2:文件内容隐写
(1)有的题会直接把内容藏在十六进制里,可以用padnote++查看,或者010,打开直接搜索flag/key/xxxctf.
(2)有的可能藏在属性的详细信息里
(3)多帧隐藏,gif的图片直接在某一帧图片存放明显的flag,可能较快闪过
(4)最低有效位LSB隐写
红绿蓝三原色
一字节8bit
最后一位是最低有效位,改成0/1没有任何区别(对这个颜色没有任何影响)
工具:Stegsolve
Stegsolve打开
先打开cmd,然后输入
应用一:改变最低为0/1,查看data extract
应用二:如果题目给了两张一样/相似的图片,可以试试异或(二维码也可以)
用Image combiner进行XOR,ADD,SUB等操作.异或加减运算
题型3:图片修复
1.文件头尾修复(即未知文件类型)
2.宽高修复
3.CRC校验修复
可以用脚本自行破解宽高(ps:只适合常见的12:16)
可能是文件的宽或高发生错误,需要用CRRC来计算出正确的宽高
脚本“2.png”是可改文件名,crc就用原先错误的冗余码就可以
题型4:图片加密
难在1.不知加密方式2.找不到解密工具
以下是一些用过的解密工具:
1.firework
当你用 winhex 打开文件时会看到文件头部中包含 firework 的标识,通过 firework 可以找到隐藏图片。
2.exiftool
3.wbstego4工具(有点麻烦)
支持的文件格式更多
continue--》decode---》展示支持的文件类型(bmp)--》(”画图“工具可以转换图片类型)复制文件地址--》输入密码---》创建新文件---》打开新文件(notepad)(遇到乱码--》用16进制打开)
*支持的文件类型
4.python脚本
JPG解密
1.Slienteye
2.Stegdetect-JPEG
Stegdetect
程序主要用于分析 JPEG 文件,能检测出通过 Steg
、JPHide
、OutGuess
、Invisible Secrets
、F5
、appendX
和 Camouflage
等隐写工具隐藏的信息。
3.
4.outguess 命令:outguess -k '密码' -r 图片 flag.txt(导出的flag存放地),然后直接cat flag.txt
5.
6.stegseek 命令:stegseek 图片 rockyou.txt
png解密
3.zsteg
可以查看png&bmp图象,能看到其中的LSB结构
会把所有可能隐藏的文本信息都列出来
gif图片
1.convert命令
convert cake.gif cake.png
2.identify查看时间间隔
identify -format "%s %T \n" test.gif
二维码
直接使用CQR.exe打开二维码图片,找到内容字段
tips:如果二维码某个定位角被覆盖了,该工具有时候也可以自动识别,如果识别失败,需要使用PS或画图工具将另外几个角的定位符移动到相应的位置,补全二维码。
除此之外,二维码还有很多不同的类型
常见二维码种类:
- 汉信码
- QRCode
- PDF417
- Data Matrix
- Grid Matrix
- Aztec code
QRCode
QRCode 是由日本 Denso-Wave 公司于 1994 年研制的一种矩阵二维码,现已成为世界上最流行的二维码码制之一。QRCode 是英文 Quick Response Code (快速响应)的缩写,超高速识读特点是 QRCode 区别于 PDF417、Data Matrix 等二维码的主要特性。
QRCode 最多可容纳多达7089个数字字符、4296个字母字符或2953 字节的数据。具备四种纠错等级:7%、15%、25% 、30%,即使它被遮挡了一部分,也能被设备正常识别。
Grid Matrix
Grid Matrix Code 是一种由中国研发的二维码,现已成为二维码国家标准并在2007年获得信息产业部科技进步奖。
Grid Matrix 外观整体由一个正方形组成,正方形中包含许多由更小的正方形组成的矩阵。由于矩阵中的方块在深色和浅色之间交替,因此形似一个小棋盘,因此又被称为网格矩阵码。Grid Matrix 专门设计用于对中文字符进行编码,因为可以对整个 GB2312-1980 字符集以及 ASCII 进行编码。
Data Matrix
Data Matrix 原名 Data code,由美国国际资料公司(International Data Matrix) 于 1989 年发明。该二维码最大特点就是密度高,其尺寸是所有同类条码中最小的码,可在仅仅25mm²的面积上编码30个数字。由于小巧的特点,其主要用于小型零件、电子产品和制药行业等。Data Matrix 可以存储最多 3116 个数字、2335 个字母 或 1556 字节的数据。
PDF417代码
PDF417 码是由美国 Symbol Technologies 公司于 1991 年发明的一种堆叠式二维码(由线性条形码堆叠而成),广泛地应用在交通运输、工商业、金融、海关及政府管理等领域。 PDF 是英文 Portable Data File 单词首字母的缩写,意为“便携数据文件”。PDF417 码可用于存储字母、数字、ASCII,中文等多种字符,理论上可容纳 1850 个字母数字字符,2710 个数字或 1108 个字节。
Han Xin
汉信码是中国开发的一种二维码标准,由中国物品编码中心以及相关单位合作开发完成。如今,汉信码已经成为中国和国际二维码标准之一。 汉信码是目前唯一一个全面支持我国汉字信息编码 GB18030 的二维码码制,信息容量也更大,最多可表示 7829 个数字、4350 个 ASCII 字符、2174 个汉字 或 3262 字节的信息。 汉信码具备四种纠错等级:8%、15%、23% 、30%,不输QR码。抗污损、抗畸变识读能力强,特别适合在恶劣条件下使用。
Aztec Code
Aztec Code 中文称阿兹特克码,是由 Andrew Longacre,jr 和 Robert hussey 与 1995 年发明的二维码。该二维码构筑在方形网格上,其中心有一个“牛眼”图案用以定位,由于中心图案与阿兹特克金字塔相似,因此得名 Aztec code。 Aztec code 通常用于机票和其他旅行证件。最多可存储 3823 个数字、3067 个字母 或 1914 字节的数据。
除此之外还有些没见到过的二维码种类
数据矩阵
这数据矩阵码 其边缘有一个 L 形取景器图案。
其模式识别功能使扫描仪能够轻松水平或垂直读取嵌入的数据。
自 1989 年推出以来,数据矩阵码已经取得了长足的进步。
现在广泛应用于产品标签,特别是食品生产、药品和电子零件生产公司。
使用此类条形码,用户最多可以嵌入各种语言的 2,335 个字母数字或图形字符。
这就是为什么它具有更高的容错能力,即使在外观损坏 25% 的情况下,扫描仪仍然可以访问嵌入的数据。
马克西码
MaxiCode 受到联合包裹服务公司 (UPS) 的欢迎和独家使用,用于监控和管理包裹运输。
其圆形符号看起来酷似靶心,使其在其他二维条码中脱颖而出。
虽然其他的装饰有方形像素和取景器图案,但 MaxiCode 的符号被点图案包围。
对于未经训练的人来说,它们看起来只是一簇点。但当仔细观察时,这些点实际上形成了六边形图案。
每个点簇对于代码的可扫描性都起着重要作用。其中包括 MaxiCode 的查找器模式、纠错功能和数据加密区域。
而且与其他二维条码相比,MaxiCode 的存储容量相对较小。
用户可以嵌入 93 个字母数字字符和 138 个数字字符,这足以对包裹的地址或位置数据(例如国家/地区代码)进行编码。
另一方面,MaxiCode 的固定尺寸为 1 英寸 x 1 英寸。
点码
顾名思义,DotCode 由点组成,其中数据、纠错和模式检测均经过加密。
但 DotCode 并没有像当今大多数二维条形码那样将点压缩成正方形,而是向侧面延伸,形成矩形外观。
尽管其存储容量仍未知,但 DotCodes 肯定可以对 7 位和 8 位 ASCII 字符以及其他特殊字符进行编码,从而允许用户存储更大容量的数据。
以上就是全部,解码网站