隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期 的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文 叫做Steganography,来源于特里特米乌斯的一本讲述密码学与隐写术的著 作Steganographia,该书书名源于希腊语,意为“隐秘书写”。
HexWorkshop
Stegsolve
Binwalk
dd命令
正常的jpg图片是以FF D9结尾的,结尾 之后的东西不会被作为图片显示。图片查 看器会忽视后面的东西,不会影响正常显 示。 使用copy /b a.jpg+b.zip 3.jpg 会生成图 种,更改后缀名即可解压或查看源文件。 当然这只是针对添加的文件是压缩文件的 情况,添加的文件也可以是其他图片,比 如两张图片叠加。这时需要用binwalk 可 以获得更详细的信息。
总而言之:如果图片进制结尾不是FF D9,就有可能藏有文件。
一种常见的方式是利用LSB来进行隐写,LSB 也就是最低有效位 (LeastSignificant Bit)。 原理就是图片中的像数一般是由三种颜色组成, 即三原色,由这三种原色可以组成其他各种颜 色,例如在PNG图片的储存中,每个颜色会 有8bit,LSB隐写就是修改了像数中的最低的 1bit,在人眼看来是看不出来区别的,也把信 息隐藏起来了。 譬如我们想把’A’隐藏进来的话,如下图,就 可以把A转成16进制的0x61再转成二进制的 01100001,再修改为红色通道的最低位为这 些二进制串
用hexworkshop打开,我们会发现他和普通的GIF图片不一 样,头部缺少了东西,在对比一些文档,会发现是少了 GIF8
我们手动修复一下,增加GIF8。
然后浏览图片后会发现,有个PASSWORD一闪而过,gif和别的图片最大的区别就是gif是动态图, 它是可以由多帧组成的可以顺序播放的,有的题就是把播放的时间弄得特别慢,几乎就不会动的, 所以我们可以用工具一帧一帧的观察图片。Stegsolve就带有这种功能。 Stegsolve——Analyse——Frame Brower就可以看到是有8帧的图片
用16进制编辑工具更改图片的高度,会只显示图片的一部分,下面的部分就被隐藏了,是 个藏东西的好办法 找表示宽度和高度的位置的话,可以先看看图片的属性,得到宽高值,转成16进制,搜索 16进制值就找到了
用hexworkshop打开
因此将高度中的01改为02保存即可(如果不知道具体的宽高,可以修改成较大的宽高值)
如果你拿到了一个如右下图一样像一堆坐标的 东西,不要慌。这只是RGB值而已,借助 python的PIL图片处理库即可轻松解决。
运行下图脚本,即可得到flag图片。当然在 这之前,记得先将RGB点个数因数分解一下, 从而确 定图片的长宽