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 Binzsteg xxx.png
zsteg -a xxx.pngzsteg -e 通道 xxx.png -> xxxx.pnglsb加密要用到lsb.py好像是python2的文件在python3环境里运行不了
-
wbsStego4.3open(bmp)
decode/encode
-
-
双图隐写
-
stegpy
-
silenteye

浙公网安备 33010602011771号