SECCON CTF

第1回SECCON CTF全国大会にチームMMAの一員として参加していました。
2013.02.23~2013.02.24という日程での開催でしたので既に1ヶ月が経過していて、非常に今更感しかありませんがせっかく参加したので少し。

昨年5月のつくば大会で先輩と同級生と後輩が点数稼いで3位に。
全く戦力になっていなかった残念な人ではありますが(人数制限がなかったので)北千住まで遊びに行くというくらいの軽い気持ちで参加。

初日、12時に集合してお昼を食べてから会場入り。
WiMAXルーターとWiFiルーターでチーム内ネットワークを構築。
1階の壁が薄い場所かつWiMAXハイパワーにも関わらず窓ギリギリにおかないとpingが残念というWiMAXに呆れつつも場所に恵まれ。
会場に一番近いメンバーがておくれていたものの時間に。
MONSTERのタワーに流石と呆れつつ開会式を終え、いざ競技開始…というもののthunderbolt-Ethernetの変換ケーブルを忘れて歩きまわる。
結局、田舎にthunderboltなんて文明は到来していなかったようでUSB-Ethernetで妥協。(ただ、Windows側で起動時以外に認識するというメリットあり。)
会場に戻ってからもこの手の知識が皆無で残念な人はこれって結局どうなってるんだろうな〜と思いつつも妨害コンテンツに素直に見入っていました。色々すいません。

時間で撤収。交流会の後、帰宅組と宿泊組に分かれて。

宿泊先はOpenVPNが一度通ったものの再びトライしたら通らなかったので会場と同じネットワーク構成で構築して適当に。SSHも22番ポートでしか通らなかったので色々厳しい…。
戦力にならない残念な人は早々に諦めて相槌を打つ人と化して。
しかし、Xiとかいう雑魚LTEでも500kB/sくらいは出るので重いファイルのダウンロードならWiMAXよりも早いというのはなんというか。ただ、SC-01Dは時々勝手にクラッシュするので使い辛い。

2日目。朝食のタイミングや電車の方向の勘違いで少し遅めの到着。
環境を再構築して適当に競技に参加。
といっても再び相槌を打つだけの存在になっていたのが現実。
後輩がtelnetが使える端末を所望したタイミングで自分の計算機を渡せたのが唯一まともに戦力になったところ。(疑いの余地多数)
後半のUranusでのキーワードと某後輩の妨害スクリプトでなんとか5位を死守。

2日間という期間、適当に楽しく参加できたのは良かった。
ただ、やはり何か知識を持っている訳でもなく、何かを作っている訳でもなく、ただ計算機に触っているだけの人というのは微妙なものだなという常々思っていることを再認識。
とはいえ、何か考えるわけでも何か始めるわけでもない辺りが私の悪い所で。
大学に入って既に3年が経過。成長したこともなくする気もないという状態だが来年は暇なはずなので少しはという意志を。

python-twitterで遊んだ。

ちょっとした興味で作った駄作について。

ちょっとコミケに遊びに行こうと思い、そのモバイル環境でTLが取得できないことを予測。使用しているモバイル環境がdocomo系MVNOのものなのでdocomoの比率の高さに加えて本家に潰される可能性がある。

で、VPSでTLを取得してメールで送りつければ良いのではという考えで作ったもの。

10秒に1回、自分のタイムラインを直近100件読み込んで、古いものから順にidを調べ、既に書き出しているものより大きいものをファイルに書き出すというもの。

import sys
import codecs
import time
import twitter

api = twitter.Api(consumer_key='適切な文字列', consumer_secret='適切な文字列', access_token_key='適切な文字列', access_token_secret='適切な文字列', cache=None)

tmp = 0

timeline = api.GetFriendsTimeline('@以下の文字列', 100, 0, 0, True, True)
timeline.reverse();
f = open("1.log","w")
f = codecs.getwriter('utf-8')(f)
for tweet in timeline:
	f.write('\n%s(%s)\n%s\n.' % (tweet.user.name, tweet.user.screen_name, tweet.text))
	if tmp < tweet.id:
		tmp = tweet.id
f.close();

while 1:
	time.sleep(120)
	timeline = api.GetFriendsTimeline('@以下の文字列', 100, 0, 0, True, True)
	timeline.reverse();
	f = open("1.log","a")
	f = codecs.getwriter('utf-8')(f)
	for tweet in timeline:
		if tmp < tweet.id:
			tmp = tweet.id
			f.write('\n%s(%s)\n%s\n.' % (tweet.user.name, tweet.user.screen_name, tweet.text))
	f.close();

また、取得したファイルを送りつけるようなシェルスクリプトを準備して回した。

#!/bin/zsh
while true
do
	export aaaa=`date +"%Y.%m.%d-%T"`
	mail -s $aaaa 送信先のメールアドレス < ./1.log
	rm -f ./1.log
	sleep 5m
done

出力されたファイルをリダイレクトでmailコマンドに放り込み、送信した時間を件名に埋め込んだだけの何か。送った後5分間休むので5分間隔で送りつけてくれる。cronを初めて使ったら添付ファイルになったので急遽作った。何が悪かったのかは今後。

この2つを借りているVPSで起こしたscreenの下で実行。5分間隔というのが少し短くて時々苛立ったが取得漏れ以外は追いかけることが可能だったのである程度重宝した。

メールでの通知は止めたがpythonのコードの方はその後も無駄に動かし続けている。10秒間隔が悪いのかは不明だが1日とか8時間とかで倒れてしまう現象が発覚。python-twitter側でエラーが起きて倒れるのでライブラリ自体が不穏な可能性もあるがとりあえず120秒間隔で取得するようにしたところ3日動き続けている。

pyhonなにそれという状態からライブラリを探しTwitterでアプリの登録をしてTLを吐き出すコードを書き、mailコマンドを適当に叩くところまでで4時間というので適当だがこういう駄作でもなにか作るとある程度調べるから悪くない。

Hello world!

勢いに任せてDomainを取得しVPSを借りたものの何もしていない。

それではあまりにももったいないということでWordPressを整備してWeblogという形を取ったものの書くことなどなく。

とりあえず、今回セットアップの参考にしたページをまとめるという行動によってこのページの第一号とする。

最低限の設定をした上でnginxを導入。Virtual HostでWordPressの整備と同時にとあるページの移転先を用意。メールサーバーの設定をして独自ドメインでのメールを使えるようにした。

Googleで先人の知恵を引っ張り素直に従っただけなので特に何かしたわけでもないが、まずはここからということで。