モジュール詳細:サイモンの詐欺
サイモン、お前がズルするなら、少なくとも *えーと*...
モジュールの中央には、三方向に分かれた赤、青、緑のボタンが付いている。
分析担当者の目標は次の通り: マスターマインドゲームでズルをするサイモンに勝利する。
モジュールが起動すると、二つのコードを生成する: 正解と定数である。
解答を送信する度に、サイモンは出力と入力に基づいて
正解を変更する。
出力について:
解答を送信すると、サイモンは定数のコピーを変更し、それを出力として表示する。
最初に、入力に基づいて順番に以下の動作を実行する:
- 黒: 文字列を反転する
- 赤: 赤のチャンネルを反転する
- 青: 青のチャンネルを反転する
- 緑: 緑のチャンネルを反転する
- シアン: 左へ一つずらす
- マゼンタ: 右へ一つずらす
- 黄: 全てのチャンネルを反転する
- 白: 文字列を半分に分けて反転する (STRING -> RTSGNI)
その後、サイモンは変更した文字列と入力をXOR* で演算する。
最後に、正答した位置の色を全て反転する。
新しい正解について:
サイモンは入力の結果を暗号化するだけではなく、正解も変更する。
最初に、サイモンは出力と前の正解 (変更前の正解) を XOR で演算する。
次に、サイモンは入力の N%6番目を取る。 - N はモジュールに解答を送信した回数 - そして以下のように正解を変更する:
赤のビットが1の場合、シーケンスの最初の半分を順番を反転する。そうでない場合、 もう半分を反転する。
緑のビットが1の場合、シーケンスの最初の半分の色を反転する。そうでない場合、 もう半分の色を反転する。
青のビットが1の場合、シーケンスを左に一つずらす。そうでない場合、右に一つずらす。