隐写术
图转种
在信息安全课时,由隐写术的概念突然想起了一种有趣的远古网民发车方式——图种,就由此为引,做了些关于隐写术的进一步探索。
制作图种的方式十分简单,一条命令行就可实现:
然后打开CMD
输入 copy /b 1.jpg+2.rar 3.jpg 按回车
目录下就多了个3.jpg(这个就是和1.jpg一模一样,但内置压缩种子的图片了)
提取种子方法:
1、另存为图片。
2、修改后缀为rar。
3、进行解压缩。
原理也十分清晰,就直接将两个文件合并成一个文件,由于更改不同的文件后缀名,就会使用不同的程序打开,得出的合成文件就由后缀名以图像形式呈现。
那如何确定一个文件的真实文件类型呢?在Linux系统下直接可以file指令查看出,也可以通过WinHex查看文件的结构。
文件名通常包括主文件名和后缀名两部分,它是为了方便让人类理解文件的内容和类型而存在的。
事实上,有一个东西叫做魔法数字(Magic Number,简称“魔数”)[1]。它是某一类型的文件的头一个或几个字节的内容即文件头标识。计算机可以根据它的值判断文件的类型(即使文件的后缀名被错误地更改过)。
例如,jpg 文件的魔法数字的十六进制形式是 ff d8 ff e0;而 gif 文件的魔法数字的十六进制形式是 47 49 46 38。
你可以用(WinHex)十六进制编辑器打开文件,然后对照魔法数字表来确定文件类型。
而这就是简单的隐写术的应用。
隐写术定义
隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文叫做Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著作Steganographia,该书书名源于希腊语,意为“隐秘书写”。
一般来说,隐写的信息看起来像一些其他的东西,例如一张购物清单,一篇文章,一篇图画或者其他“伪装”(cover)的消息。
隐写的信息通常用一些传统的方法进行加密,然后用某种方法修改一个“伪装文本”(covertext),使其包含被加密过的消息,形成所谓的“隐秘文本”(stegotext)。例如,文字的大小、间距、字体,或者掩饰文本的其他特性可以被修改来包含隐藏的信息。只有接收者知道所使用的隐藏技术,才能够恢覆信息,然后对其进行解密。
隐写术与电子水印
首先在概述隐写术时必须提到它的近亲兄弟电子水印(Watermarking),水印用于识别物品的真伪(比如:新台币上面翻转隐约可见到梅花、人民币上面的隐约可见的毛泽东头像),或者作为著作权声明的标志,或者加入作品属性信息。电子水印与隐写术的相同点是,二者都是将一个文件隐写至另一个文件当中,而两者的区别在于使用目的与处理算法的不同。电子隐写侧重将秘密文件隐藏,而电子水印则较重视著作权的声明与维护,防止多媒体作品被非法复制等等。电子隐写术一旦被识破,则秘密文件十分容易被读取,相反,电子水印不隐藏及隐写文件的隐蔽性,而在乎加强(Robustness)除去算法的攻击。
现代隐写术
载体文件(cover file)相对隐秘文件的大小(指数据含量,以比特计)越大,隐藏后者就越加容易。
因为这个原因,数字图像(包含有大量的数据)在网际网路和其他传媒上被广泛用于隐藏消息。这种方法使用的广泛程度无从查考。例如:一个24位的位图中的每个像素的三个颜色份量(红,绿和蓝)各使用8个比特来表示。如果我们只考虑蓝色的话,就是说有28种不同的数值来表示深浅不同的蓝色。而像11111111和11111110这两个值所表示的蓝色,人眼几乎无法区分。因此,这个最低有效位就可以用来存储颜色之外的信息,而且在某种程度上几乎是检测不到的。如果对红色和绿色进行同样的操作,就可以在差不多三个像素中存储一个字节的信息。
更正式一点地说,使隐写的信息难以探测的,也就是保证“有效载荷”(需要被隐蔽的信号)对“载体”(即原始的信号)的调制对载体的影响看起来(理想状况下甚至在统计上)可以忽略。这就是说,这种改变应该无法与载体中的噪声加以区别。
(从信息论的观点来看,这就是说信道的容量必须大于传输“表面上”的信号的需求。这就叫做信道的冗馀。对于一幅数字图像,这种冗馀可能是成像单元的杂讯;对于数字音频,可能是录音或者放大设备所产生的噪声。任何有著模拟放大级的系统都会有所谓的热噪声(或称“1/f”噪声),这可以用作掩饰。另外,有损压缩技术(如JPEG)会在解压后的数据中引入一些误差,利用这些误差作隐写术用途也是可能的。)
隐写术也可以用作数字水印,这里一条消息(往往只是一个标识符)被隐藏到一幅图像中,使得其来源能够被跟踪或校验。但往往隐写术不具有良好的强健性,当图像被稍微修改后,隐入的消息就无法提取校验了。
(上述定义引致维基百科)
具体使用
01 隐写术
隐写术(Steganography)是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或信息的内容。隐写术的起源可以追溯到动植物界中存在的 “拟态”,是一种很好的自我保护方式。
与加密技术相比,隐写术的主要特点为:隐藏传输的信息是嵌入在一个看似无关联的载体上进行的。而加密通信是通过算法的伪装使信息不可破解。由于隐写术选择的信息载体具有迷惑性,而其信息本身仍然可以使用算法进行混淆,因此,隐写术的检测比一般加密算法的破解更复杂。
具体场景可参见囚徒模型
Simmons 在 1983 年提出的监狱通信问题。在该问题中隐写被定义为 Alice 与 Bob 建立一条监听者 Wendy 无法发现的隐蔽通信线路即 Alice 将秘密信息在嵌入密钥的控制下,通过嵌入算法将隐秘信息隐藏于载体中形成隐密载体, 隐密载体再通过监狱通
道传输给 Bob, Bob 利用密钥从隐密载体中恢复出秘密信息的过程。由于隐写可以将秘密信息隐藏到任何一种正常多媒体报文中,因而报文在网上传输时不会引起监听者的注意,从而达
到麻痹监听者的目的,即使监听者预知含有秘密信息的载体也很难将信息提取和还原出来。
历史应用
第一个有记录的隐写技术案例可以追溯到公元前499年,当时希腊暴君希西亚斯剃了他的奴隶头,并在上面“标记”(可能是纹身)了一条秘密信息。这封信是给阿里斯塔戈拉斯的,是要他开始反抗波斯人。希西亚斯等着奴隶的头发长回来,才把他送走。当奴隶到达阿里斯塔戈拉斯时,他的头再次被剃光,以揭示隐藏的信息。
在古代,隐写术又叫密写术,古人用明矾水在纸上写字,晾干后看不出痕迹,但只要浸入水中字迹就能显示出来,这是简单的化学原理的应用。除了明矾,古人也用米汤水写字,再用碘酒显形。
到了互联网时代,计算机的普及使隐写术又有了质的飞跃。现代隐写术的发展,主要表现在几个分支:语言隐写、数字媒体信息隐藏、文件系统隐写术、网络流量隐写等。
语言隐写主要是通过对载体文字语言的段落、语序或更换同义词的方式来完成的。数字媒体隐写利用了修改编码、修改显著位使信息暂时不可见,或是将隐藏信息写入到一些不显著位,难以察觉地替换了原有信息并将替换方法告知接收方从而提取隐藏信息。文件系统隐写是指利用当前文件系统的特殊技巧,使隐藏信息的文件不会正常显示出来。网络流量隐写指将数据重新拆分编码为独立的数据流,并将其混入不易察觉的网络流量中进行发送。
02 数字水印
数字水印技术,是指将特定的信息嵌入数字信号中,用来体现版权所有者的技术。数字信号可能是音频、图片或视频等。数字水印可分为浮现式和隐藏式两种,前者是可被看见的水印,一般来说,浮现式的水印通常包含版权拥有者的名称或标志。电视台在画面角落所放置的标志,也是浮现式水印的一种。隐藏式水印是隐写术的一种信息隐藏方法,用来避免数字媒体文件未经授权的拷贝和使用。
因为数字水印的在日常生活中的普遍使用和其代表版权的重要作用,也要求其有如下几个特性。
安全性:水印信息应当难以篡改和伪造。
隐蔽性:水印对感官不可知觉,水印的嵌入不能影响被保护数据的可用性大大降低。不具备这一特性的水印,称为可见水印。
强健性:水印能够抵御对嵌入后数据的一定操作,而不因为一些细微的操作而磨灭。包括数据的传输中产生的个别位错误、图像 / 视频 / 音频的压缩。不具备这一特性的水印,称为脆弱水印。
水印容量:载体可以嵌入水印的信息量大小。
水印生成技术:伪随机生成、扩频水印生成、混沌水印生成、纠错编码水印生成、基于分解的水印生成、基于变换的水印生成、多分辨率水印生成和自适应水印生成等。
水印的嵌入技术:加性和乘性嵌入、量化嵌入、替换嵌入、自适应嵌入等。
水印的检测技术:分为 3 种不同假设方法的实现,即对待检测信号的统计特性的假设、噪声的统计特性的假设和对嵌入技术的假设。
03 文本隐写
文本隐写即是在文本中添加隐藏信息内容,对于不同的载体内容,可分为两类:有格式文本隐写和无格式文本隐写。
有格式文本隐写,如 word、html 等文件格式,文本内容可以被加上各种语法而表示为不同的显示方式,因此有较多的隐写途径。如设字体颜色与背景色相同起到混淆作用、将字体变小到肉眼难以察觉、用不同的语言隐藏信息、将信息隐藏到注释中等方法。同时也可将信息利用拆分重编码的方式转换成更多更小的信息块,甚至转化为二进制数后以多种方式表示为 0 和 1,如每行行首是否有空格、每行行间距为单倍还是 1.5 倍、每个字字间距倍数,字体的大小和颜色等都可以作为信息的隐藏方式。
无格式文本隐写,如 txt 等纯文本文件,隐藏信息的方式也有多种,如每个字间的空格、标点符号的布局、单词和拼音的首字母组等方式,也可能是大量可读或不可读文本中隐藏了一小句关键信息等。
零宽字节
是一种不可打印的 Unicode 字符, 在浏览器等环境不可见, 但是真是存在, 获取字符串长度时也会占位置, 表示某一种控制功能的字符
04 图片隐写
图片隐写即是在图片中添加隐藏信息,信息可以隐藏在图片头部、图片中间以及图片末尾的等地方。
隐藏在头部,可以是图片信息的摘要、日期、作者、标题等说明信息。
- 直接附加字符串,写图片结束符之后
- 图片与其它文件结合,如图种
- 基于文件结构
主要讲PNG图片的文件结构
PNG,图像文件存储格式,其设计目的是试图替代 GIF 和 TIFF 文件格式,同时增加一些 GIF 文件格式所不具备的特性。是一种位图文件 (bitmap file) 存储格式,读作“ping”。PNG 用来存储灰度图像时,灰度图像的深度可多到 16 位,存储彩色图像时,彩色图像的深度可多到 48 位,并且还可存储多到 16 位的α通道数据。对于一个正常的 PNG 图片来讲,其文件头总是由固定的字节来表示的,其 16 进制表示为 89 50 4E 47 0D 0A 1A 0A,这一部分称作 PNG 文件头。
标准的 PNG 文件结构应包括:1.PNG 文件标识2.PNG 数据块 PNG 图片有两种数据块的,一种是关键数据块,另一种是辅助数据块。正常的关键数据块,定义了 4 种标准数据块,分别是长度,数据块类型码,数据块数据,循环冗余检测即 CRC,每个 PNG 文件都必须包含它们。
我们这里重点先了解一下,PNG 图片文件头数据块以及 PNG 图片 IDAT 块,这次的隐写也是以这两个地方为基础的。
PNG 图片文件头数据块
即 IHDR(Image HeaDeR),这是 PNG 图片的第一个数据块,一张 PNG 图片仅有一个 IHDR 数据块,它包含了图片的宽,高,图像深度,颜色类型,压缩方法等等信息。(即定义图片数据流的读取规则)
PNG 图片 IDAT(Image DATa) 数据块
它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。这是一个可以存在多个数据块类型的数据块。它的作用就是存储着图像真正的数据。因为它是可以存在多个的,所以即使我们写入一个多余的 IDAT 也不会明显影响肉眼对图片的观察。高度被修改引起的隐写刚才我们了解到,IHDR 中定义了图片的高度和宽度,可以通过修改高度值或宽度值对部分信息进行隐藏。
如果图片原本是 800(宽)600(高),然后图片的高度从 600 变成 500,这样下面 800×100 区域的信息就无法从图片中显示出来,我们可见的只有上方 800500 的区域,这样就达成了图片隐写的目的。同理可知图片的宽度也可以进行类似的修改以达到隐藏信息的目的。
为了还原图片,可以利用 winhex 或者 010Editor 等编辑器打开图片。但我们推荐后者,因为它提供了不同文件的模板,通过加载 png 模板,我们可以直观的知道哪里是 PNG 的长度字段或宽度字段,它提供了 hex 字符串到字段名的映射,更便于我们进行修改。在修改文件后,需要利用 CRC Calculator 对 CRC 校验码进行重新计算赋值,以防图片被修改后,自身的 CRC 校验报错,导致图片不能正常打开。
图片中加入 IDAT 块以实现隐写
刚才我们提到过一个图片的 IDAT 块是可以存在多个的,这也导致我们可以利用添加 IDAT 块的方式来实现信息的隐写。
利用 PNGcheck 软件可以验证 PNG 文件的完整性,利用 pngcheck -v a.jpg 可以对图片的文件结构进行检测。
文件结构中可能会存在 size=0 的 IDAT 块,这说明相应的块是无法用肉眼看到的,也即隐藏的内容。
- 基于LSB原理隐写
LSB,最低有效位,英文是Least Significant Bit 。我们知道图像像素一般是由RGB三原色(即红绿蓝)组成的,每一种颜色占用8位,0x00~0xFF,即一共有256种颜色,一共包含了256的3次方的颜色,颜色太多,而人的肉眼能区分的只有其中一小部分,这导致了当我们修改RGB颜色分量中最低的二进制位的时候,我们的肉眼是区分不出来的
注:jpg 是有损压缩,无法 LSB 隐藏信息;png 虽有压缩却是无损的,bmp 没有被压缩,这两者都可用 LSB 隐藏信息。
简单的LSB隐写这种隐写仅对于某一通道值进行改写。将要隐写的信息图片直接覆盖该通道的相应值,即可实现信息的隐写。这种方式利用Stegsolve变换图层即可实现还原,相比而言隐秘性较低。
有一点难度的LSB隐写最简单的隐写我们只需要通过工具Stegsolve切换到不同通道,可以直接看到隐写内容了,那么更复杂一点就不是这么直接了,而是只能通过工具来查看LSB的隐写痕迹,再通过工具或者脚本的方式提取隐写信息。
隐藏在图片中,可以根据图片格式的特殊性质,在每一个模块的最后添加隐藏信息而不破坏原图的显示,或添加在一些特殊作用不被显示的模块中以达到隐藏效果。同时,也可以采用一些隐写算法进行写入,如典型空域隐写中的 LSB 隐写,将隐藏信息转化为二进制数据,以较低位按位写入信息的方法,将数据写入而不引起较大的色差。扩张方法还有 MLSB,对多位隐写减少被发现的可能性。此外,还有 DCT 域隐写,利用多点比较的逻辑结果隐藏二进制 0 或 1,较常见的有 Jsteg 隐写、F5 隐写、OutGuess 隐写、MB 隐写等算法。
隐藏在图片末尾,由于图片格式的规定,用一些特殊字符作为图片的结尾,在这一字符后的部分不再被当作图片内容处理,因此,可以将任意多的隐藏信息写在图片末尾而对图片的显示没有任何影响。网上流传的将图片后缀名改为 zip 即可解压的文件就是在正常图片后面追加了一个 zip 文件做成的。
1. StegSolve
最经典的图片隐藏信息查看工具是一款 Java 环境下的小工具 StegSolve。该工具不仅可以自动分析图片格式,得出隐藏在文件头、文件块、文件末尾等处的冗余信息,还可以按位查看图片,分析其中的隐藏内容,也支持双图比较,用于得出图片差隐藏的信息。对于动态图片,StegSolve 可以将其分解为单帧保存查看,是一款用于隐写图片分析的强大工具。
2. Binwalk
Binwalk 本身是一款文件分析工具,可用来提取文件及帮助完成逆向工程等工作。通过自定义签名,提取规则和插件模块,且有很强的可扩展性。在这里同样可以利用 Binwalk 分析图片中隐藏的文件。对于上述图片,可以执行如下命令。
binwalk(图片名)
得到分析结果如下。
>binwalk puppy.png * suggest: you'd better to input the parameters enclosed in double quotes. DECIMAL HEXADECIMAL DESCRIPTION ------------------------------------------------------------------------------- 0 0x0 PNG image,256 x 256,8-bit/color RGBA,non-interlaced 41 0x29 Zlib compressed data,default compression 49613 0xC1CD RAR archive data,first volume type: MAIN_HEAD
从结果中可以看出该文件从 0~40 位为 PNG 图片的头部信息,标注了其规格和位数。从 40~49 612 位为 Zlib 压缩数据,其中,PNG、Gzip、Zlib 用的是同一种压缩算法 default,因此,这一块也就是 PNG 图片的数据部分。而最后 49 613~文件末尾还有一块却标注了 RAR 格式数据,这并不属于 PNG 的正常文件部分,因此它是隐藏数据信息,同样可利用如下命令分离每一块数据部分。
binwalk –e(图片名)
得到一个_(图片名).extracted 文件夹,其中为原图分离出来的各个部分内容,可以看到之前分析得到的隐藏数据压缩包,在对其解压得到的 txt 文件中发现了隐藏内容。
- 基于DCT域的JPG图片隐写
JPEG图像格式使用离散余弦变换(Discrete Cosine Transform,DCT)函数来压缩图像,而这个图像压缩方法的核心是:通过识别每个8×8像素块中相邻像素的重复像素来减少显示图像所需的位数,并使用近似估算法降低其冗余度。因此,我们可以把DCT看作一个用于执行压缩的近似计算方法。因为丢失了部分数据,所以DCT是一种有损压缩(Loss Compression)技术,但一般不会影响图像的视觉效果。(有点CNN的影子)
在这个隐写家族中,常见的隐写方法有JSteg、JPHide、Outguess、F5等等
Stegdetect实现JPEG图像Jphide隐写算法工具有多个,比如由Neils Provos开发通过统计分析技术评估JPEG文件的DCT频率系数的隐写工具Stegdetect,它可以检测到通过JSteg、JPHide、OutGuess、Invisible Secrets、F5、appendX和Camouflage等这些隐写工具隐藏的信息,并且还具有基于字典暴力破解密码方法提取通过Jphide、outguess和jsteg-shell方式嵌入的隐藏信息。
JPHS一款JPEG图像的信息隐藏软件JPHS,它是由Allan Latham开发设计实现在Windows和Linux系统平台针对有损压缩JPEG文件进行信息加密隐藏和探测提取的工具。软件里面主要包含了两个程序JPHIDE和JPSEEK, JPHIDE程序主要是实现将信息文件加密隐藏到JPEG图像功能,而JPSEEK程序主要实现从用JPHIDE程序加密隐藏得到的JPEG图像探测提取信息文件,Windows版本的JPHS里的JPHSWIN程序具有图形化操作界面且具备JPHIDE和JPSEEK的功能。
OutguessOutgusee算法是Niels Provos针对Jsteg算法的缺陷提出的一种方法:
1.嵌入过程不修改ECT系数值为0,1的DCT系数,利用为随机数发生器产生间隔以决定下一个要嵌入的DCT系数的位置
2.纠正过程消除对效应的出现对应的,也有针对该算法的隐写工具,名字也叫Outguess。对于这种隐写方法的还原,首先利用Stegdetect对图片进行检测,判断该图片利用的是何种隐写方式。然后针对不同的隐写方式,选择对应的工具进行信息的还原。比如利用JPHS还原jphide隐写,利用Outguess还原outguess隐写等等。
- 数字水印
数字水印(digital watermark)技术,是指在数字化的数据内容中嵌入不明显的记号。特征是被嵌入的记号通常是不可见或不可察的,但是可以通过计算操作检测或者提取。
盲水印与傅里叶变换
盲水印,是指人感知不到的水印,包括看不到或听不见(没错,数字盲水印也能够用于音频)。其主要应用于音像作品、数字图书等,目的是,在不破坏原始作品的情况下,实现版权的防护与追踪。
对图像进行傅里叶变换,起始是一个二维离散傅里叶变换,图像的频率是指图像灰度变换的强烈程度,将二维图像由空间域变为频域后,图像上的每个点的值都变成了复数,也就是所谓的复频域,通过复数的实部和虚部,可以计算出幅值和相位,计算幅值即对复数取模值,将取模值后的矩阵显示出来,即为其频谱图。但是问题来了,复数取模后,数字有可能变的很大,远大于255,如果数据超过255,则在显示图像的时候会都当做255来处理,图像就成了全白色。因此,一般会对模值再取对数,在在0~255的范围内进行归一化,这样才能够准确的反映到图像上,发现数据之间的差别,区分高频和低频分量,这也是进行傅里叶变换的意义。
- 容差比较的隐写
容差,指的是在选取颜色时所设置的选取范围,容差越大,选取的范围也越大,其数值是在0-255之间。
在隐写术方面,可以根据容差进行信息的隐藏。若是有两张图片,则对两张图片的每一个像素点进行对比,设置一个容差的阈值α,超出这个阈值的像素点RGB值设置为(255,255,255),若是没超过阈值,则设置该像素点的RGB值为(0,0,0)。因此,通过调整不同的α值,可以使对比生成的图片呈现不同的画面。比如两张图完全一样,设置阈值α为任何值,最后得到的对比图都只会是全黑。若两张图每一个像素点都不同,阈值α设置为1,则对比图将是全白。如果将隐藏信息附加到某些像素点上,这时调整阈值α即可看到隐藏信息。
如果是一张图片,则根据每一像素点周围像素的值进行判断,同样设置一个阈值,若当前像素点超过周围像素点的均值,或者其它的某种规则,则将该像素点RGB值置为(255,255,255),反之则不进行处理,或者设置为全0.这样也可以获得隐藏的信息。
05 音频隐写
同图片一样,存在着大量冗余信息和噪声的音频同样可以用来隐藏信息,不同于图片对每个点的像素进行描述,音频是对每一个时间点的声音信息进行描述,并且该声音中仍旧存在 “不重要信息位”,利用对它的修改,可以达到信息隐藏的目的。
此外,音频也存在着一些有趣的隐写方式,如将另一段需要隐藏的音频减小音量、降低频率等处理后插入原有音频,或加入多个声道。也可以将其反转、快放、慢放等方式使其变得不引人注目,从而达到隐藏目的。
另一种方法,还可以在其波形图中加入信息,同样,在音频的频谱图中也可以隐藏信息,如图 5 所示是通过频谱图分析得到的效果。
一些对应的工具:
1. Audacity
Audacity 是一款免费的音频处理软件,其操作界面简单却有着专业的音频处理能力。它支持 WAV、MP3、Ogg Vorbis 或其他的声音文件格式,支持 MP4、MOV、WMA、M4A、AC3 等视频格式,可用于录音与放音,对声音做剪切、复制、粘贴(可撤消无限次数),波封编辑杂音消除,支持多音轨混音、多声道模式,采样率最高可至 96 kHz,每个取样点可以以 24 bit 表示。在隐写分析上,其操作简单、显示效果直观,便于分析和测试。
2. FFmpeg
FFmpeg 是一套可以用来记录、转换数字音频和视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频 / 视频编解码库 libavcodec,支持 Windows 和 Linux 平台,可以用于视频等文件的隐写及分析。
06 隐写术在数据恢复方面的应用
1. TestDisk
TestDisk 是一款开源磁盘修复工具,可以修复由于软件缺陷或某些病毒导致的分区丢失或分区表丢失导致磁盘无法启动的问题。TestDisk 通过 BIOS(DOS/Win9x)或操作系统(Linux、FreeBSD)查询硬盘特性(LBA 大小和 CHS 参数)。然后会快速检查磁盘数据结构并恢复分区表,同时也能用来恢复误删除的文件。图 6 所示为使用 TestDiskgui 版本恢复已删除文件。
2. Pcapfix
Pcapfix 是一款修复损坏 pcap 文件的工具。它会检查一个完整的 pcap 全局头,如果有任何损坏字节,就会修复它,如果缺少一个字节,它会创建和补充一个新的字节到文件的开头,然后试图找到 pcap 头并检查和修复它。使用方法如下。
pcapfix x.x.0(c)2012-2021 Robert Krause
Usage: pcapfix[OPTIONS]filename
OPTIONS: -d ,--deep-scan Deep scan(pcap only)
-n ,--pcapng force pcapng format
-o<file>,--outfile<file> set output file name
-t<nr> ,--data-link-type<nr> Data link type
-v ,--verbose Verbose output
3. Winhex
Winhex 是一款 Windows 平台下功能强大的十六进制文件编辑器,利用该软件,可以查看和修改文件存储在硬盘中的具体数值,甚至是内存中程序动态存放的数值也可以进行操作。利用该工具可以查看基于文件格式的隐藏数据。
其它应用
同时隐写术还有很多其它有趣的应用,比如互联网大厂的内网添加透明的员工工号便于后续查找泄密员工;991恐怖分子通过隐写术,将相关信息隐藏在某个网站首页,以此进行信息的传递;以及计算机取证技术中通过隐写术的反应用,识别出反取证的数据的数据隐藏(常见的反取证技术主要包括数据销毁和数据隐藏。例如数据销毁技术常见于:覆写法、消磁法、捣碎法/剪碎法以及焚毁法;数据隐藏技术则常见于:数据加密、更改⽂件扩展名、隐写术以及改变系统环境。)。
附录
前端零宽字节实现文字隐写
高深莫测的"隐写术"并不是黑客特工的专属 - 我用前端实现的隐写,非常有意思❗
隐写术入门参考