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反编译网址

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)

如果某个二维码的定位点中间是白色,可能被反色了,使用画图工具把颜色反色回来再扫描即可