SECCON CTF つくば大会 2日目

(昨日 の続きです)
最終的に 2507 点、13 チーム中 4 位で終わりました。やったね!
開始直後 2 位から、徹夜で問題を持ち帰っていじっていた連中が一気に通していった所為で 7 位に転落して諦めていたけど、なんだかんだ最終的に 4 位まで戻れた。
(うちのチームは家等で問題の続きをやったりは全くしなかった)
Continue reading...
(昨日 の続きです)
最終的に 2507 点、13 チーム中 4 位で終わりました。やったね!
開始直後 2 位から、徹夜で問題を持ち帰っていじっていた連中が一気に通していった所為で 7 位に転落して諦めていたけど、なんだかんだ最終的に 4 位まで戻れた。
(うちのチームは家等で問題の続きをやったりは全くしなかった)
Continue reading...
といた問題は 3つ。
うちのチーム (IMOCAN) は 1007 点で 1 日目終了時点で 2 位。終了直前に 0 点から一気に 1100 点になったチームが居て怖いですね。
明日が終わったらには最下位になってそうだな。
Web 系の知識ないのに 300 点一番乗りで解けたし、答え分かっちゃうと拍子抜けする。しょうもないミスで 30 分くらい使ってたし。 (煽るつもりはないです)
(2日目の記事 に続く)
Logitech の Mini Boombox というスピーカーを買った。今月頭にやったハッカソンで、持ち歩けるサイズのよさげなスピーカーを探した結果。
Continue reading...
@r7kamura 氏が言及していたので調べて導入したのだけど、これは便利すぎる。
何をするソフトウェアかと言うと、ディスプレイをタイルに分割して、ウィンドウをタイル(範囲)にピシッとリサイズ・移動するという簡単な物。もちろん何分割するかは縦横それぞれ決められる。

任意の範囲に対してショートカットを割り当てる事もできて、もちろん Divvy の呼び出しにもグローバルなホットキーを指定できる。たとえば画面の左半分を H キーに割り当てておけば、ホットキーを叩いた後 H を叩けば左半分に画面がリサイズ・移動してくれる。左右にウィンドウを綺麗に楽におけて便利。

あとはオプションで toggle なんたら、を有効にしておけば、同じショートカットをもう一度叩けばサブスクリーンに移動してくれる。サブディスプレイ繋ぎ直した時にキーボードだけでウィンドウを整理できるから重宝する。
というわけで、Divvy 購入して損無いと思う。Mac App Store で 1200 円でした。
Sinatra::Base + Thin doesn’t show request path and response time.
You can show response time by writing this class and modifying your run line in your config.ru
Sinatra と Thin 使うと、レスポンスタイム出してくれないから、Rack の run に渡すクラスに、一つオブジェクトを挟めてレスポンス返すまでの秒数を計測するクラスを書いた。
config.ru に Stats クラスを書き込んで、run の行をちょっといじれば表示してくれます。
play に対抗する物を作っていて、同じように iTunes DJ を使おうとして play 氏がどうやって iTunes DJ に次の曲として指定してるのか みたら、Add to queue で次の曲ではなくキューの最後に追加するだけ、という仕様で全く参考にならなかった。
自分は単純にボタンを押したら次に再生されるようにしたかったので、頑張って次の曲に追加するスクリプトを rb-appscript 使って書いた。
iTunes の Applescript インターフェース、プレイリストに曲を追加するのは末尾に追加しかできなくて、要するに以下の手順を踏まないと間に曲を差し込むことができない:
[曲1, 曲2, 曲3, 追加したい曲][曲1, 曲2, 曲3, 追加したい曲, 曲1*, 曲2*, 曲3*][追加したい曲, 曲1*, 曲2*, 曲3*]この方法しか無いんじゃないかと思ってググってたらやっぱりこれしか方法がなくて、 しかしググったおかげか、ループを使って消してくのかと思ったらたった 3 行で実現できるぽくて、ループでやると滅茶苦茶遅い事が判明した。
http://hints.macworld.com/article.php?story=20040830035448525
Applescript 本当に面白い仕様だと思う。

iTunes DJ で voting を有効にしてるとダメなので設定をオフにしましょう。
Voting を有効にしてると、プレイリストが曲の重複を許さなくなり、上述の方法が通用しなくなり道が閉ざされる。
@r7kamura 氏と前からハッカソンしたいですね、という話になっていて、 GW だし美少女 @aereal さんも関西からきてたので、ちょうど良いタイミングだと思い急遽ハッカソンした。
自分は android-plugin を使って Scala で Android アプリを書いていた。 一応帰宅後もぼちぼちコードを書いて完成させました。
IC カードとかを重ねると設定した URL を開いてくれます。便利ですね。
アプリケーションを起動して NFC の API で読み取れるカードとかを、Galaxy Nexus 等 NFC と純正 API を持ったデバイスに重ねてやると、 カードの ID 的な物を読み取って、URL とカードの名前 (編集時の識別用) を聞かれるので、開きたい URL と名前を入力して保存。
その後ホーム等に戻ってカードを重ねてやると登録した URL が開きます。便利ですね。
もちろん Android の intent を使っているので、たとえば http://m.foursquare.com/venue/... みたいな URL を登録しておけば
よく使う venue へのチェックインが容易になりますね、やったね!
Felica Lite の空のカードかって URL 焼けばいいだけの話なんだけど面倒だったので作りました。
アイコンなんとかしたらたぶんマーケットに投げる。Scala で Android アプリ書いて得た知見はまたそのうち別にエントリします。
sorah の iTunes ライブラリを開放して、スピーカーがなかったのでヘッドホンをスピーカー代わりにして流していた。
iTunes DJ という機能がとても便利で、iPhone 等から他人が曲のキューに追加できるし、とても便利。 ついでにレート高めの曲を優先的にする、みたいな設定があるので、一人でシャッフル再生する時にも活用しています。
まずスピーカーまともなの欲しいと思っていたので、これとか欲しいですね。 (wishlist)
しかし iPhone からしかリクエストができないので、PC からもリクエストが出来ると便利、という話が出た。
それについては github の人が書いた play とかを知っていて、r7kamura さんもそれを推してきたので 帰宅後に調べてみたら、iTunes DJ が使われてるからオオッ、と思ったんだけど ruby 1.8.7 でしかうまく動かなくて、 Pusher 等外部サービスに結構依存してて自分的にはあまり好みじゃない感じ。
単純にキューに追加したりする機能とリアルタイム通知機能だけを持った sinatra アプリケーションを作ろうかなと思った。 次のハッカソンまでに用意します!
バーガーマニア に行ってプラチナバーガーを食べた。おいしかった。 プラチナ、たぶん白金台だからかな…
r7kamura さん会場提供誠にありがとうございました。
またやりたい! 一緒に何か作るのもよさそう。

android-ndk を standalone に使えるようにした のはこのためなのだけれど、
mruby (a.k.a. RiteVM, 軽量 Ruby) を動かせるかと思ってセットアップした。結果的には普通に動きました。
ただ、ビルドするときに mrbc をホストで実行できる必要があるみたいなので、ちょっと弄った。
make-standalone-toolchain.sh で作られた gcc 等 に PATH が通ってる事を前提として、以下の手順でビルドできました:
$ git clone https://github.com/mruby/mruby.git
$ cd mruby
$ make
$ cp bin/mrbc .
$ make clean && rm **/*.o
$ make CC=arm-linux-androideabi-gcc LL=arm-linux-androideabi-gcc
...
/bin/sh: ../bin/mrbc: cannot execute binary file
$ cp ./mrbc bin/mrbc
$ make CC=arm-linux-androideabi-gcc LL=arm-linux-androideabi-gcc
# ↑ will fail at building mrubysample. you can just ignore because it's not needed.
$ file bin/mruby
bin/mruby: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
あとは ./bin/mruby を adb push 等で Android に転送して実行できるようにしてあげればいいと思います。
Have fun!
Android には NDK (Native Development Tools) がある。要するに C とか C++ でちょっと高速なアプリケーションを書いたりできるらしい。まぁ、察せるとおりクロスコンパイラが入っている。
Android で動くバイナリとかを吐く一番速い手段がたぶんコレ。
OS X だと homebrew を使って
$ brew install android-ndk
のようにしてインストールする事ができる。
homebrew だと brew --cellar android-ndk で表示されるディレクトリの下にバージョン名のディレクトリがあり、その下の toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin とかに gcc が転がっている。
が、これを普通に叩いてもちゃんと動いてくれない。インクルードパスとか。
しかしパッケージ内にちゃんと standalone に gcc とかを使えるようにしてくれるスクリプトがあったのでメモ:
# r7c はインストールされているバージョンに置き換えること
$ cd `brew --cellar android-ndk`/r7c
$ ./build/tools/make-standalone-toolchain.sh --ndk-dir=`pwd` --install-dir=$HOME/opt/android-ndk-standalone
これで ~/opt/android-ndk-standalone/bin にちゃんと単体で動く gcc 等が入るので、$PATH を通したりすれば OK.
横浜の方にちょっと自転車を持って行って自転車でふらふらしてきた。場所によっては徒歩だけど。
Continue reading...