脱出ゲームのすゝめ
黒曜
@kokuyouwind
$ whoami
- 黒曜 / @kokuyouwind
- 株式会社Misocaに転職して半年
- ふだんのギークバーは初
- アナログゲームナイトによく出没
- 現職: Ruby on Rails/React
- 前職: PHP/Scala
- 趣味: OCaml
さくらインターネットとも
コミュニティとも
全く関係ない話をします
リアル脱出ゲーム
リアル脱出ゲーム
ある部屋にあなたは突然閉じ込められる。
周りには同じ境遇の人たちがたくさんいる。
部屋にはさまざまなアイテム、暗号、パズルが隠されているようだ。
暗号を解き、鍵を開き、箱を開け、
制限時間内に最後の鍵を手に入れることができれば
あなたは脱出に成功する。
楽しい!
自分も作りたい!
作った
作った
- プログラマ向けの謎解き
- Githubで公開
- ファイルを編集したり
コマンドを打ったりして
進行するゲーム - プログラミング系の知識
- 脱出ゲームのひらめき
- gitならではの仕掛け
例題
例題
アクセサヒープクラスフラグ
マクロコンパイラマージクロージャ
アセンブラバブルブールコメント
整列の前後を読め
例題
アクセサヒープクラスフラグ
マクロコンパイラマージクロージャ
アセンブラバブルブールコメント
整列の前後を読め
(ソート)
例題
アクセサヒープクラスフラグ
マクロコンパイラマージクロージャ
アセンブラバブルブールコメント
整列の前後を読め
(ソート)
例題
アクセサヒープクラスフラグ
マクロコンパイラマージクロージャ
アセンブラバブルブールコメント
整列の前後を読め
(ソート)
例題
アクセサヒープクラスフラグ
マクロコンパイラマージクロージャ
アセンブラバブルブールコメント
整列の前後を読め
(ソート)
答え:さくらクラブ
「謎解きを作る」という謎解き
謎解きを作るという謎解き
Q.
正しい入力のときだけ出力が得られるスクリプトを書け。
ただし、ファイルを見ただけでは入力も出力も
わからないようにせよ。
また、1スクリプトに対し正しい入力は数種類あり、
それぞれ別の出力を返すようにせよ。
謎解きを作るという謎解き
$ cat key
invalid
$ ./run.sh
error: invalid key
$ echo 'key1' > key
$ ./run.sh
これは正しいkeyです
$ echo 'key2' > key
$ ./run.sh
これは別の正しいkeyです
謎解きを作るという謎解き
#!/bin/sh
cd `dirname $0`
file=$(md5sum key | cut -c 1)
openssl aes-256-cbc -d -in data/$file \
-pass file:key
謎解きを作るという謎解き
謎解きを作るという謎解き
Q.
正しいkeyを設定したはずなのに復号に失敗した。
なぜか。
謎解きを作るという謎解き
Q.
正しいkeyを設定したはずなのに復号に失敗した。
なぜか。
A.
keyの終端に改行が入っていた。
opensslではpassは最初の行しか使用しないが、
md5sum値が変わって別の入力ファイルを見ていた。
謎解きを作るという謎解き
#!/bin/sh
cd `dirname $0`
cat key | tr -d '\n' > key
file=$(md5sum key | cut -c 1)
openssl aes-256-cbc -d -in data/$file \
-pass file:key
謎解きを作るという謎解き
Q.
ファイルを実行したらkeyファイルが空になった。
なぜか。
謎解きを作るという謎解き
Q.
ファイルを実行したらkeyファイルが空になった。
なぜか。
A.
出力ファイルは新規モードでオープンするので、
入力が空になった。
謎解きを作るという謎解き
#!/bin/sh
cd `dirname $0`
cat key | tr -d '\n' > key2; mv key2 key
file=$(md5sum key | cut -c 1)
openssl aes-256-cbc -d -in data/$file \
-pass file:key
謎解きを作るという謎解き
他にも色々ありましたが、時間がないので割愛…
まとめ
- 作ったので遊んでみてね!
- 謎を解くのも楽しいけど、謎を作るのも楽しい
- ただしシェルスクリプトはつらい
- 新しい謎解きゲームも考えていきたい
- 協力者募集!(制作とかテストプレイヤーとか)
脱出ゲームのすゝめ
By 黒曜
脱出ゲームのすゝめ
脱出ゲームを作ったので、それをPRするLTスライドです。 https://github.com/kokuyouwind/escape-from-the-repository
- 2,370