実際に動かしてみると、次のことが分かりました。与える文字列の2倍の桁の16進数が出力される。与える文字列が同一であっても、実行する時刻によって出力する値が異なる。入力文字列に同一文字があったとき、出力の16進数でも対応する位置の値が同一である。以上のことから、起動時に文字を16進数に変換するテーブルをランダムに生成し、テーブルを使って文字列を16進数に変換するプログラムであると推測できます。なっていることが、このことを裏付けています。なるような16進数を得ます。この情報から変換テーブルを作り、フラグの16進数を逆変換します。pt.)暗号文と暗号化に用いられたプログラムが与えられます。対して更新していきます。変換は線型写像であり、何度変換しても線型性が保たれます。変換しているのと変わりありません。あることがわかります。pt.)インタラクティブに応答するタイプの問題です。じゃんけんを50回して、40回以上勝てばフラグが得られます。サーバ側のじゃんけんアルゴリズムは、次のような感じです。ランダムな値で初期化する。参加者が前に出した手とテーブルを元に、最も出しやすい手を予測し、その手に勝つような手を選択する。実際に参加者が出した手の出し方をテーブルに記録する。サーバ側はランダムな状態から始まりますが、その後の挙動は決定的です。したがって、最初のランダムな状態を予測できれば、勝てること間違いなしです。通りなので、全状態をシミュレートしても何とかなりそうです。毎回の勝負のときには、全状態で最も勝てる手を出していきます。勝負が進むにつれ、サーバ側の実際の手の出し方と、シミュレートしているテーブルの状態で矛盾が生じることがあります。その時点で、そのテーブルではないことが明らかになるので、状態候補からは外していきます。いうことをしたら40勝できました。コードが3個与えられます。するようになっています。主要部分は次のようになっています。呼び出せばフラグが得られます。ついては解けませんでした...。ことを分かっていなかったことを痛感させられました。