0%

谁不喜欢猫猫呢 WP

2025-07-23 09:07By
tongnian
像素处理MISC图片隐写

Problem: [HGAME 2022 week3]谁不喜欢猫猫呢

思路

  • 解题大致思路
    下载附件得到一张图片,使用ctf-ly 进行分析一下,检测到尾部有信息,提取一下
    NSSIMAGE
    目前没有什么信息了
    NSSIMAGE
    使用ps查看,放大查看发现等距离像素点,应该是等距离像素点隐写,使用ctf-ly 进行提取一下
    NSSIMAGE
    NSSIMAGE
    NSSIMAGE

观察发现每个带颜色的点都间隔4像素点,写一下提取脚本

from PIL import Image

img = Image.open('a.png')
width, height = img.size
pixs_list = []
for w in range(2, width, 5):
for h in range(2, height, 5):
pix = img.getpixel((w, h))
pixs_list.append(pix)
new_width, new_height = 43, 43
new_img = Image.new('RGB', (new_width, new_height))
idx = 0
for n_w in range(new_width):
for n_h in range(new_height):
new_img.putpixel((n_w, n_h), pixs_list[idx])
idx += 1
new_img.save('b.png')
new_img.show()

拿到新图片,根据第一个等距离像素点隐写得到的参数,一眼猫脸变换
NSSIMAGE
使用ctf-ly 处理一下
NSSIMAGE
拿到新图片
NSSIMAGE
npiet解密,拿到信息
NSSIMAGE
将两个list文件的数字进行相加,写一下脚本
list1 = [776686, 749573, 6395443, 2522866, 279584, 587965, 4012670, 1645156, 2184634]
list2 = [6065523, 6419830, 1421837, 5103682, 5963053, 2842996, 1113825, 1594064, 4578755]

sum_list = [x + y for x, y in zip(list1, list2)]
print(sum_list)
[6842209, 7169403, 7817280, 7626548, 6242637, 3430961, 5126495, 3239220, 6763389]

没有发现什么,尝试转化为二进制
list1 = [776686, 749573, 6395443, 2522866, 279584, 587965, 4012670, 1645156, 2184634]
list2 = [6065523, 6419830, 1421837, 5103682, 5963053, 2842996, 1113825, 1594064, 4578755]

result = [(x + y, f"{x + y:b}") for x, y in zip(list1, list2)]

for dec, binary in result:
print(f"十进制: {dec} → 二进制: {binary}")

第一个二进制是11010000110011101100001,查询一下位数,发现是23位
NSSIMAGE
因为数据往往需要按固定长度存储(如 8/16/24/32/64 位),这里是23位,我们需要补0,(往前面补)

list1 = [776686, 749573, 6395443, 2522866, 279584, 587965, 4012670, 1645156, 2184634]
list2 = [6065523, 6419830, 1421837, 5103682, 5963053, 2842996, 1113825, 1594064, 4578755]

for i in range(0,9):
result = list1[i]+list2[i]
print('{:024b}'.format(result))
简单处理一下
NSSIMAGE
最后就是二进制转字符串了
NSSIMAGE

flag: NSSCTF{wH@t_4_AM4Z1N9_1m4g3}

还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有
加载失败
广告
×
评论区
添加新评论