micro:bitをcrackせよ

micro:bitを使ったプログラミングワークショップ用のシナリオとワークショップで使うプログラム例を作ったので公開します。

crackの本来の意味はシステムの脆弱性をついてデータを盗んだりシステムの動作に悪影響を及ぼす行為のことです。ここで紹介するシナリオやプログラムはそうした行為を模したものであって、実際にどこかのシステムに悪影響を及ぼしたりmicro:bitが壊れたりすることはありません。

ストーリー

とあるところに、秘密の数字が格納されたmicro:bit(以下、ターゲットmicro:bitと呼びます)がありました。秘密の数字というのは、1〜10000までのランダムな数字です。 このターゲットmicro:bitにはセキュリティ上の脆弱性があり、このmicro:bitに対して数字を無線で送ると、送った数字が秘密の数字よりも大きいか小さいかの情報を返してしまいます。この情報を頼りにターゲットmicro:bitをcrackして秘密の数字を解読しましょう。

ターゲットmicro:bitの脆弱性

ターゲットmicro:bitには、以下の脆弱性のあることがわかっています。

ターゲットmicro:bit用プログラム

ターゲットmicro:bitにはこちらのプログラムをダウンロードしてインストールしてください。こちらのプログラムは変更することなくそのまま使えます。

使い方

ターゲットmicro:bit用プログラムが入ったmicro:bitの電源を入れると数字が表示されます、これが秘密の数字です。秘密の数字は1〜10,000のランダムな数字です。 秘密の数字がわからなくなったり、もう一度最初から始める場合は、AボタンとBボタンの両方を同時に押してください。新しい秘密の数字が表示されます。

Aボタンを押すと誰が秘密の数字を解読したかが、micro:bitの名前が表示されます。まだ解読されていない場合はスマイルアイコンが表示されます。

Craker用プログラムのサンプル

こちらは秘密の数字を解読するCraker用プログラムのサンプルです。変数「番号」に予想した番号を入れてAボタンを押すとターゲットmicro:biと通信しその結果を表示します。

送信した数字が秘密の数字とおなじであればハートアイコン、秘密の数字よりも小さければ下向き矢印、大きければ上向き矢印が表示されます。

このプログラムはあくまでもサンプルなので、これを改造して秘密の数字の解読にチャレンジしてください

このワークショップを通して得られること

このワークショップを通して、以下のようなことを経験できます。

このプログラムでワークショップをされる方へ

秘密の数字は、適切なアルゴリズムで解読を試みれば文字通り「秒で」解読できます。そのプログラム例も作ってあり動作も確認していますが、ここでは掲載しないでおきます。みなさんもぜひ挑戦してみてください。

また、私もまだ一対一の環境での動作確認していませんので、一度に複数のmicro:bitがターゲットmicro:bitにアタックした場合に通信の輻輳(通信が混雑すること)の影響がどれぐらい出るかは未検証です。私の方でも検証していきますが、もし大勢で試してみた方がいらっしゃったらTwitterメールでご連絡いただけると嬉しいです。

質問などあれば、同じく上記までご連絡ください。