前言

本文出于本人方便查询回忆的考虑并没有针对其他人进行阅读内容优化.由于本人技术有限,若有地方存在瑕疵或错误.欢迎👏指出,本人将虚心学习.谢谢!


命令类

  • strings

    打印文件中可打印的字符。
    作用:可找出图片中隐写的字符串

  • grep

    用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。
    输入grep -a "flag" xxx.jpg
    则会把文件中含”flag”字符串部分前后显示出来。

  • file
    用于辨识文件类型
    可以显示文件的格式,属性等信息。

  • binwalk
    用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具,即可以查看文件中含有的其他文件。
    在CTF中binwalk常用于分析隐藏文件
    参数:

    • -e 分离出文件到新文件夹中,使用此参数还需带上--run-as=root(但可能不全)
  • foremost(很拉)
    提取文件

进制类

用010 editor(winhex也行,不过我是Mac用户)打开分析

建议看看这篇文章.常用文件头文件尾记录📝 有助于你在16进制中对文件头或文件尾的识别和修复.

例如

  • 在文件尾后直接隐写内容.
  • 文件头修改,破坏,伪加密等

其他类

  • 隐藏帧

  • 长高不匹配,CRC错误

  • 数据块IDAT修改

  • LSB隐写(“最低有效位隐写”)

不带密钥:
zsteg(检测PNG和BMP图片里的隐写数据)

用法

用法: zsteg [options] filename.png [param_string]

-c, --通道 X通道(R/G/B/A)或任何组合,逗号分隔                                 有效值:R,G,B,A,Rg,Bgr,Rgba,R3G2b3,...-l, --limit 检查的N个限制字节,0 = 无限制(默认:256)。-b, --bits N位数,单个int值或'1,3,5'或范围'1-8'。                                 高级:指定单个比特,如'00001110'或'0x88'。    --lsb 最小有效的BIT在前    --msb最重要的BIT在前--P, --素数 只分析/提取素数字节/像素    --invert invert bits (XOR 0xff)-a, --全部尝试所有已知的方法-o, --order X像素迭代顺序(默认:'auto')。                                 有效值。ALL,xy,yx,XY,YX,xY,Xy,bY,...--E, --extract NAME提取指定的有效载荷,NAME类似于 "1b,rgb,lsb    --[no-]file 使用'file'命令来检测数据类型(默认:YES)    --no-strings 禁用ASCII字符串查找(默认:启用)-s, --strings X ASCII 字符串查找模式:第一、全部、最长、无                                 (默认:第一个)-n, --min-str-len X 最小字符串长度(默认:8)    --shift N prepend N zero bits-v, --verbose 冗长地运行(可以多次使用)。-q, --quiet 沉默任何警告(可以多次使用)。-C, --[no-]color 强制(或禁用)彩色输出(默认:自动)。

params快捷方式
zsteg fname.png 2b,b,lsb,xy ==> —位数 2 —通道 b —lsb —顺序 xy

英文原版:

Usage: zsteg [options] filename.png [param_string]

-c, --channels X                 channels (R/G/B/A) or any combination, comma separated                                 valid values: r,g,b,a,rg,bgr,rgba,r3g2b3,...-l, --limit N                    limit bytes checked, 0 = no limit (default: 256)-b, --bits N                     number of bits, single int value or '1,3,5' or range '1-8'                                 advanced: specify individual bits like '00001110' or '0x88'    --lsb                        least significant BIT comes first    --msb                        most significant BIT comes first-P, --prime                      analyze/extract only prime bytes/pixels    --invert                     invert bits (XOR 0xff)-a, --all                        try all known methods-o, --order X                    pixel iteration order (default: 'auto')                                 valid values: ALL,xy,yx,XY,YX,xY,Xy,bY,...-E, --extract NAME               extract specified payload, NAME is like '1b,rgb,lsb'    --[no-]file                  use 'file' command to detect data type (default: YES)    --no-strings                 disable ASCII strings finding (default: enabled)-s, --strings X                  ASCII strings find mode: first, all, longest, none                                 (default: first)-n, --min-str-len X              minimum string length (default: 8)    --shift N                    prepend N zero bits-v, --verbose                    Run verbosely (can be used multiple times)-q, --quiet                      Silent any warnings (can be used multiple times)-C, --[no-]color                 Force (or disable) color output (default: auto)

PARAMS SHORTCUT
zsteg fname.png 2b,b,lsb,xy ==> —bits 2 —channel b —lsb —order xy

例如: zsteg xx.png 分析出 abc file:PNG image data ,只需 zsteg -e abc > output.png 得到文件📃

带密钥:

使用cloacked-pixel脚本

本人弄不好环境略.