banner
Vinking

Vinking

你写下的每一个BUG 都是人类反抗被人工智能统治的一颗子弹

新年游戏解谜

今年的新年游戏到这里就告一段落了,感谢各位的参与,再次祝大家新年快乐。

游戏的解析#

首先给出本次游戏的解谜过程:

感谢 @电脑星人 大佬非常详细的解析。原本提前写好了一些解谜的主要过程,但是大佬写的比我好多了,这里就直接放出文章的链接,想要了解详细解谜过程的同学可以去看一下😂。

一些数据#

今年的游戏从 1 月 20 号开始一共持续了 12 天,按照规则提交密码 49 次,一共有 5 位同学拿到了红包。在 1 月 21 号 13 点 23 分,谜题首先由 @FantasyLand の 暗梦 同学成功破解。另外有位同学使用脚本来遍历提交答案,一共提交了 540 次答案,由于事先设置了 QPS 限制再加上发现得比较及时所以只对这位同学的 IP 做了短暂的限制。

后话#

为什么隐写信息是 BGR 顺序而不是 RGB 顺序#

这个问题确实是我的疏忽>﹏<,因为隐写脚本(LSB-Steganography)使用了 OpenCV,而 OpenCV 在读取图片时默认是按照 BGR 格式来读取的,所以隐写的信息自然也是 BGR 顺序。如果想要变成 RGB 顺序,则需要对隐写脚本进行如下修改:

def main():
    args = docopt.docopt(__doc__, version="0.2")
    in_f = args["--in"]
    out_f = args["--out"]
    in_img = cv2.cvtColor(cv2.imread(in_f), cv2.COLOR_BGR2RGB)  # 将 BGR 格式转为 RGB 格式。
    steg = LSBSteg(in_img)
    lossy_formats = ["jpeg", "jpg"]

    if args['encode']:
        # Handling lossy format
        out_f, out_ext = out_f.split(".")
        if out_ext in lossy_formats:
            out_f = out_f + ".png"
            print("Output file changed to ", out_f)

        data = open(args["--file"], "rb").read()
        res = cv2.cvtColor(steg.encode_binary(data), cv2.COLOR_RGB2BGR)  # 将 RGB 格式转为 BGR 格式,不然图片会反色。
        cv2.imwrite(out_f+'.png', res)

    elif args["decode"]:
        ...

这样生成出来的图片隐写信息就是 RGB 顺序了。

隐写图片 RGB 顺序

此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.vinking.top/posts/confetti/new-year-game-riddle-answer-2023


加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。