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打开乱点慢慢试
补全文件头/恢复文件头
将错误的文件头或者是缺少的文件头变成正确的
音频隐写
利用工具分析音波图
一般会结合摩斯密码和其他密码知识

浙公网安备 33010602011771号