猫片(安恒)

猫片(安恒)(100)

图片隐写
hint:LSB BGR NTFS

  • 1

打开题目得到一个名为png的文件,题目提示:hint:LSB BGR NTFS
Winhex查看是PNG格式,于是后缀名改为.png
在这里插入图片描述

  • 2

用Stegsolve分析了一下,发现当RBG(三原色:红蓝绿)分别处于0的时候,图像会很不正常
在这里插入图片描述
于是猜想是RGB隐写,又因为提示为BGR,于是
用Stegsolve的分析模块查看:
在这里插入图片描述

  • 3
    得到了上面的16进制数,复制后保存下来
    不过png图片开头是89504e,所以在HxD打开把前面的删掉
    在这里插入图片描述
  • 4

保存后发现得到一张缺少下半边的半张二维码
在这里插入图片描述

  • 5

对于这种情况可以选择改高度
在这里插入图片描述

从图片的属性可以知道这张图片是280140的,那我们把它改为280280的就行了

将原图片高度位置处的00 8C(8C为140)改为01 18(118为280)即可得到完整的图片
在这里插入图片描述

  • 6

然后使用画图工具反色得到正常的二维码

在这里插入图片描述

二维码扫描出来后是一个百度网盘的链接

  • 7

然后发现画风有点不对劲…
在这里插入图片描述

  • 8

上家伙ntfstreamsedtior

在这里插入图片描述
在这里插入图片描述
导出后是一个pyc文件,在线反编译一下
反编译出来是一个加密的脚本,也就是说写出一个解密的脚本,再运行一下就能出flag了
在这里插入图片描述

  • 9
    脚本如下:
def decode():
    ciphertext = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']
    ciphertext.reverse()
    flag = ''
    for i in range(len(ciphertext)):
        if i % 2 == 0:
            s = int(ciphertext[i]) - 10
        else:
            s = int(ciphertext[i]) + 10
        s=chr(i^s)
        flag += s
    return flag
 
def main():
    flag = decode()
    print(flag)
 
if __name__ == '__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值