iwiwi 備忘録

学んだことを殴り書きます。自分向けのメモです。

CTF for ビギナーズ 2015

社長から資料を貸してもらったのでメモだけ取って返す.

バイナリ

書籍など

ネットワーク

  • 問題の種類:キャプチャしたものを渡される場合と,自分でキャプチャする場合があるfilter, follow tcp streams, export object, statistics?のかな?
  • Wireshark
  • filter, follow tcp streams, export object, export selected packet bytes, statistics

書籍

  • マスタリング TCP/IP 入門編
  • 実践パケット解析

Webサイト

Web

調査

攻撃

  • SQL インジェクション
    • ' と --
    • UNION 句で他のテーブルを見る
    • 目は見えない SQL 文を想像する必要ありエスパー
    • 他キーワード:GROUP_CONCAT, LOAD_FILE, Blind SQL Injection, Error Based SQL Injection
  • ディレクトリトラバーサル
    • index.php?id=about -> index.php?id=/etc/passwd
  • Cookie の書き換え

サイト

  • XSS game
  • alert(1) to win
  • prompt(1) to win

書籍

  • 体系的に学ぶ安全な Web アプリケーションの作り方
  • めんどうくさい Web セキュリティ
  • Web Security Testing Cookbook

東海道新幹線を予約したい

どうやって予約するのが良いのだろう?

インターネット予約

何らかのカードが必要らしい.どっちを選択しても,登録後カードが届いてようやく利用できる.カードが届くまで 2~3 週間.今予約したい場合困る.

  • プラスEX
    • UFJ-VISA カードを持っているので,それに年 500 円で機能を付加できる.
    • だが,重大な問題が指摘されている. http://www.tepkode.com/?p=1140
  • エクスプレスカード
    • 年 1000 円,クレカ増やしたくない
  • モバイルSuicaのエクスプレス特約
    • 年 1000 円,これかなあ

窓口・販売機

物理的に行かないといけない.

電話予約サービス

https://www.jr-odekake.net/goyoyaku/phone/
https://www.jr-odekake.net/goyoyaku/phone/purchase.html

「※JR東日本の駅では、東海道新幹線などJR東海エリアを含む予約はお受け取りいただけません。」やめろ

ちなみに:予約開始時刻

新幹線の予約は 1 ヶ月前の日の 10:20 からできるらしい.

追記:えきねっと

えきねっとからインターネット予約可でした

google perftool を使う

リンクする

これが意外と難しい。

https://code.google.com/p/gperftools/wiki/GooglePerformanceTools

これを読むと、-lprofiler をつけてコンパイルするだけで、あとは環境変数でプロファイリングを行えるようになると書かれている。

しかし、実際にはそうならない。これだけでは何も出力されない。

これは、gcc で "--as-needed" というオプションがデフォルトで有効になっているせいである。以下のようにすると解決する。 http://stackoverflow.com/questions/9577627/ubuntu-11-10-linking-perftools-library

g++ main.o -Wl,--no-as-needed -lprofiler -Wl,--as-needed

実行する

CPUPROFILE=hoge.prof ./hoge

表示する

kcachegrind が最高。 http://nu-pan.hatenablog.com/entry/20140410/1397099300

google-pprof --callgrind hoge hoge.prof > hoge.cg
kcachegrind hoge.cg

大塚家具に椅子を見に行った → バロンにしようかな?

話題の大塚家具に行って,椅子を試させてもらった.

アーロン,バロン,コンテッサエルゴヒューマンあたりのよく聞くオフィスチェアを候補として試した.結論から言うとバロンにしようかと思っている.その経緯を思い出せるようにメモ.

アーロン

前提知識として,作業が PC 操作中心の人は後傾姿勢用の椅子,筆記作業などが中心の人は前傾姿勢が良いと言われている.

僕も時間の和で考えれば PC 作業中心になると思う.アーロンは前傾用なので,その点では今回の候補として若干微妙なのである.

というわけで,一応座ってはみたけど,特別なものを感じることもなかったので,候補から最初に除外.

エルゴヒューマン

周りの人からよく名前を聞くので最も気になっていたが,ご自慢のランバーサポートが強すぎて気に入らなかった.

背もたれの上下位置を中心に色々な調整を試したが,ランバーサポートが,どちらかというと邪魔.背中を背もたれに接触させるためには,それなりに強くランバーサポートを押しこむことになる.ランバーサポートが強く当たるのが大変気になるので長くこの姿勢を続けられる気がしない.また,面ではなくいくつかの「点」で腰〜背中が支えられている状態を抜けだせず,あまり快適ではなかった.

もっとも,ランバーサポートは,座り心地を改善するためというよりは,疲労を改善するためのものなのである.「良薬口に苦し」ということで,すわり心地は良くなくても,実は価値があるのかもしれない.ただ,ランバーサポートは浅く腰掛ける人の姿勢を正すものとの噂もある.一方僕は深く腰掛けたいので,そういう理由でちょっと合わないのかも.あるいは単純に体型があっていないのか.

とにかく,強く押されすぎて気になるというのと,背中との接触が「点」になっていて気持よくないということで,エルゴヒューマンは今回はやめる.

バロン

バロンは最初からかなり快適に感じた.背中との接触が「点」になっていたエルゴヒューマンとは対照的に,メッシュが上手くたわんで,背中を「面」でちょうどよく包み込んでくれる.

また,腰の部分が少し出たデザインになっている背もたれが,僕の体にはちょうどフィットする.深く腰掛けるのが好きだからか,ランバーサポートなしで,腰の部分も気持ち良い押され具合.

むしろ,ランバーサポートがあると,せっかく「面」で包み込んでくれていた背もたれが,ランバーサポートばかりの「点」になってしまうように感じられた.ランバーサポートは無しが良い.

コンテッサ

コンテッサとバロンは,同じ岡村製作所が作っていて,僕はコンテッサを 5 年間使ってきた.

コンテッサが上位機種,バロンが下位機種と言われる.僅かなスペック・サイズと操作性のみが違うと書いているサイトが多い.が,それなりに別物であるのではないかと僕には感じられる.写真だけでも,背もたれのデザインは結構違うように思う.腰のやや突き出ている部分から下について,バロンのほうがメッシュが広い.これがすわり心地に影響しているような気がする.

ただ,コンテッサにはランバーサポートの付いたものしか置いていなかったので,ランバーサポート無しのコンテッサにも座ってみたい.少なくとも,ランバーサポートに付いたコンテッサの座り心地(=これまで 5 年間使ってきたもの)より,ランバーサポート無しのバロンのほうが,快適に感じた.


(ちなみに 5 年前は,あまり比較をせず,近場ですぐ手に入るとのことだったコンテッサをすぐに買ってしまったのであった.)

いろいろ

バロン・コンテッサには最近,「スタンダードメッシュ」の他に「グラデーションメッシュ」が発売されている.これは,(オシャレではなく)メッシュの密度を均一にせず負荷をより分散させるというものである.

良さそうなので是非こっちにしてみたいが,グラデーションメッシュにすると,メッシュシートが選べず,強制的にクッションシートになるらしい.なんで!?と思ったけど,メッシュシートは欠陥だという指摘もあり,クッションシートのほうが良いかもしれない.

ヘッドレストは,可動式のものと固定式のものがある.バロンの可動式ヘッドレストは,可動機構がかなりちゃっちい.固定できず簡単に動いてしまうので,せっかく前に出せても荷重をかけるとすぐに後ろに戻っていく.アホらしいのでさっぱりした固定式のほうが良いと思う.

それから,椅子に関しては基本的に腰部分の話が多いが,僕が困っているのは,どちらかというと腰よりも首と肩である.猫背というほどではないが,PC に夢中になっていると首から上を PC に近づけてせり出してしまい,後から首の痛みになる.首を前に出さなくても済むように,フォントを大きくしたり,アームでディスプレイを顔に近づけるといった工夫を別途したい.

こういうことを考えていると,クルーズ&アトラスにも興味が出てくるが,あれは 27 インチディスプレイを 3 枚とか使っていてもいけるサイズなのだろうか?見た感じ,小さそう.

Finding the Hierarchy of Dense Subgraphs using Nucleus Decompositions (WWW'15)

概要

  • たくさんの密グラフの包括的・階層的表現
    • 沢山の密部分グラフが欲しい
    • 密度や大きさの分布が欲しい
    • 構造的関係(入れ子)が知りたい
  • いかした図を出力する
    • グラフを「核の森」で表す (Nucleus Decomposition)

定義 k-(r,s)-nucleus

  • パラメータ k, r, s がある (r < s)
  • 別のグラフを考える
    • 頂点はサイズ r のクリーク
    • サイズ s のクリークを hyperedge だと思う
  • このグラフの k-core を取る

関係

  • r = s-1 なら k-clique community
  • k-(1,2)-nucleus は k-core
  • k-(2,3)-nucleus は k-truss に近いけど違う

性質

  • (r, s)-核は層族 (laminar family)
    • K_r の集合で考えるからである.
    • K_r を共有しない.K_r-1 なら共有するかも(OK).
  • それぞれの k についての核を森で表現

結果

  • いかした図

Ubuntu 14.04 に nvidia の最新ドライバを入れる

カーネルをアップデートする度に画面が真っ黒になってしまう.nvidia のドライバを更新すると治る.面倒くさい.

1. 画面が映るように起動する

nolapic nomodeset を引数につけて Linux を起動

2. コンソールに入る

Ctrl+Alt+F1.Ctrl が Caps の場所ではないことに注意.

3. インストール

sudo service lightdm stop
sudo ./Nvidiaなんたら

http://askubuntu.com/questions/149206/how-to-install-nvidia-run

C++

reinterpret_cast は rvalue reference を扱ってくれない

C++11 の union が超便利

C++11 の STL では push 系に rvalue reference を受け取るオーバーロードが追加されてる

emplace 系は forward するので,もらった引数が直接与えられたコンストラクタが呼ばれる.push 系は rvalue reference を受け取るコンストラクタが呼び出される.

築地の寿司屋でお寿司を食べる

中高時代の部活の友人たちと築地で最も有名な「寿司大」というお店にお寿司を食べに行きました.忘れないようにメモ.平日(火曜日朝).

  • 始発では無理と判断し,前日からカラオケボックスで夜を明かした
    • 築地は銀座から歩いてすぐ,銀座にはカラオケがいっぱい
    • 6 時に到着して 6 時間待ちという最近の情報を目にしたため
    • お店の人も話していたが,ここ最近で急激に混雑度が上昇しているらしい
    • 1 年前の食べログなどの情報は(少なくとも混雑度に関しては)当てにならない
    • 築地がなくなることが関係しているか?(とお店の人も言っていた)
  • 3:30 過ぎに到着
    • 前には,2 人組,6 人組,4 人組 が居た
    • 先頭の人は 3:00 頃着だったようだ
    • 到着後すぐに後ろに列が伸びたのでかなり良いタイミングであった
  • 5:00 開店
    • 最初のロットでは入れず
    • 1 席余るからと後ろのお一人様が先に案内された
  • 5:50 頃入店
    • おいしい
    • 「おまかせ」の後での追加注文は,できるっぽい(右の客はやっていた)
    • しかし,お腹いっぱいになってしまい追加注文せず
    • 店内で聞いた話によると,その頃既に 5 時間待ち

寿司は確かに美味しい.シャリが大きいのがちょっと勿体無いと思った(好み?).小さくしてもらうことができるようだ.

次いで有名な「大和寿司」はここまでの混雑ではなかった.3:30 到着時には誰も並んでいなかった.また,周囲にはそれら以外にも寿司屋が大量に存在した.寿司大だけが異様な人気を誇る.

静的ライブラリ,共有ライブラリ,動的リンク,静的リンク

静的ライブラリとは

  • 静的ライブラリ (static library) は ar コマンドで .o をまとめて作った .a ファイル.
  • libhoge.a が有る時,gcc に -lhoge オプションを与えるとリンクされる.
  • データが全て含まれるので .a ファイルはコンパイル時のみ必要
  • .a ファイルの中身は .o ファイルの連結のようなものであり,連結時に与えた順番通りに読み込まれる

共有ライブラリとは

  • 共有ライブラリ (shared library) は gcc に -shared オプションを与えて得られる .so ファイル.
  • libhoge.so が有る時,gcc に -lhoge オプションを与えるとリンクされる.

共有ライブラリの動的リンクとは

  • 共有ライブラリは通常は動的リンクされる.
  • .so ファイルの内容は実行ファイルに含まれず,.so ファイルが必要であるということが記録される.
  • 実行時に,動的リンカローダがメモリマップを弄って同じプロセスから使えるようにする.
  • ldd コマンドで動的リンクされ依存している .so ファイルが見れる.

共有ライブラリの静的リンクとは

  • 共有ライブラリも静的リンクできる.gcc に -static オプションを与えると共有ライブラリが静的リンクされる.この場合,.so フィアルに依存しない.
    • 他にも 例えば -static-libstdc++ と与えると libstdc++.so への依存が消える.
  • 吐かれるバイナリは大きくなる.

動的リンクの利点

  • ファイルサイズが小さくなる.
  • 複数のプロセスから共有することにより使用メモリも少なくなる (Position Independent Code (PIC)).
  • ABI を壊さなければ,共有ライブラリを入れ替えるだけで処理を変えられる.

静的リンクの利点

  • .so ファイルが設置されていない環境でも動く.

Position Independent Code (PIC) とは

  • 実行時の再配置が不要なオブジェクトファイル.
  • gcc に -fPIC オプションを与えると生成される.
  • PIC でない共有ライブラリを作ることも可能だが,再配置のぶんプログラムの起動が遅くなる上,書き換えによってメモリ上の共有が行われなくなる.
  • しかし,PIC でない共有ライブラリの方が読み込み後の実行速度は早い(と思う).

Ubuntu 14.04 上で Eclipse CDT 日本語化 + ランチャー登録

http://ubuntu.hatenablog.jp/entry/20140528/1401270897

上に加えて以下を行わないと起動しなかった.

eclipse.ini コメントアウト

#-showsplash
#org.eclipse.platform

pleades のパス

pleades のプラグインのパス指定は必ずフルパスで.

追記

使ってると落ちる.(昔の ICPC アジア地区大会を思い出す.)

Babel も問題が起きるみたいだし,しばらく英語のまま使うことにしよう.

Ubuntu 14.04 + TeXlipse で快適な日本語原稿執筆

求めた条件は以下.

  • 日本語がビューワでもちゃんと表示される
  • SyncTeX がちゃんと動く

結論から言うと,以下を設定すると上手く行った.

  • ビューワには pdf4eclipse
  • ビルダーには pdflatex
  • フォントを全て埋め込む (dvipdfmx に -f ptex-ipa.map)
  • \documentclass{scrartcl} \usepackage[whole]{bxcjkjatype} (LaTeX-CJK - TeX Wiki)

TeXlipse の設定は以下のサイトがかなり有用.


普通に設定すると,英語のみではすぐに快適に動く.しかし,日本語が表示されず,その症状と戦うことになった.以下は,試行錯誤のログ.

違うビューワを用いる方針

SyncTeX の連携を活用してみたかったので,TeXlipse との連携が必要.

デフォルトで日本語が表示できないのは,ビューワとして pdf4eclipse が用いられるためである.したがって evince なんかをビューワとして用いれば良いように思う.

しかしこの設定が上手く行かない.また,pdf4eclipse はフォントが埋め込まれていれば日本語も正しく表示できるらしい.どうせなら生成する PDF にはフォントを埋め込んだほうが良さそうなので,PDF にフォントを埋め込む方針にする.

uplatex + dvipdfmx, platex + dvipdfmx

pdflatex は日本語がサポートされていないと記憶していたし,ちょっと試してみたらやっぱりコンパイルできなかったので,(u)platex をまずは試す.

フォントを埋め込むことは頑張るとできた.いくつか情報があるが,上手く行かないものと上手く行ったものがある(あるいは両方が必要だったのかもしれない).


この方法でフォントを埋め込むと,pdf4eclipse で確かに日本語が表示された.めでたしめでたし……と思いきや,この方法で生成された PDF では,SyncTeX で位置が大幅にズレるということに気づいた.がっかりである.どうやら,そもそも日本語を含めなくてもズレてしまう.

pdflatex で日本語をコンパイル出来るようにする作戦

一方,英語のみで pdflatex を試すと SyncTeX は大変正確に場所が一致する.pdflatex に日本語をコンパイルさせる簡単な方法はないものかと思い調べたところ,意外とかなり楽であった.

適当に apt でパッケージを入れまくり,以下のページに従った.

白い巨塔で学ぶ教授職

ドラマ「白い巨塔」を見ました.前半は主人公である財前助教授が教授選で戦い教授になるまでの物語です.教授という職がいかに素晴らしいものであるか,そして教授になるのがどれほど難しいことかといったことが描かれています.医学部(大学病院)の話ではありますが,我々にも通じるところがあるはずです.

1 話

(財前助教授の意見を受けて)
東教授「君は,私の言葉を批判するのかね?」

助教授(=現准教授)とは言え,教授に意見するなど以ての外である.教授のお言葉は常に正しい.

3 話

(財前助教授の説明を受けて)
東教授「君,言葉を慎みたまえ!君にそのような講義を聞かなくてもわかっているよ.それとも,既に教授にでもなったつもりかね?」

教授は学問を究めし者である.当然全てをご存知である.出しゃばった説明は失礼である.

5 話

東教授「今のはなんだね?」
財前助教授「新人局員の柳原であります.」
東教授「君が言わせたのかね?」
……
東教授「一介の医局員が教授に意見を言うのは百年早いよ.」

ましてや医局員(≒博士課程学生)が教授に意見を述べるというのは到底あり得ないことである.

5 話

鵜飼教授「里見君,君は志のある良い医者だが,僕の方針に従えないのなら,第一内科を出て行ってもらうしかないね.忘れちゃいけないよ?僕は教授で,君は助教授なんだよ.」

常に立場を忘れてはならない.研究室に所属する以上,教授の方針は絶対である.

7 話

里見助教授「どうしてお前はそんなに教授になりたいんだ?」
財前教授「なんでかなあ.」
里見助教授「お前は医者として確かな腕を持ってる,たくさんの患者を救ってきた,それじゃだめなのか?」
財前教授「いくら命を救っても,教授になれなきゃ意味無いね.俺は偉くなりたいんだよ!一番になって,より多くの人間を従えて歩きたい.男なら誰でも思うことじゃないのか?」
里見助教授「少なくとも俺は思わんがね.」
財前教授「本当かね,自信が無いだけじゃないのかね?」

男なら誰でも教授になりより多くの人間を従えて歩きたいのである.そう思わない者は自信がないだけである.

10 話

財前教授「里見くん,僕に意見をするのは最後にしてくれないか?年を開けたら僕は教授に就任する.一助教授の意見にいちいち耳を傾けてはいられないからな.」

教授に就任すれば,例え同期であれ,当然,一助教授の意見にはいちいち耳を傾けていられなくなる.



真面目に身にしみたセリフのメモ

……ここまでの記事はもちろんジョークです.とにかく権力を急ぐ財前は,最終的に医療ミスによる裁判に負ける上,病気で早死にしてしまいます.幸せとは思えません.一方,誠実な仕事を貫く里見は,私立の病院に飛ばされてはしまうものの,幸せそうに暮らします.そういった物語だと言ってしまえばそれまでですが,なんとなく身近な話のようにも感じます.

7 話

里見助教授「教授になるのは目的じゃなくて結果だからな.」
子供「ねえ,お父さんはいつ教授になるの?お父さんも偉い教授になるんでしょ?」
里見助教授「教授だからって偉いわけじゃないんだ.教授でも,教授じゃなくても,自分の仕事をしっかりやる人はみんな偉いんだ.」

10 話

財前教授「里見くん,僕に意見をするのは最後にしてくれないか?年を開けたら僕は教授に就任する.一助教授の意見にいちいち耳を傾けてはいられないからな.」
里見助教授「俺は祝えないよ.悪いが,君が教授になったことを喜べる日が来るとは思えない.」

11 話

東前教授「学者というのは野心や器用さだけで務まるものではない.これからゆっくりと拝見するものとしよう.」


ところで,白い巨塔ですが,どうやらインターネットを通じた動画配信サービスで配信されておらず,物理的なレンタルを利用するしかないようで,面倒でした.(貸出中の場所が多くて,2 箇所の TSUTAYA を組み合わせることにより全巻揃った.)

ACM Paris Kanellakis Award (Theory and Practice Award)

Paris Kanellakis Theory and Practice Award はコンピュータの世界に重要な実用的インパクトを引き起こした理論的研究成果に対して贈られる賞だそうです.賞金は $10,000.

Paris Kanellakis 氏はデータベース分野の研究者でしたが,1995 年に飛行機事故に巻き込まれ亡くなったそうです.賞金にはご両親からの寄付に加え ACM の分科会などからの支援が含まれているそうです.

以下は受賞者と受賞の対象となった成果の表です.上記の Wikipedia 英語版の記事に記載されている表の日本語版……のつもりでしたが,Wikipedia にはよくわからない説明が多くても試しに公式ウェブページの説明を開くとよく知っているキーワードが出てきたりということも多く,そこそこの部分は結局公式ウェブページの説明に基づいています.

受賞者 受賞の対象となった研究成果
1996 Leonard Adleman, Whitfield Diffie, Martin Hellman, Ralph Merkle, Ronald Rivest, and Adi Shamir 公開鍵暗号
1997 Abraham Lempel and Jacob Ziv データ圧縮(LZ アルゴリズム
1998 Randal Bryant, Edmund M. Clarke, E. Allen Emerson, and Kenneth L. McMillan 記号モデル検査と BDD
1999 Daniel Sleator and Robert Tarjan スプレー木
2000 Narendra Karmarkar 内点法
2001 Eugene Myers シーケンスアラインメントアルゴリズム(BLAST)
2002 Peter Franaszek Constrained Channel Coding
2003 Gary Miller, Michael Rabin, Robert Solovay, and Volker Strassen 素数判定アルゴリズム(Miller-Rabin,Solovay-Strassen)
2004 Yoav Freund and Robert Schapire ブースティング機械学習
2005 Gerard Holzmann, Robert Kurshan, Moshe Vardi, and Pierre Wolper 形式的検証システム(COSPAN,SPIN)
2006 Robert Brayton 回路設計のための論理合成
2007 Bruno Buchberger グレブナー基底
2008 Corinna Cortes and Vladimir Vapnik SVM (Support Vector Machine)
2009 Mihir Bellare and Phillip Rogaway Practice-Oriented, Provable-Security (POPS)
2010 Kurt Mehlhorn Library of Efficient Data types and Algorithms (LEDA)
2011 Hanan Samet 4 分木等の多次元データに対するデータ構造
2012 Andrei Broder, Moses S Charikar and Piotr Indyk LSH (Locality-Sensitive Hashing)
2013 Robert D. Blumofe, and Charles E. Leiserson 並列プログラミング(Cilk 等)

回路・ハードウェア寄りの分野は不得手なので不正確かもしれません.より適切な日本語訳などもし有れば教えて頂ければと思います.