取证隐写

取证隐写

bytearray字节数组

将文件以二进制数组的形式读取

data = bytearray(open('test.png','rb').read())

图片分析

图像分析设计到文件复杂的格式,以及涉及到元数据,信息丢失和无损压缩,校验,隐写或者可视化数据编码的分析解密

元数据

描述数据的数据,主要是描述数据属性的信息,通常隐藏一些hint,password

右键属性,strings命令都可以查看到隐藏信息(文件头或者文件尾)

identify 命令

获取一个或多个图像文件的格式和特性

identify -verbose test.png		//查看图片的详细信息

-format指定显示的信息

identify -format “%wx%h” image.jpg		//只查看图片的宽高 以像素为单位

像素值转化

给了一串

255,255,255,255,255...........

RGB,将其转化成图片

from PIL import Image
import re

x = 307 #x坐标  通过对txt里的行数进行整数分解
y = 311 #y坐标  x*y = 行数

rgb1 = [****]
print len(rgb1)/3
m=0
for i in xrange(0,x):
    for j in xrange(0,y):

        line = rgb1[(3*m):(3*(m+1))]#获取一行
        m+=1
        rgb = line

        im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))#rgb转化为像素
im.show()
im.save("flag.png")

PNG

文件头

文件类型 文件头 文件尾 特征
PNG (png) 89 50 4E 47 AE 42 60 82 .PNG...

文件头+关键数据块+辅助数据块

png文件的每个数据块由4个部分组成:

Length(长度),Chunk Type Code(数据块类型码),Chunk Data(数据块数据),CRC(循环冗余检测)

文件头数据块IHDR的前8个字节,课通过010来修改宽高

image-20241219155452687

JPG

  • JPEG 是有损压缩格式,将像素信息用 JPEG 保存成文件再读取出来,其中某些像素值会有少许变化。在保存时有个质量参数可在 0 至 100 之间选择,参数越大图片就越保真,但图片的体积也就越大。一般情况下选择 70 或 80 就足够了
  • JPEG 没有透明度信息

0xffd80xffd9为 JPG 文件的开始结束的标志

文件头

文件类型 文件头 文件尾 特征
JPEG (jpg) FFD8FF ÿØÿà

GIF

文件头

文件类型 文件头 文件尾 特征
GIF (gif) 47494638 00 3B GIF89a

空间轴

gif 动态图片,是由一帧帧图片构成,是多帧图片的结合,所以每帧图片都有可能隐藏着信息

convert命令

将每一帧分割开

$ convert cake.gif cake.png
$ ls
cake-0.png  cake-1.png  cake-2.png  cake-3.png  cake.gif

时间轴

gif 文件的每一帧时间的间隔 也可能隐藏着信息

可以用 identify 命令清晰的打印出每一帧的时间间隔

identify -format "%s %T \n" test.gif

image-20241219165502092

最后转 ASCII 码得到 flag

音频隐写

MP3隐写,LSB隐写,波形隐写,频谱隐写等

MP3隐写

Mp3Stego工具

encode -E hidden_text.txt -P pass svega.wav svega_stego.mp3
decode -X -P pass svega_stego.mp3

image-20241219165849683

波形隐写

就是观察波形的规律将其进一步转化成01字符串

image-20241219170604935

频谱

音频中的频谱隐写是将字符串隐藏在频谱中,此类音频通常会有一个较明显的特征,听起来是一段杂音或者比较刺耳。

image-20241219170728059

LSB 音频隐写

silenteye工具

image-20241219171912522

posted @ 2024-12-19 17:20  Yolololololo  阅读(3)  评论(0编辑  收藏  举报