你知道apng吗

题目链接

https://buuoj.cn/challenges#[GKCTF%202021]%E4%BD%A0%E7%9F%A5%E9%81%93apng%E5%90%97

解题过程

在这里插入图片描述
题目是张apng图片

在这里插入图片描述
我不知道apng,百度下:

在这里插入图片描述
在这里插入图片描述所以用Google打开girl.png,是张动画

在这里插入图片描述
里面有四帧图像带二维码,可以用apngdis_gui工具分离图片

在这里插入图片描述
然后找出带二维码的那四张图片识别。
第一张有些扭曲

在这里插入图片描述

在线工具变形-扭曲处理下:

在这里插入图片描述保存图片,用QR research识别:

在这里插入图片描述
flag{a3c7e4e5

第二张的二维码隐藏很深,眼神不好不容易发现呀。用Stegsolve能够识别出来
在这里插入图片描述在这里插入图片描述
扫码为:

-9b9d

第三张很正常
在这里插入图片描述
扫码为:

-ad20

最后一张用QR Research识别
在这里插入图片描述
在这里插入图片描述
解码为:

-0327-288a235370ea}

四部分组合起来,flag为

flag{a3c7e4e5-9b9d-ad20-0327-288a235370ea}

小结

知识点:apng,stegsolve,QRreasearch。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 如果您不知道对象中哪一层包含 PNG,可以使用递归函数来遍历整个对象,找到包含 PNG 的那一层。 以下是一个示例递归函数,可以在 JavaScript 中使用: ```javascript function findLayerWithPNG(obj) { if (typeof obj === 'object') { for (let key in obj) { if (key === 'png') { return obj; } else { const result = findLayerWithPNG(obj[key]); if (result) { return result; } } } } return null; } ``` 这个函数会接收一个对象作为参数,然后递归地遍历它。当找到包含 PNG 的那一层时,函数会返回该层的对象。如果整个对象中都没有找到包含 PNG 的层,则返回 null。 您可以按以下方式调用此函数: ```javascript const obj = { a: { b: { c: { d: { png: 'image.png' } } }, e: { f: { g: { h: { i: { png: 'another-image.png' } } } } } } }; const layer = findLayerWithPNG(obj); console.log(layer); // { d: { png: 'image.png' } } ``` 在这个示例中,函数找到了包含 PNG 的那一层,并返回了该层的对象。 ### 回答2: 要解构一个对象并找到包含 PNG 的哪一层,可以使用递归的方法来进行遍历。以下是一个实现的例子: ```javascript function findPngLayer(obj, currentLayer = '') { for (let key in obj) { const newLayer = currentLayer === '' ? key : `${currentLayer}.${key}`; // 添加新层级信息 if (typeof obj[key] === 'object' && obj[key] !== null) { const result = findPngLayer(obj[key], newLayer); // 递归遍历嵌套的对象 if (result !== '') { return result; // 如果找到了包含 PNG 的层级,直接返回结果 } } else if (typeof obj[key] === 'string' && /\.png$/.test(obj[key])) { return newLayer; // 如果当前值是字符串并且以 .png 结尾,返回当前层级 } } return ''; // 如果没有找到包含 PNG 的层级,返回空字符串 } // 示例使用 const obj = { a: { b: { c: 'example.png' }, d: 'other.png' }, e: 'no.png' }; const result = findPngLayer(obj); console.log(result); // 输出 'a.b.c' ``` 以上代码实现了一个名为 `findPngLayer` 的函数,它接收一个对象作为参数,并通过递归遍历来查找包含 PNG 的层级。在使用时,传入你想要解构的对象并调用该函数即可得到结果。输出的结果是一个字符串,表示包含 PNG 的层级路径。如果没有找到包含 PNG 的层级,返回空字符串。 注意:上述代码是使用 JavaScript 编写的,并假设你正在使用类似的编程语言。如果你使用的是其他编程语言,请相应地进行调整和实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangjin7356

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值