Misc之图片隐写
Misc之图片隐写
根据涅普计划-ctf入门课做的笔记
视频b站地址:https://www.bilibili.com/video/BV1VA411u7Tg?p=2
Misc介绍
主要类型:
- 数据编码/图形密码
- 图片隐写
- 音频&视频隐写
- 流量分析
- 内存取证
- 游戏隐写
Misc必备知识
010editor介绍
alt+4
打开/隐藏模板
右下角OVR/INS
覆盖或插入
图片十六进制文件头+文件模板
文件名 | 文件头 | 文件尾 |
---|---|---|
JPEG (jpg) | FFD8FF | FFD9 |
PNG (png) | 89504E47 | AE426082 |
GIF (gif) | 47494638 | 003B |
ZIP Archive (zip) | 504B0304 | 50 4B |
TIFF (tif) | 49492A00 | |
Windows Bitmap (bmp) | 424D | |
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 Word/Excel (xls.or.doc) | D0CF11E0 | |
MS Access (mdb) | 5374616E64617264204A | |
WordPerfect (wpd) | FF575043 | |
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 |
图片隐写分类
-
右击属性
-
文件十六进制末尾藏有字符串
jpg文件尾
FFD9
后加kali命令: strings 查找可打印字符 grep grep -a ""
使用正则表达式搜索,并输出匹配的行file 识别文件类型 -
文件包含
binwalk
分离文件:
binwalk file
binwalk -e file
foremost
提取文件:
foremost file
dd
:在包含多个文件时,使用dd
分出想要获得的文件010editor也可
-
修改文件头:(黑心老板删掉文件头,致不能使用文件)
-
GIF
-
特殊帧(ps/stegsolve)
-
帧的时间间隔
通过时间间隔,可能是密码
-
-
png(bmp)
-
zlib(010/pngcheck)
IDAT后zlib加密
import zlib s = ''' 78 9C 4B CB 49 4C AF 4E 4B 36 32 4D 4E 4A 32 4F B2 30 B5 34 B5 4C 4B 35 30 36 37 B6 30 32 31 4C B4 34 4B 4A 33 32 4E A9 05 00 E9 E2 0B 5F D0 1C 68 ''' s = s.replace(' ','').replace('\n','') b = bytes.fromhex(s) flag = zlib.decompress(b) print(flag)
kali中使用
binwalk
也可发现zlib加密binwalk -e
直接生成 -
IHDR、IDAT
一般来说修改height,修改width会导致图片花掉
可通过CRC-32校验和观察是否修改过
脚本爆破
import os import binascii import struct misc = open("IHDR.png","rb").read() #print(misc[0x0c:0x0f+1]) # 爆破高 crc32_bytes = misc[0x1d:0x20+1]# 读出bytes crc32_hex_eval = eval('0x' + crc32_bytes.hex())#bytes串 -> hex串 -> 值 print(crc32_hex_eval) for i in range(4096): data = misc[0x0c:0x0f+1] + misc[0x10:0x13+1] + struct.pack('>i',i)+ misc[0x18:0x1c+1] #IHDR数据 crc32 = binascii.crc32(data) & 0xffffffff if crc32 == crc32_hex_eval : #IHDR块的crc32值 print(i) print("height_hex:"+ hex(i))
-
lsb隐写/lsb加密(zsteg/stegsolve)
stegsolve的使用方法:https://www.cnblogs.com/cat47/p/11483478.html
通道不同,图片上方不同,可能存在lsb隐写
可以发现存在一张png,
Save Bin
zsteg xxx.png
zsteg -a xxx.png
zsteg -e 通道 xxx.png -> xxxx.png
lsb加密要用到lsb.py好像是python2的文件在python3环境里运行不了
-
wbsStego4.3open(bmp)
decode/encode
-
-
双图隐写
-
stegpy
-
silenteye