Misc

文档隐写

word隐写

首先记住可以将后缀改为zip然后解压获得一些资源

然后是字体里可以设置隐藏,先ctrl+A找一找试试

当然也可能直接摆在状态栏上,比如字体名称之类的

然后如果文本很长,观察一下是不是满足01性质,考虑转换10进制或培根密码

zip相关

伪加密

数据区:

50 4B 03 04是zip文件头标记

后面一般还有14 00表示解压文件所需的pkware版本,这不重要

然后是重要的有无加密标记,偶数代表无加密,奇数代表有加密,但是一般都是0009表示加密,改成0000即可

目录区:

50 4B 01 02是头标记

后面基本也跟着1400

同样的有一个标记有无加密的地方 如果是伪加密这个也要改成0000

暴力破解

根据提示使用ARCHPR工具破解即可

图像隐写

常见的一些文件头

JPG:FF D8 FF E1

PNG: 89 50 4E 47

GIF: 47 49 46 38

ZIP: 50 4B 03 04

常见文件尾

JPG: FF D9

PNG: AE 42 60 82

GIF: 00 3B

ZIP:50 4B

PNG格式相关

17-20未是图像的宽(一般是第二行的第三、四对)

21-24是图像的高(第二行的第七、八对)

如何恢复正常宽高?

利用crc值判断,枚举宽高即可

import zlib
import struct
import argparse
import itertools


parser = argparse.ArgumentParser()
parser.add_argument("-f", type=str, default=None, required=True,
                    help="输入同级目录下图片的名称")
args  = parser.parse_args()


bin_data = open(args.f, 'rb').read()
crc32key = zlib.crc32(bin_data[12:29]) # 计算crc
original_crc32 = int(bin_data[29:33].hex(), 16) # 原始crc

if crc32key == original_crc32: # 计算crc对比原始crc
    print('宽高没有问题!')
else:
    input_ = input("宽高被改了, 是否CRC爆破宽高? (Y/n):")
    if input_ not in ["Y", "y", ""]:
        exit()
    else: 
        for i, j in itertools.product(range(4095), range(4095)): # 理论上0x FF FF FF FF,但考虑到屏幕实际/cpu,0x 0F FF就差不多了,也就是4095宽度和高度
            data = bin_data[12:16] + struct.pack('>i', i) + struct.pack('>i', j) + bin_data[24:29]
            crc32 = zlib.crc32(data)
            if(crc32 == original_crc32): # 计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
                print(f"\nCRC32: {hex(original_crc32)}")
                print(f"宽度: {i}, hex: {hex(i)}")
                print(f"高度: {j}, hex: {hex(j)}")
                exit(0)

EXIF隐写

右键属性查看

难一点的需要利用网站查看

GIF分帧率

将GIF一帧一帧抽出来看

可能还需要单独改某一帧的宽高才行

二维码

利用工具扫一扫就好了

文件分离

Linux下的binwalk和foremost指令

相对来说foremost更厉害一点,可以分离出一些binwalk分离不出的文件

LSB最低有效位

stegsolve打开乱点慢慢试

补全文件头/恢复文件头

将错误的文件头或者是缺少的文件头变成正确的

音频隐写

利用工具分析音波图

一般会结合摩斯密码和其他密码知识

posted @ 2024-02-19 10:45  Liooooo  阅读(6)  评论(0编辑  收藏  举报