CTF杂项之文件操作与隐写
文件类型识别
1、file命令
当文件没有后缀名,或者后缀名有而无法正常打开时,根据识别出的文件类型 来修改后缀名即可正常打开文件
使用场景:不知道后缀名,无法打开文件
格式:file myheart
myheart 为未知类型文件
2、winhex
通过winhex程序 可以查看文件头类型,根据文件头类型判断出文件类型
是用场景:Windows下通过文件头判断文件类型
各种类型文件对应文件头
JPEG (jpg),文件头:FF D8 FF E0
PNG (png),文件头:89 50 4E 47
GIF (gif),文件头:47 49 46 38 39 61 37 02 (实验吧,64格)
Windows Bitmap (bmp),文件头:42 4D
python反编译文件pyc的头:03 F3 0D 0A (实验吧,py的交易)
pyd的文件头:4D 5A 90 00
ZIP Archive (zip),文件头:50 4B 03 04 ascii码部分是PK,可以直接根据PK判断是zip文件,也有可能是doc文件
rar文件: 52 61 72 21
7z文件头:37 7A BC AF 27 1C (实验吧,有趣的文件)
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
Email [thorough only] (eml),文件头:44656C69766572792D646174653A
Outlook Express (dbx),文件头:CFAD12FEC5FD746F
Outlook (pst),文件头:2142444E
MS Access (mdb),文件头:5374616E64617264204A
WordPerfect (wpd),文件头:FF575043
Postscript (eps.or.ps),文件头:252150532D41646F6265
Adobe Acrobat (pdf),文件头:255044462D312E
Quicken (qdf),文件头:AC9EBD8F
Windows Password (pwl),文件头:E3828596
RAR Archive (rar),文件头:52617221
Wave (wav),文件头:57415645
AVI (avi),文件头:41564920
Real Audio (ram),文件头:2E7261FD
Real Media (rm),文件头:2E524D46
MPEG (mpg),文件头:000001BA
MPEG (mpg),文件头:000001B3
Quicktime (mov),文件头:6D6F6F76
Windows Media (asf),文件头:3026B2758E66CF11
MIDI (mid),文件头:4D546864
pyc反编译网址
3、文件有残缺/错误
通常使用文件无法正常打开有两种情况,一种是文件头部残缺,另一种是文件头部文件字段错误,针对文件头部残缺的情况,winhex程序添加相应的文件,针对头部字段错误,可以找一个相同类型文件进行替换
使用场景:文件头部残缺或者文件头部字段错误无法正常打开文件
判断方法:使用kali输入指令 file myheart 获得回复为 data
文件分离操作
1.Binwalk工具
binwalk是linux下用来分析和分离文件的工具,可以快速分辨文件是否由多个文件合并而成,并将文件进行分离。如果分离成功就会产生一个新的目录
用法
分析文件: binwalk filename
分离文件: binwalk -e filename
2.foremost
如果使用binwalk无法正确分离文件,可以使用foremost,将目标文件复制到kali中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录会按文件类型分离出文件。
用法:
foremost 文件名 -o 输出文件夹
3.dd
当文件自动分离出错或者因其他原因无法自动分离时,可以使用dd实现文件手动分离。
格式
dd if=源文件 of= 目标文件名 bs=1 cout=开始分离字节数
参数说明
if=file #输入文件名,缺省为标椎输入
of=file #输出文件名,缺省为标椎输出
bs=bytes #同时设置读写块的大小为bytes,可代替ibs和obs
skip=blocks #从输入文件开头跳过blocks个块后开始复制
那么我们怎样判断不同的文件的字节呢?
使用binwalk工具进行分析即可
指令为
binwalk filename
4.用 010Editor 截取要分离的部分,然后保存为要分离出的格式
保存
5.010Editor
01将16进制文件保存在一个文件 02 打开010Editor import Hex
分离流量包中的图片
tcpxtract -f 1.pcap
文件合并操作
要是合并之后还是无法打开,在010中观察是不是文件头残缺,如果是添加文件头即可
图片文件的隐写
1、使用kail显示图片隐写内容
首先,将图片导入kali中,使用命令 zsteg nxshen.jpg
即可显示出图片中隐写的内容
2、python脚本来处理
3、TweakPNG
文件头正常却无法打开文件,利用Tweakpng修改CRC
有时CRC没有错误,但是图片的高度或者宽度发生了错误,需要通过CRC计算出正确的高估或者宽度
1
将其替换为正确的CRC
2、CRC无误,但是高度或者宽度不对,可以用python来求出高度
4、Bftools
- bftools用于解密图片信息
- 使用场景:在windows的cmd下,对加密过的图片文件进行解密
- 格式: Bftools.exe decode braincopter 要解密的图片名称 -o 输出文件名
- Bftools.exe run 上一步输出的文件
5、SilenEye
-
- sileneye 是一款将文字或者文件隐藏到图片的解密工具
- 使用场景:windows下打开sileneye工具,点击image->decode,可以查看隐藏文件,点击保存即可
6、JPG图像加密方式的检测工具stegdetect
1)
2)
Jphide是基于最低有效应LSB的jpeg格式图像隐写算法
例
Stegdetect提示jphide加密时,可以用jphs工具进行解密,jpswin.exe, 使用open jpeg打开图片,点击seek,输入密码和确认密码,在弹出文件框中选择要保存的解密文件位置即可,记过保存为TXT文件
7、二维码处理
1)
2)
如果某个二维码的定位点中间是白色,可能被反色了,使用画图工具把颜色反色回来再扫描即可