文字列検出ツール "istrings" の使い方 2005年7月9日 はせがわようすけ [email protected] Forensicでの文字列検出 dd で取得したディスクのイメージ ページファイル(メモリの残片) 電子メールの残骸 : 文字列の検出には strings コマンドを使う。 ファイル内で連続するASCII文字を表示する。 stringsコマンド ファイルに含まれる文字列を検出するツール。 00 1E 6F 20 01 00 74 20 02 00 00 20 03 00 FA 20 04 0B 1E 20 05 00 00 20 06 00 00 20 07 00 00 20 08-09 4E 6F 13 00 20 20 4文字以上のASCII 文字の連続を検出 0A 72 00 20 0B 6D 00 20 0C 61 20 20 0D 6C 20 20 0E 2E 20 00 0F 0123456789ABCDEF 64 ........Normal.d 20 ot.......... 00 C:\>strings 文書1.doc bjbj : 0 2 3 o0[0L0 Normal.dot Microsoft Word 9.0 : stringsコマンドの限界 ASCIIにしか対応していない 日本語の検出ができない 一部のstringsではUnicode可だが、こ れもASCII文字の範囲のみ。 日本語対応の stringsが 欲しいよぅ。 jstrings 開発 日本語対応の strings jstrings Shift_JIS、EUC-JP、ISO-2022-JP に対応 した strings コマンド 文字コードに関連した部分を全てハード コーディングしているため拡張性がない Unicodeに ちゃんと対応し て 欲しいよぅ。 istrings 開発 文字コードの基本 文字集合 文字をたくさん集めたもの 符号化文字集合 集めた文字に番号を順に振ったもの エンコーディング メモリやディスク上での文字の表現方法 日本語対応の strings istrings 日本語以外にも多くの文字コードに対応し た strings コマンド エンコーディングの基本部分のみハード コーディング 文字集合は外部ファイルで定義 拡張性が高い あとから文字コードの追加が可能 基本的な使い方 C:\>istrings -n 5 -iUTF-16 Book1.xls 5文字以上の文字列を検出 UTF-16の文字列を検出 -nオプション: 文字列とみなす文字数を指定 -iオプション: 文字コードを指定 設定ファイル 指定されたエンコーディングに関する情報を取 得するため、起動時に設定ファイルを読み込む。 C:\>istrings 2 設定ファイル 4 3 4 マッピングファイル 設定ファイルの場所 以下の順に設定ファイルを探し、最初に見つ かったものを読み込む。 -e オプションにより指定されたファイル 環境変数 ISTRINGS_INI により指定され たファイル コンパイル時に決定され、EXEファイルに 埋め込まれたファイル 設定ファイルの内容 設定ファイルは、エンコーディングごとに以下の ようなセクションを構成している。 [Shift_JIS] alias=CP932 alias=Windows-31J system=DBCS mapfile0=C:\map\CP932-1.map mapfile1=C:\map\CP932-2.map : [エンコーディング名] : エンコーディング名 別名 エンコーディング種別 マッピングファイル 設定ファイルの内容 エンコーディング名、別名は - i オプションで 指定される名称 C:\>istrings -iUS-ASCII file.xls C:\>istrings -iASCII file.xls [US-ASCII] alias=ASCII system=DBCS mapfile0=ascii.map : 設定ファイルの内容 エンコーディングの種別は、以下のいずれか DBCS 一般的な1バイトまたは2バイトの文字コード Shift_JIS、ASCII、ISO-8859-* など UTF-8 UTF-16LE UTF-16BE [UTF-16LE] alias=UTF-16 system=UTF-16LE mapfile0=unicode.map : マッピングファイル 指定されたエンコーディングにおいて有効な 文字の範囲を定義したファイル bytecount=1 09 20-7e 1文字のバイト数 文字として有効な値 その他のオプション -f : ファイル名を表示する -p : 文字列の見つかった場所を表示する -c : 文字コードを表示する -t : テキストモードで出力する C:\>istrings -f -p -c -t file.dat file.dat[0000004d](ASCII): This is a pen. file.dat[000000bf](ASCII): Delicias Wine. file.dat[000001d0](ASCII): Flesh tomato file.dat[000001f7](ASCII): PPT : 出力 結果は、コマンドラインで指定された文字 コードで出力される。 iconv や wiconv のような文字コードコン バータを用いると便利 C:\>istrings -t -iUTF-16 file.dat | wiconv -fUTF-16 -t932 | more 応用 - base64の検出 マッピングファイルを用意 することにより、base64の 残骸を検出できる。 bytecount=1 2B ・・・ + 2F ・・・ / 30-39 ・・・ 0-9 3D ・・・ = 41-5a ・・・ A-Z 61-7a ・・・ a-z C:\>istrings -t -ibase64 file.eml : filename= attached grGC6oLNIGJhc2U2NCCCxYNHg5ODUoFbg2iCs4LqgumDdI gsggb3Blbm15YSBNTCCC5oLrgrWCrYLLgUINCg0KaHR0cD eXdvcmQvb3Blbm15YU1MDQoNCg== 課題 ISO-2022系のエンコーディングに対応で きていない ISO-2022-JP、EUC-JP には jstrings が 必要 UnicodeはBMP内の文字にしか対応して いない コードが汚い、未整理 Q&A ご質問をどうぞ!! http://openmya.hacker.jp/hasegawa/ hasegawa@ openmya.hacker.jp
© Copyright 2024 ExpyDoc