neocomplete.vimでGaucheのx->integerみたいなのを補完出来ないのを直す

結果的に言えば、neocomplete.vimのデフォルトのパターンでは>を含む場合は考慮されていないので こんな感じにg:neocomplete#keyword_patternsを設定する。

その後、キャッシュファイルの再生成を忘れずに。

具体的には~/.cache/neocomlete/dictionary_cache/=+Path=+to=+.gosh_completionsを削除して、 もっぺん適当なSchemeファイルを開いて少し編集すると勝手に作りなおしてくれる。

let g:neocomplete#sources#dictionary#dictionaries = {
\ 'default' : '',
\ 'scheme' : $HOME.'/.gosh_completions'
\ }

" Define keyword.
if !exists('g:neocomplete#keyword_patterns')
  let g:neocomplete#keyword_patterns = {}
endif
" 英字のみキャッシュする
let g:neocomplete#keyword_patterns.default = '\h\w*'
" Schemeの識別子はちょっと特殊
let g:neocomplete#keyword_patterns.scheme =
\'[[:alpha:]!$%&*+/:<=>?@\^_~\-][[:alnum:]!$%&*./:<=>?@\^_~\-]*'

ちょっと嵌ったのでメモ書きとして残しておく。

追記:

パターンの変更に関しては取り込まれたようです

Improve Lisp/Scheme keyword patterns · c506ad4 · Shougo/neocomplete.vim

俺の2014年振り返り

最近毎年恒例のようになってきた今年の自分の振り返り。

振り返ると艦これと対魔忍ソシャゲやって酒飲んで寝てたら1年終わってた気がする。

毎度のことながら記憶力が無いのでGoogle Calendarfoursquare見ながら振り返る。

1月。当時B3。正月は未だに貰っているお年玉片手にポンバシへ。 中盤は就活を取り敢えず始めつつも 毎年のことながら関西の男性向けオールジャンル同人誌即売会のComic Treasure23のためにインテックス大阪行ってついでに心斎橋のまんだらけとか寄ったりする。 30日に京都のメロンブックスで『提督の冬休み』をゲットしてる模様。 1月末から2月頭は定期試験を受けつつのらりくらり。

2-3月は主に就活をしていた。太ってパンパンになったスーツを着ながら中之島あたりへ何度か行く。 結果は全滅。10社強ほど書類出して通ったのが2社、1社は東京なのでごめんなさいして、もう1社も1次GWで落ちる。 これ以降「セキュスペもネスペも持ってても就活では全然役に立たへんぞ!」が持ちネタになる。原因は別のところな気がするが。 これを期に院進へ舵を切る。

他にはさくらインターネットさんのさくらの夕べに行って、懇親会で酔っ払った挙句さくらインターネットの田中社長と無理やり名刺交換を行うという粗相をする。 今思うとそれはいらん方向へ勇気出してどうする。

4月。晴れてB4へ。卒業要件単位のうち2科目ほど取りもらしてたので取り敢えず3科目ぶちこむ。 また4月頭は某ネットエージェント社のコレが面白そうだったので解いてたら 最終問題まで来たので、某遠隔操作事件さながら最終問題を取りに某府県境(関西1)の山に登る。帰り道、道を外れ遭難しかけるも無事下山。 問題はゲットするもその後色々やっても結局解けず。

なお、帰りに日本橋に寄るなど割と余裕だった模様。バカとも言う。

同じく4月、今度は後半、Twitter経由で渋谷のとあるベンチャー企業さんに呼ばれる。交通費全額出して下さるとのことだったので新幹線で悠々と行き ついでにアキバへも行く。その企業さんでは企業説明会という名の雑談を行う。心惹かれるも院の推薦入試の〆切とスケジュールがギリギリだったので結局大学院進学を決める。これにて学部の就活を終える。

5月。セキュリティ・キャンプキャラバンin大阪 2014へ行く。吉田James先生がEthernetフレームとかをhex手打ちで作り出したりhpingで手動3-way handshakeしたりホゲーなんかおかしなことやっとるなと絶句してた。

6月。院試には受かるもセキュキャンには落ちる。

年齢制限で来年の申込は不可不可してる。

ついでにはてなダイアリーからはてなブログへ移行したのもこの辺。

7月。SECCON2014オンライン予選に出たりしつつも、OSC京都に向けて色々準備を進める。 定期試験はなんなくやり過ごす。滋賀県知事選があったので投票率アップのため取り敢えず投票に行く。

8月。OSC京都2014 #osckansai でHeartbleedとか展示したりした。 というよりOSC京都のスタッフを今年も引き続きやった。詳しくは←記事を見ていただくとして、今年はB1の大学の学部・部活の後輩がスタッフとして何人か入ってくれたのがなかなか嬉しかった。

また、これもここ2-3年程行ってるけど夏コミにも行く。アキバにももちろん寄る。今年はビッグサイトからアキバへはりんかい線で新木場、新木場から京葉線で東京駅、んで山手線で秋葉原ルートを取ってみた。りんかい線京葉線はめっちゃ空いてて良かったが東京駅の乗り換えが1つの駅とは思えぬほど長くて地獄だった。 なんだあの距離…ディズニーランド帰りの客を現実に戻すためにあるという噂が…。

他、京都の(株)はてなであった私立プログラミングキャンプというハッカソンに出てTCPの生ソケットでWebサーバもどき作って、http://localhost/404にアクセスすると404 Not FoundみたいにURLで指定されたステータスコードを返すというクソな出来栄えのコードをレッドブルを何杯も飲みつつ作る。

再びさくらインターネットさんのさくらの夕べ。今度はタダ飯タダ酒食って満足したりもしてた。サントリーローヤル美味しかったです。

他の出来事としては気の迷いで大学から叡山電鉄経由で帰ってたら、出町柳駅前でバス待ってたら虫に足を刺されまくるという事案等。

また、8月中頃から9月頭までKRPのとあるホスティングサービス運営会社さんでインターンシップをさせて貰う。一応大学の直系のOBの方から指示を受けつつデータセンターで作業したりと充実してた。お給料も結構貰った。

9月は再び同人誌即売会のComic Trasure24へ行ったりした。また、部活関連でKC3という立命館大学コンピュータクラブさん主催の情報系大学サークルの交流会みたいなのに今年も参加した。去年一昨年は勉強会を主催したけど流石に今年はその任は後輩にやって頂いて、今年はabcang氏主催のMIPSリバースエンジニアリング会でもくもくとアセンブリのコードをCに直してた。また、programmerMOT氏と一緒に酔っぱらってた。

10月。オワスプナイトカンサイ~OWASPローカルチャプターミーティング in関西 3rd~に参加。かのhasegawayosuke氏の話を酒を飲みながら聞けるという僥倖。お前また酒飲んでないか。

中盤には関西コミティアという創作系同人誌即売会へはじめて行ってみる。どちらかと言うと創作系なので女性が多いというか、なんとなく美大の感覚に近い感じがした。普段購入のメインターゲットは男性向けなのでどちらかと言うと毎年同じ日に被る東方紅楼夢の方が好み的には合うけど、こっちも結構心地よい雰囲気で好きだった。なるほど、参加者層がうまいこと分かれてるから同日開催でも問題無いのかなぁ。

11月。学祭の時期だがほとんど胃の調子がアレゲで行けず。一応京大の学祭は日が離れてたので行く。本とか買った。帰りに開店したてだったらしんばんアバンティ店にも寄った。京都駅近傍でエロ同人誌が買えるとは良い時代だ。

一応毎年行ってるので関西オープンフォーラムには行く。懇親会で何故か部活のOGの方と会うなど色々有意義であった。講演はErlangの話とかを聞いたり、CTFの妨害コンテンツのバイナリかるたを外野からちゃちゃ入れたりしてた気がする。

12月。カーネル/VM探検隊@関西 7回目のため再び京大へ。めちゃくちゃ低レイヤ高レベルの話が多くて( ゚д゚)ポカーンってなってた。

選挙にも行ってた。

で年末は研究室の忘年会で酔っ払ったり(また飲んでる)してた。で、12/30は大掃除というか要らん書類なんかをまとめてゴミに出したりして、夜にこれを書いてる。

クリスマスプレゼントという名目でゲットしたIntel Edisonを弄りたいがいまだ弄れず。

一方卒論最終〆切まで1ヶ月切ってるにも関わらず進捗ダメです。

今年の振り返りとしては

  1. お酒は飲み過ぎないように(多分酒のせいで体重が落ちない)
  2. 進捗は着実に

来年の抱負としては

  1. お酒は飲み過ぎないように
  2. 進捗はちゃんと出しましょう

と致したいと思います。では良いお年をお迎えください。

CoreOSをVirtualBoxに手動でセットアップしたらめんどくさかった

最近CoreOSやらDockerやらの名前をよく聞くので面白そうと思って入れてみた。

ホストOSはOS X Mavericks。

OS XなのでBoot2Dockerとか使うほうが楽な気がするけど他の仮想マシンVirtualBoxで管理してるのでCoreOSもVirualBoxに入れた。

構成としてはVirtualBox内のDockerからはインターネットへの通信とホストのOS Xとの通信が可能なようにした。また、SSHで繋ぐ関係上IPアドレスを固定にした。これが一番めんどくさかった。

最初に言っとくとさらっと書いてるけど2日間くらい四苦八苦したので特に理由が無ければVagrant使うといいと思います。Vagrant使わなかったのはフォルダの管理があんまり好きじゃなかったから。

セットアップ

まずhttps://coreos.com/からセットアップ時に使うCoreOSのISOイメージをダウンロード。Download CoreOSのISO Imageから飛んだ先でダウンロード。

で、その間にでもVirtualBoxの下準備。仮想マシンを新しく作る。色々なコンテナを入れることが予想されるのでメモリと仮想ハードディスクは多めに取っておいた。アーキテクチャは「CoreOS」って名前で作るとOracleの64bitになるのでそれでいいはず。

作ったら設定から色々いじるんだけど、必須なのはネットワーク周りでインターフェイス1はNATのままでいいんだけどインターフェイス2などでホストオンリーアダプタを追加しないとホストとは通信できないので設定。他、ついでにCPUコア割り当てを1個じゃアレなので2個くらいに増やしとく。

そんでもってISOイメージのダウンロードが終わったらVirtualBoxの仮想ドライブにマウント。

で、ブート。

インストール

概ね公式ドキュメント通りなんだけど、今回は色々設定いじるので設定用のファイルcloud-config.yamlを作る。

そのファイルに記載すべきなのは

  • 接続元のSSHの公開鍵
  • IPアドレス固定のためのネットワーク設定ファイルの設定
    • CoreOSはネットワークインターフェイス周りをsystemd-networkdで管理なさるのでその流儀にしたがって
    • ここではブート後にifconfigとかroute -nとかして、ゲスト側のホストオンリーアダプタのインターフェイス名がenp0s8、あとNATのデフォルトゲートウェイ10.0.2.2だったので以下の様に作る。
    • あと、固定したいIPアドレスVirtualBoxのデフォルトの設定だと192.168.56.101-192.168.56.254だった気がするのでその範囲で
#cloud-config

write_files:
  - path: /etc/systemd/network/10-host-only.network
    content: |
      [Match]
      Name=enp0s8
      
      [Network]
      Address=192.168.56.1XX/24
      Gateway=10.0.2.2

ssh_authorized_keys:
  - ssh-rsa AAAAB3[以下略]

注意点としては

こうして用意したcloud-config.yamlを起動したCoreOSへ持っていく。ホストのOS X側で作ったYAMLファイルを、ワンライナーか何かでHTTPサーバ立てて一時的に公開して、CoreOS側でwget 192.168.56.1:10000/cloud-config.yamlとかすると楽。 ちなみにCoreOS君はJISキーボードじゃなくてUSキーボードで動くから:Shift+;な。他JISキーボードだといろんな記号が打ちにくいけど我慢して。

で、CoreOSではこんなかんじの操作する

coreos $ sudo su
coreos # wget url-to-cloud-config.yaml
coreos # coreos-install -d /dev/sda -C stable -V current -c cloud-config.yaml -v

CoreOSのstable版のcurrentバージョンのOSイメージを取りに行くので結構時間かかる。Wi-Fiで10-20分くらい掛かったっけな。オプションの意味はhttps://coreos.com/docs/running-coreos/bare-metal/installing-to-disk/を見ていただくとして、小文字の-vはverboseのvなので別に無くてもいい。 -Vもホントは無くて良かったはずなんだけど、どうやらオプション無しで取りに行くバージョンがNot Found食らったので明示的にバージョンをcurrentに指定してる。

終わったらshutdown -h nowして、VirtualBoxの設定画面からISOイメージを取り出して再起動。

で、ここが重要なんだけど、1回目の起動では上記の設定が反映されないのでログインプロンプト出ても問答無用で×ボタンからシャットダウン。もう一度起動すると設定が反映され、表示されるIPアドレスが設定通りになるのでようやくホストのOS X側からssh。初めて接続する場合はfingerprintの警告が出るのでyes。なんかエラー出たら~/.ssh/known_hostsIPアドレスが該当するエントリが既に無いか確認して有ればその行を削除してsshしなおし。公開鍵認証なので少し時間かかることもあるけどひとまず待つ。

host(OS X) $ ssh core@192.168.56.1XX
Last login: [略]
CoreOS (stable)
core@localhost ~ $

一応ping 8.8.8.8とかして疎通確認しとくと良い。

試しにDockerでnginxでも入れてみる

core@localhost ~ $ docker run -d -p 80:80 dockerfile/nginx
[色々取りに行くので気長に待つ。
終わったらホストOSからhttp://192.168.56.1XX/にでもアクセスして、
nginxのページが出れば成功]

なお、nginxを止めるには、↑のコマンドの最後に出てくるImage ID(ハッシュ値)を1a2b3c...とするとdocker stop 1a2b3cとかする。要らなくなったイメージとかを消すにはDockerで不要になったコンテナやイメージを削除する - @znz blog見ながら頑張れ。

そろそろ卒論近づいてきて時間が少しずつ削れてるけど頑張ります

*1:もちろんtasutenの部分は各自自分のIDで

OSC京都2014 #osckansai でHeartbleedとか展示した

もう一週間も前になりますがOSC京都2014の感想というか振り返り。

僕自身はOSC京都ローカルスタッフとして準備やブースツアーなどで働きつつも 多くの時間は「OSC京都ローカルスタッフ有志」という形で出したブースに居た。

この「OSC京都ローカルスタッフ有志」というブースではテーマとしては「コンピュータの原理に触れよう!」として色んな展示などをして居た。その中でも僕はid:pinksawtooth氏ともう一人の方と一緒にネットワーク関連の展示というかブースみたいなのを出してた。

で、最初はスライドみたいなのを見せつつやろうかなと考えてたんだけど直前に「もうちょい実践的な方が良いよね」とのフィードバックを頂き急遽手探りながらも色々トライした。 本当はtelnetでHTTP直打ちとかなんとなく考えはしてたんだけど結局会場の空気的にちょっとむずかしいかなと思って 1日目は持ってきた機器でネットワークを組んでtcpdumpを見せてたんだけどやっぱり黒い画面によってくるような人は少なくて難儀した。そんで考えたところ、2日目からはOpenSSL+nginxでHeartbleedなHTTPSサーバを建てて、PythonのPoCで実際にHeartbleedを突いてHTTPSの通信が漏れるのを展示したりした。

反響はホワイトボードに冷やし中華よろしく「Heartbleedはじめました」とか書いたりTVニュースにもなってた脆弱性の知名度のおかげなのか割と上々だった。 僕は直接は気づかなかったんだけど、先の一緒にやってたメンバー曰くアップデートの対応に追われた/追われてる方が死んだ目で見ながら逃げるように去って征かれたとの話を聞いた。

また、Heartbleed以外にも見栄えがするものということでサイバー攻撃をリアルタイムに地図に可視化したhttp://map.ipviking.com/というサイトを見せたりもした。「ATTACK ORIGIN(攻撃元)にやっぱりCHINA多いですよねー」とか「ATTACK ORIGINにGov/Mil(合衆国政府・軍)が有りますけどこれ何でしょうねー。地図では緯度経度0度の点になってますけど」とか話してた。

一応イベント自体は大きな問題は無くうまく終わってホッとしたし、いい感じに盛り上がってたので非常に良かった。 今年はローカルスタッフとしてうちの学部の後輩がいっぱい来てくれたのも嬉しかった。 懇親会やブースでいろんな方と話したり、スナック宮原びぎねっとの宮原さんの泡盛が美味しかったり、 後輩が懇親会のじゃんけん大会で当てたワタシハLinuxチョットデキルTシャツを羨ましそうに眺めたりしてた。 ちなみに僕はじゃんけん大会ではBROCADEのうちわをゲットした。後でよく見るとInterop Tokyoのうちわっぽかった。

というわけで今年もお疲れ様でした&ありがとうございました。 多分僕は院進でまだ京都に居て、来年もローカルスタッフとして参加すると思うので、 ぜひ来年もよろしくお願いします。

SECCON2014オンライン予選write-up

ソロで試しに出てみた。 解けたのは練習問題とパケット解析とアニメーションGIFのと暗号だけだった。

練習問題

クリックして終わり

パケット解析

pcapなのでWireSharkで開く。FTPは平文。ユーザ認証のPASSがFLAGかと思って試すもNo.

RETR flag.txtとかやってるのがあったのでその応答TCPパケットのペイロード見ると ASCIIの文字列が。base64でデコードして終わり。

アニメーションGIF

他の方見るとPhotoshoper多いけど俺はimagemagickで解く。

1枚ずつばらして透過させて重ねるとQRコード。白背景黒塗りに編集してiPod touchで読み込んで終わり。 imagemagick便利。

暗号

ASCII部分を見るとROT13っぽかったけどどうも文字化けしてるっぽい。ROT13/47というのがあってnkf -rでデコード出来たので終わり。

感想

CTFer怖い

ゼロ除算でイージス艦が2時間半止まった話

1997年9月21日バージニア州ケープ・チャールズ沿岸を航行中に、乗組員がデータベースフィールドに0を入力したために艦に搭載されていたRemote Data Base Managerでゼロ除算エラーが発生し、ネットワーク上の全てのマシンのダウンを引き起こし2時間30分にわたって航行不能に陥った。 これは搭載されていたWindows NT 4.0そのものではなくアプリケーションによって引き起こされたものだったが、オペレーティングシステムの選択への批判が続いた。

ヨークタウン (ミサイル巡洋艦) - Wikipedia

このWikipedia記事の英語版にはより詳細が書かれていて、Pentium ProベースのCPUが積まれてただの色々載っていたり。

Metasploit Frameworkで独自に書いたモジュールの置き場所

例えばMetasploit Frameworkで新しくモジュールを書いてみたいけど、 Metasploit Frameworkをインストールしたディレクトリを直にいじるのは行儀が悪いという人に対して。

結論だけ言うと、今のところ~/.msf4/modules/以下にディレクトリ掘って置けば良い。

より正確に言うと、~/.msfX/、ただしXはMetasploit Frameworkのメジャーバージョンの番号。 今現在では4.9.3とかなのでXは4になって~/.msf4/という寸法。 その下に元のMetasploit Frameworkと同じようなディレクトリ構成で置けばいいから、モジュールの場合~/.msf4/modules/になって、例えばHTTPのスキャナなら~/.msf4/modules/auxiliary/scanner/http/hoge.rbと言った具合。ディレクトリが深いのでmkdir -p ~/.msf4/modules/auxiliary/scanner/http/とかしてからファイル作ると良い。

この辺は/path/to/metaspoit-framework/lib/msf/base/config.rbの前の方に書いてあるのをagコマンドとかで検索して見つけた。

ついでに言うとモジュールを書き換えたらmsfconsoleを再起動するか、msf> reload_allしてからそのモジュールをuseし直さないと更新されないっぽい。

当ブログに於いて、私tasutenによって創作されたことが自明である著作物に対しては、別途明示のある場合を除き全てCC0が適用されます。