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']:
        # 損失形式の処理
        out_f, out_ext = out_f.split(".")
        if out_ext in lossy_formats:
            out_f = out_f + ".png"
            print("出力ファイルが変更されました ", 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

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。