Windowsイメージファイルから直接ファイルを検索・エクスポートする
概要
フォレンジックなどをやっていると、ディスクイメージを扱う機会は多いですよね。
中に入っているファイルやフォルダを検索したり、エクスポートしたくなる場面もよくあると思います。
FTK Imager とか Arsenal Image Mounter でマウントして一生懸命カチカチしてもよいのですが、同じ作業を数百台に対してやるのか?自動化は?といつも思っていました。ので作りました。
これらのツールは、イメージファイルからファイルやディレクトリ, 代替データストリームを直接検索したり、エクスポートする ことができます。
こんな感じで検索したり
> ntfsfind.exe IMAGEFILE.raw ".*\.evtx"
/Windows/System32/winevt/Logs/Setup.evtx
/Windows/System32/winevt/Logs/Microsoft-Windows-All-User-Install-Agent%4Admin.evtx
/Logs/Windows PowerShell.evtx
/Logs/Microsoft-Windows-Winlogon%4Operational.evtx
/Logs/Microsoft-Windows-WinINet-Config%4ProxyConfigChanged.evtx
...
その結果を別コマンドに流し込んでエクスポートしたりね。
> ntfsfind.exe IMAGEFILE.raw ".*\.evtx" | ntfsdump.exe IMAGEFILE.raw
詳しくはGitHubのREADMEを読んでください。あとスターもつけてくれるとうれしい。
使い方
コンパイル済みバイナリはReleasesからダウンロードしてちょ。
下記はdd(raw)形式のイメージファイル ntfs.raw から .evtx 形式のファイルを検索するときのコマンドです。第二引数は検索クエリなのですが、ファイルパスのセパレータは / で指定してください。これは Linux/Windows いずれのバイナリでも共通です。
> ntfsfind.exe .\ntfs.raw ".*\.evtx"
下記はドライブ直下の hoge.txt ファイルを抽出する際のコマンドです。
> ntfsdump.exe .\ntfs.raw "/hoge.txt"
あるいは検索結果をぶち込んでもいい。こうするとたくさんのファイルを一気にバコっと持ってこれる。
> ntfsfind.exe IMAGEFILE.raw ".*\.evtx" | ntfsdump.exe IMAGEFILE.raw
ただ標準入力から読み込んでいるだけなので、一度ファイルにリダイレクトしてからntfsdumpに入れてもなんでもOK。
インストール方法
コンパイル済みバイナリ
上記の通り、Windows, Linux(Ubuntu) 用のバイナリを GitHub の Releases で公開しています。
遷移先のページからバイナリをダウンロードして実行してください。

PyPI からのインストール
Python3.13 以上をサポートしています。
インストールする際は下記のコマンドを実行してください。
$ pip install ntfsdump ntfsfind
おわりに
2つのツール(に限らず私のツール全般)は、ミニマルな機能のみを備えた折りたたみナイフのような設計思想のもと作っています。バイナリ1つ持っておけば使えて便利だね。的なものであることが望ましいかなと個人的には思っています。
みなさんの普段の作業の自動化に役立てたり、ツールボックスの片隅においておいていただければうれしいかな。と思います。
お し ま い
Discussion