cipher.jpg(CTF、图片隐写)

cipher.jpg

hint:shift+6

先开始看到键盘上的shift+6对应的^键,但是不知道有什么用。
打开图片,发现无法打开。
在这里插入图片描述

图片无法打开肯定是头文件有问题,
在这里插入图片描述

果然头文件不对。
Jjpg图片的头文件是:FF D8 FF E0 00 10 4A 46 49 46 00 01,用16进制编辑器修改一下
在这里插入图片描述

然而还是不能打开:
在这里插入图片描述

后来突然想起来老师的提示的^异或,我又把87 8E CB F2 78 46 7E 54 31 10 34 13改成了FF D8 FF E0 00 10 4A 46 49 46 00 01,会不会是根据特定的密钥加密的?用python代码试一下:
源代码:

#所有jpg文件的文件头
jpg = 0xFFD8FFE000104A4649460001
#源文件的文件头
garden = 0x878ECBF278467E5431103413
#异或出的密钥
secretKey = hex(jpg ^ garden)
print(secretKey)

代码运行结果:
在这里插入图片描述

发现密钥是8位16进制数:78563412。
接下来重新修改整个图片:
源代码:

#py -3
#coding=utf-8

#以二进制打开图片
f = open('C:/Users/Legends/Desktop/The Garden of sinners.jpg','rb')
#以二进制打开解密后的图片
res = open('C:/Users/Legends/Desktop/cipher.jpg','wb')
i = 1
while i <= 0x6f8c:
    # 每读入4字节作异或操作
    t = int.from_bytes(f.read(4),byteorder='big') ^ 0x78563412
    # 装换成二进制写入图片
    res.write(t.to_bytes(4,byteorder='big'))
    i += 1
f.close()
res.close()

运行结果:
在这里插入图片描述
在这里插入图片描述

成功复原图片:
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值