セキュリティアカデミー勉強会
話を聞いてくださった方々、ありがとうございました。参加してくださった方が満足できる内容だったか甚だ疑問ですが、まぁそこは伊原さんの話で元をとったということで。
後日、当日のプレゼン資料は公開するつもりですが、とりえあずいろいろ内容をまとめてくださっています。
ISO-2022対応はできるだけ早く終わらせたいですねぇ。
あと、要望としてあがっていたのは、無視する文字の追加でしょうか。例えば、改行コードで細切れになったテキストファイルや、Unicode の ZWNBSP (U+FEFF; BOM) を含むファイルなどにおいて文字列を検出する際、CR/LFなどは文字数としてはカウントしないものの、これらをはさむ "AB" 0x0d 0x0a "CD" のようなバイト列をうまく検出したいという状況は確かにあるかも知れません。
あと、覚えてる範囲でフォローを。
- cp932.cって何?
- すいません、CP932用のマップファイルを作るための作業用プログラムです。これは istrings のコンパイルには必要ありません。
- Linux でも動くの?
- Makefileを用意すればコンパイルできると思います。むしろ、パイプやリダイレクトが Windows だと遅いので、Linux や Unix 系のOS上のほうが速く動作するかも知れません。
- 有効な文字一覧ってどうやって調べたの?
- このあたりを参考にしました
- DBCSやUTF-16で、バイト列が leadbyte - tailbyte - leadbyte としても、leadbyte - leadbyte - tailbyte としても有効であった場合に、先頭の1バイトを無視して後者の解釈で文字列を検出することはできるか?
- 現状ではできません。昔、jstrings でもそれを実現しかけたことはあるのですが、途中で投げ出しています。やりたいんですけどね。
- ISO-2022-JP でエスケープシーケンスの抜けたバイト列はどのように解釈される?
- jstrings では、オプションで指定することで、エスケープシーケンスの抜け落ちているバイト列をどの文字集合として扱うかを指定できます。
その他、forensic な用途以外にも、ユーザから「メールボックス壊れた」といった場合にその残骸から少しでも可読部分を復旧させる管理者のお仕事だとか、アプリケーションのEXEやDLLからエラーメッセージなどを抽出しておいて、事前にトラブルシューティングの手がかりを作成しておくだとか言った用途にも使えるね、という話をされている方もいましたね。