猫片(安恒)(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()