参考
CTF Wiki MISC
主要分为几个板块:Recon,Forensic,Stego,Crypto(古典密码)…
Recon:信息收集
Encode(编码转换)
Forensic && Stego(数字取证 && 隐写分析)
一张概图
公开渠道
目标 Web 网页、地理位置、相关组织
组织结构和人员、个人资料、电话、电子邮件
网络配置、安全防护机制的策略和技术细节
通过搜索引擎查找特定安全漏洞或私密信息的方法
Google Hacking Database
科学上网
GoogleHacking
site 指定域名
Intext 正文存在关键字的网页
Intitle 标题存在关键字的网页
Info 一些基本信息
Inurl URL存在关键字的网页
Filetype 搜索指定文件类型
+ 强制包含某个字符进行查询
- 忽略某个字符
""精准匹配某个字符
.匹配单个字符进行查询
*匹配任意字符进行查询
|或者
参见 摩尔斯编码 - 维基百科
特点
.
和 -
;01
串表示。工具
basexx:代表采用多少个字符编码
base64
每6个bit为一个单元,对应某个打印字符
包括26大小写字母/10个数字/±/末尾使用=补齐
base32
base16
XXencode 将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有 24 个 Bit,以
6bit 为单位分为 4 个组,每个组以十进制来表示所出现的数值只会落在 0 到 63 之间。以所对应值的位置字符代替。
具体信息参见XXencoding
参见 URL 编码 。
特点:大量%
表现形式
原文本The
[Hex]: The
[Decimal]: The
\U [Hex]: \U0054\U0068\U0065
\U+ [Hex]: \U+0054\U+0068\U+0065
了解常见的编码
能够对文件中出现的一些编码进行解码,并且对一些特殊的编码(Base64、十六进制、二进制等)有一定的敏感度,对其进行转换并得到最终的 flag。
能够利用脚本语言(Python 等)去操作二进制数据
熟知常见文件的文件格式,尤其是各类 文件头、协议、结构等
灵活运用常见的工具
有的时候需要用 Python 处理二进制数据,比如,存取文件,socket 操作时。这时候,可以使用 Python 的 struct 模块来完成。
struct 模块中最重要的三个函数是 pack()
、unpack()
和 calcsize()
pack(fmt, v1, v2, ...)
按照给定的格式(fmt),把数据封装成字符串(实际上是类似于 c 结构体的字节流)unpack(fmt, string)
按照给定的格式(fmt)解析字节流 string,返回解析出来的 tuplecalcsize(fmt)
计算给定的格式(fmt)占用多少字节的内存这里打包格式 fmt
确定了将变量按照什么方式打包成字节流,其包含了一系列的格式字符串。这里就不再给出不同格式字符串的含义了,详细细节可以参照 Python Doc
>>> import struct
>>> struct.pack('>I',16)
'\x00\x00\x00\x10'
pack
的第一个参数是处理指令,'>I'
的意思是:>
表示字节顺序是 Big-Endian,也就是网络序,I
表示 4 字节无符号整数。
后面的参数个数要和处理指令一致。
读入一个 BMP 文件的前 30 字节,文件头的结构按顺序如下
BM
表示 Windows 位图,BA
表示 OS/2 位图>>> import struct
>>> bmp = '\x42\x4d\x38\x8c\x0a\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x80\x02\x00\x00\x68\x01\x00\x00\x01\x00\x18\x00'
>>> struct.unpack('
data = bytearray(open('challenge.png', 'rb').read())
字节数组就是可变版本的字节
data[0] = '\x89'
是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流,就是说除了主文件流之外还可以有许多非主文件流寄宿在主文件流中。它使用资源派生来维持与文件相关的信息,虽然我们无法看到数据流文件,但是它却是真实存在于我们的系统中的。创建一个数据交换流文件的方法很简单,命令为"宿主文件:准备与宿主文件关联的数据流文件"。
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(Data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
元数据中隐藏信息在比赛中是最基本的一种手法,通常用来隐藏一些关键的 Hint
信息或者是一些重要的如 password
等信息。
这类元数据你可以 右键 --> 属性
去查看, 也可以通过 strings
命令去查看,一般来说,一些隐藏的信息(奇怪的字符串)常常出现在头部或者尾部。
identify
命令,这个命令是用来获取一个或多个图像文件的格式和特性。
-format
用来指定显示的信息,灵活使用它的 -format
参数可以给解题带来不少方便。format 各个参数具体意义
文件格式
89 50 4E 47 0D 0A 1A 0A
+ 数据块 + 数据块 + 数据块…数据块
数据块符号 | 数据块名称 | 多数据块 | 可选否 | 位置限制 |
---|---|---|---|---|
IHDR | 文件头数据块 | 否 | 否 | 第一块 |
cHRM | 基色和白色点数据块 | 否 | 是 | 在 PLTE 和 IDAT 之前 |
gAMA | 图像γ数据块 | 否 | 是 | 在 PLTE 和 IDAT 之前 |
sBIT | 样本有效位数据块 | 否 | 是 | 在 PLTE 和 IDAT 之前 |
PLTE | 调色板数据块 | 否 | 是 | 在 IDAT 之前 |
bKGD | 背景颜色数据块 | 否 | 是 | 在 PLTE 之后 IDAT 之前 |
hIST | 图像直方图数据块 | 否 | 是 | 在 PLTE 之后 IDAT 之前 |
tRNS | 图像透明数据块 | 否 | 是 | 在 PLTE 之后 IDAT 之前 |
oFFs | (专用公共数据块) | 否 | 是 | 在 IDAT 之前 |
pHYs | 物理像素尺寸数据块 | 否 | 是 | 在 IDAT 之前 |
sCAL | (专用公共数据块) | 否 | 是 | 在 IDAT 之前 |
IDAT | 图像数据块 | 是 | 否 | 与其他 IDAT 连续 |
tIME | 图像最后修改时间数据块 | 否 | 是 | 无限制 |
tEXt | 文本信息数据块 | 是 | 是 | 无限制 |
zTXt | 压缩文本数据块 | 是 | 是 | 无限制 |
fRAc | (专用公共数据块) | 是 | 是 | 无限制 |
gIFg | (专用公共数据块) | 是 | 是 | 无限制 |
gIFt | (专用公共数据块) | 是 | 是 | 无限制 |
gIFx | (专用公共数据块) | 是 | 是 | 无限制 |
IEND | 图像结束数据 | 否 | 否 | 最后一个数据块 |
每个数据块有4个部分构成
名称 | 字节数 | 说明 |
---|---|---|
Length(长度) | 4 字节 | 指定数据块中数据域的长度,其长度不超过(231-1)字节 |
Chunk Type Code(数据块类型码) | 4 字节 | 数据块类型码由 ASCII 字母(A - Z 和 a - z)组成 |
Chunk Data(数据块数据) | 可变长度 | 存储按照 Chunk Type Code 指定的数据 |
CRC(循环冗余检测) | 4 字节 | 存储用来检测是否有错误的循环冗余码 |
IHDR(文件头数据块)
包含PNG 文件中存储的图像数据的基本信息,由 13 字节组成,并要作为第一个数据块出现在 PNG 数据流中,而且一个 PNG 数据流中只能有一个文件头数据块
关注前8字节
域的名称 | 字节数 | 说明 |
---|---|---|
Width | 4 bytes | 图像宽度,以像素为单位 |
Height | 4 bytes | 图像高度,以像素为单位 |
PLTE
IDAT
IEND
图像结束数据 IEND(image trailer chunk):它用来标记 PNG 文件或者数据流已经结束,并且必须要放在文件的尾部
其余辅助模块
R=G=B=最大值
时在显示器上产生的白色度LSB
0x00
至 0xFF
,即有 256 种颜色,一共包含了 256 的 3 次方的颜色JPEG 是有损压缩格式,将像素信息用 JPEG 保存成文件再读取出来,其中某些像素值会有少许变化。在保存时有个质量参数可在 0 至 100 之间选择,参数越大图片就越保真,但图片的体积也就越大。一般情况下选择 70 或 80 就足够了
JPEG 没有透明度信息,文件头为FF D8 FF E1,结尾 03 FF D9
JPG 基本数据结构为两大类型:「段」和经过压缩编码的图像数据。
名 称 | 字节数 | 数据 | 说明 |
---|---|---|---|
段 标识 | 1 | FF | 每个新段的开始标识 |
段类型 | 1 | 类型编码(称作标记码) | |
段长 度 | 2 | 包括段内容和段长度本身, 不包括段标识和段类型 | |
段内容 | 2 | ≤65533 字节 |
文件结构
文件头
数据流
文件终结器
文件头
GIF 署名(Signature)和版本号(Version)。GIF 署名用来确认一个文件是否是 GIF 格式的文件,这一部分由三个字符组成:GIF
;文件版本号也是由三个字节组成,可以为 87a
或 89a
。
逻辑屏幕标识符
紧跟在 header 后面。这个块告诉 decoder(解码器)图片需要占用的空间。它的大小固定为 7 个字节,以 canvas width(画布宽度)和 canvas height(画布高度)开始。
全局颜色列表
图像标识符
图像数据
由一系列的输出编码(output codes)构成,它们告诉 decoder(解码器)需要绘制在画布上的每个颜色信息。这些编码以字节码的形式组织在这个块中。
文件终结器
该块为一个单字段块,用来指示该数据流的结束。取固定值 0x3b.
更多参见 gif 格式图片详细解析
空间轴
由于 GIF 的动态特性,由一帧帧的图片构成,所以每一帧的图片,多帧图片间的结合,都成了隐藏信息的一种载体。
时间轴
一般文件结构
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Block Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Block Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Block Body /
/ /* variable length, aligned to 32 bits */ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Block Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
常见块
Section Header BlocK(文件头)
文件的开始
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Byte-Order Magic (0x1A2B3C4D) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Major Version(主版本号) | Minor Version(次版本号) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Section Length |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
/ Options (variable) /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Interface Description Block(接口描述)
描述接口特性
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| LinkType | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SnapLen(每个数据包最大字节数) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
/ Options (variable) /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Packet Block(数据块)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Interface ID | Drops Count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp (High) 标准的Unix格式 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp (Low) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Captured Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Packet Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Packet Data /
/ /* variable length, aligned to 32 bits */ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Options (variable) /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
链接
HTTP
HTTP
( Hyper Text Transfer Protocol
,也称为超文本传输协议) 是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP
是万维网的数据通信的基础。HTTPS
HTTPs = HTTP + SSL / TLS
. 服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据FTP
FTP
( File Transfer Protocol
,即文件传输协议) 是 TCP/IP
协议组中的协议之一。 FTP
协议包括两个组成部分,其一为 FTP
服务器,其二为 FTP
客户端。其中 FTP
服务器用来存储文件,用户可以使用 FTP
客户端通过 FTP
协议访问位于 FTP
服务器上的资源。在开发网站的时候,通常利用 FTP
协议把网页或程序传到 Web
服务器上。此外,由于 FTP
传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下 FTP
协议使用 TCP
端口中的 20
和 21
这两个端口,其中 20
用于传输数据, 21
用于传输控制信息。但是,是否使用 20
作为传输数据的端口与 FTP
使用的传输模式有关,如果采用主动模式,那么数据传输端口就是 20
;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
DNS
DNS
通常为 UDP
协议, 报文格式
+-------------------------------+
| 报文头 |
+-------------------------------+
| 问题 (向服务器提出的查询部分) |
+-------------------------------+
| 回答 (服务器回复的资源记录) |
+-------------------------------+
| 授权 (权威的资源记录) |
+-------------------------------+
| 格外的 (格外的资源记录) |
+-------------------------------+
查询包只有头部和问题两个部分, DNS
收到查询包后,根据查询到的信息追加回答信息、授权机构、额外资源记录,并且修改了包头的相关标识再返回给客户端。
每个 question
部分
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| |
/ QNAME /
/ /
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QTYPE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QCLASS |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
QNAME
:为查询的域名,是可变长的,编码格式为:将域名用. 号划分为多个部分,每个部分前面加上一个字节表示该部分的长度,最后加一个 0
字节表示结束QTYPE
:占 16
位,表示查询类型,共有 16
种,常用值有:1
( A
记录,请求主机 IP
地址)、2
( NS
,请求授权 DNS
服务器)、5
( CNAME
别名查询)WIFI
USB
鼠标移动时表现为连续性,与键盘击键的离散性不一样,不过实际上鼠标动作所产生的数据包也是离散的,毕竟计算机表现的连续性信息都是由大量离散信息构成的
每一个数据包的数据区有四个字节,第一个字节代表按键,当取 0x00 时,代表没有按键、为 0x01 时,代表按左键,为 0x02 时,代表当前按键为右键。第二个字节可以看成是一个 signed byte 类型,其最高位为符号位,当这个值为正时,代表鼠标水平右移多少像素,为负时,代表水平左移多少像素。第三个字节与第二字节类似,代表垂直上下移动的偏移。
得到这些点的信息后, 即可恢复出鼠标移动轨迹
键盘数据包的数据长度为 8 个字节,击键信息集中在第 3 个字节
010Editor: 16进制查看分析器
winhex:
ARCHPR: 爆破rar文件解压密码
小技巧:假如密码为abc+三位数字,破解时选择掩码类型,掩码为abc???
,再把暴力范围设置为数字即可
ziperello :爆破zip文件解压密码
Stegsolve: 图片隐写分析
Stegdetect: 识别加密方式,主要是jpeg的隐写查看
pngcheck: png图像隐写查看
TweakPNG :查看和修改PNG文件的元信息(适用于文件头无法正常打开)
zsteg(kali) LSB隐写分析:把所有的最低位信息显示出来
wbstego: bmp,pdf等其他文件解密隐写
MP3Steno: 音频隐写读取
ntfsstreamseditor NTF:数据流检测和提取
Bftools:
java Extract /root/Desktop/123456.jpg -p 123456
cat
即可Bcompare: 综合对比工具,包括文档,zip等
Cool-edit:音频文件查看编辑
jd-gui jar:文件反编译
Opanda: 图片信息查看器,元数据
Q-research: 二维码查看器,可反色
fireworks :编辑图像,比ps差一点
RouterPassView: 路由文件查看
file命令: 识别文件类型
binwalk :固件扫描分析:自动发掘文件中的隐藏文件
常用的命令
binwalk 文件名(可以用file查看)
提取文件 -e
Foremost: 文件还原工具 :基于文件文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具
crunch 创建字典
格式
crunch [] [options]
-b 指定输出文件的大小 类型有效值为KB、MB、GB、KIB,MIB,和GIB。前三种类型是基于1000,而最后三种类型是基于1024,注意数字与类型之间没有空格
-c 指定输出文件的行数,即包含密码的个数
-d 限制出现相同元素的个数(至少出现元素个数)(“@”代表小写字母,“,”代表大写字符,“%”代表数字,“^”代表特殊字符)
-e 定义停止生产密码
-f 从某文件指定字符集,调用密码库文件
-i 改变输出格式
-o 输出文件名称
-q 读取某文件
-t 指定模式
aircrack-ng: 无线渗透工具破解wep,wpa-psk等加密
文件类型不同
文件头错误
文件合并
zip伪加密 :文件里有一位专门标识了文件是否加密
压缩源文件数据区:50 4B 03 04:这是头文件标记
压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记
3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
操作方法就是搜索504B0102,从50开始第九个,奇数表示加密,偶数表示不加密
rar伪加密:由于头部有校验,使用伪加密打开文件会报错,这时可以尝试伪加密,16进制打开找到第24个字节(一般是7下第二个)尾数为4表示加密,0表示未加密
压缩源文件目录结束标志 :50 4B 05 06:目录结束标记
颜色差别
GIF多帧隐藏:颜色通道,对比隐写
Exif信息隐藏
图片修复:图片头,尾,CRC校验,长宽高修复
最低有效位LSB隐写
图片加密
通常是用某种程序或者某种方法在载体文件中直接附加上需要被隐写的目标,然后将载体文件直接传输给接受者或者发布到网站上,然后接受者者根据方法提取出被隐写的消息,大致有两种经典方式,一是直接附加字符串,二是图种的形式出现。
附加字符串
大致操作
打开图片确认图片是否异常
使用strings检查图片
附上strings的使用大致方法
strings命令在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件很有用。
选项:
-a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
-f –print-file-name:在显示字符串前先显示文件名
-t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制
-e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
当然可以直接使用如winhex,010editor直接打开图片查看 ps:这个好像更简单!
图种
一种采用特殊方式将图片文件(如jpg格式)与rar文件结合起来的文件。该文件一般保存为jpg格式,可以正常显示图片,当有人获取该图片后,可以修改文件的后缀名,将图片改为rar压缩文件,并得到其中的数据。
图种这是一种以图片文件为载体,通常为jpg格式的图片,然后将zip等压缩包文件附加在图片文件后面。因为操作系统识别的过程中是,从文件头标志,到文件的结束标志位,当系统识别到图片的结束标志位后,默认是不再继续识别的,所以我们在通常情况下只能看到它是只是一张图片。
方法就是
先用file命令或者binwalk查看一波图片是不是纯图片
然后可以用binwalk -e或者foremost 来分离图种,也可以直接修改后缀
来个可能没怎么用到的方法 winhex
补充一个zip文件头 50 4B 03 04
先用它打开图片,然后找到这个文件头,从它开始到结尾的数据复制下来,到一个新文件,然后命名为zip格式即可!
文件结构特指的是图片文件的文件结构,这里特别提一下PNG,尤其要掌握的是文件头数据块即IHDR块:包含宽,高,深度,颜色类型,压缩方法等,还有IDAT数据块,存储实际的数据,转义他可以存在多个,多以个对图片影响不大
宽度高度的修改的隐写
修改高度或者宽度
计算crc校验
隐写信息以IDAT块加入图片
利用pngcheck检查
pngcheck -v
LSB,最低有效位,英文是Least Significant Bit
。我们知道图像像素一般是由RGB三原色(即红绿蓝)组成的,每一种颜色占用8位,0x00~0xFF,即一共有256种颜色,一共包含了256的3次方的颜色,颜色太多,而人的肉眼能区分的只有其中一小部分,这导致了当我们修改RGB颜色分量种最低的二进制位的时候,我们的肉眼是区分不出来的。
法宝就是stegsolve,zsteg!!!
简单一点儿的,直接切换通道就可以看到,复杂的需要提取
JPEG图像格式使用离散余弦变换(Discrete Cosine
Transform,DCT)函数来压缩图像,而这个图像压缩方法的核心是:通过识别每个8×8像素块中相邻像素中的重复像素来减少显示图像所需的位数,并使用近似估算法降低其冗余度。因此,我们可以把DCT看作一个用于执行压缩的近似计算方法。因为丢失了部分数据,所以DCT是一种有损压缩(Loss
Compression)技术,但一般不会影响图像的视觉效果。
常见的隐写方法有JSteg、JPHide、Outguess、F5
敲黑板!!!重点工具来了
Stegdetect
通过统计分析技术评估JPEG文件的DCT频率系数
-q 仅显示可能包含隐藏内容的图像。
-n 启用检查JPEG文件头功能,以降低误报率。如果启用,所有带有批注区域的文件将被视为没有被嵌入信息。如果JPEG文件的JFIF标识符中的版本号不是1.1,则禁用OutGuess检测。
-s 修改检测算法的敏感度,该值的默认值为1。检测结果的匹配度与检测算法的敏感度成正比,算法敏感度的值越大,检测出的可疑文件包含敏感信息的可能性越大。
-d 打印带行号的调试信息。
-t 设置要检测哪些隐写工具(默认检测jopi),可设置的选项如下:
j 检测图像中的信息是否是用jsteg嵌入的。
o 检测图像中的信息是否是用outguess嵌入的。
p 检测图像中的信息是否是用jphide嵌入的。
i 检测图像中的信息是否是用invisible secrets嵌入的。
-V 显示软件版本号。
如果检测结果显示该文件可能包含隐藏信息,那么Stegdetect会在检测结果后面使用1~3颗星来标识
隐藏信息存在的可能性大小,3颗星表示隐藏信息存在的可能性最大。
数字水印(digital watermark)技术,是指在数字化的数据内容中嵌入不明显的记号。
特征是,被嵌入的记号通常是不可见或不可察的,但是可以通过计算操作检测或者提取。
压缩方法的核心是:通过识别每个8×8像素块中相邻像素中的重复像素来减少显示图像所需的位数,并使用近似估算法降低其冗余度。因此,我们可以把DCT看作一个用于执行压缩的近似计算方法。因为丢失了部分数据,所以DCT是一种有损压缩(Loss
Compression)技术,但一般不会影响图像的视觉效果。
常见的隐写方法有JSteg、JPHide、Outguess、F5
敲黑板!!!重点工具来了
Stegdetect
通过统计分析技术评估JPEG文件的DCT频率系数
-q 仅显示可能包含隐藏内容的图像。
-n 启用检查JPEG文件头功能,以降低误报率。如果启用,所有带有批注区域的文件将被视为没有被嵌入信息。如果JPEG文件的JFIF标识符中的版本号不是1.1,则禁用OutGuess检测。
-s 修改检测算法的敏感度,该值的默认值为1。检测结果的匹配度与检测算法的敏感度成正比,算法敏感度的值越大,检测出的可疑文件包含敏感信息的可能性越大。
-d 打印带行号的调试信息。
-t 设置要检测哪些隐写工具(默认检测jopi),可设置的选项如下:
j 检测图像中的信息是否是用jsteg嵌入的。
o 检测图像中的信息是否是用outguess嵌入的。
p 检测图像中的信息是否是用jphide嵌入的。
i 检测图像中的信息是否是用invisible secrets嵌入的。
-V 显示软件版本号。
如果检测结果显示该文件可能包含隐藏信息,那么Stegdetect会在检测结果后面使用1~3颗星来标识
隐藏信息存在的可能性大小,3颗星表示隐藏信息存在的可能性最大。
数字水印(digital watermark)技术,是指在数字化的数据内容中嵌入不明显的记号。
特征是,被嵌入的记号通常是不可见或不可察的,但是可以通过计算操作检测或者提取。
容差,在选取颜色时所设置的选取范围,容差越大,选取的范围也越大,其数值是在0-255之间。