猫片(安恒)

猫片(安恒)(100)

图片隐写
hint:LSB BGR NTFS

  • 1

打开题目得到一个名为png的文件,题目提示:hint:LSB BGR NTFS
Winhex查看是PNG格式,于是后缀名改为.png
猫片(安恒)_第1张图片

  • 2

用Stegsolve分析了一下,发现当RBG(三原色:红蓝绿)分别处于0的时候,图像会很不正常
猫片(安恒)_第2张图片
于是猜想是RGB隐写,又因为提示为BGR,于是
用Stegsolve的分析模块查看:
猫片(安恒)_第3张图片

  • 3
    得到了上面的16进制数,复制后保存下来
    不过png图片开头是89504e,所以在HxD打开把前面的删掉
    猫片(安恒)_第4张图片
  • 4

保存后发现得到一张缺少下半边的半张二维码
猫片(安恒)_第5张图片

  • 5

对于这种情况可以选择改高度
猫片(安恒)_第6张图片

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

将原图片高度位置处的00 8C(8C为140)改为01 18(118为280)即可得到完整的图片
猫片(安恒)_第7张图片

  • 6

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

猫片(安恒)_第8张图片

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

  • 7

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

  • 8

上家伙ntfstreamsedtior

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

  • 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()

你可能感兴趣的:(猫片(安恒))