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


載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。