
analyzeMFT.pyは、NTFSファイルシステムからMFTファイルを完全に解析し、結果を可能な限り正確に複数の形式で表示するように設計されています。
ステータス: すべてのテストが Python 3.8-3.12 の Windows、macOS、Linux で合格しています。
# Install
pip install analyzeMFT
# Basic usage
python analyzeMFT.py -f MFT_FILE -o output.csv --csv
# Generate test MFT for testing
python -c "from src.analyzeMFT.test_generator import create_test_mft; create_test_mft('test.mft', 100)"
# Analyze with multiple outputs
python analyzeMFT.py -f test.mft -o output.json --json --hash
AnalyzeMFT は、NTFS マスターファイルテーブル (MFT) を解析および分析するために設計された Python ベースのツールです。
生のバイナリ MFT データを、デジタルフォレンジック、インシデント対応、ファイルシステム分析に適した構造化された人間が読みやすい出力に変換します。このツールは幅広い出力形式をサポートし、詳細なメタデータ抽出を提供するため、調査担当者は NTFS ボリュームのファイルタイムスタンプ、属性、構造的特性を調査できます。
AnalyzeMFT の主な目的は、MFT レコードをデコードすることでファイルシステムのアクティビティを再構築するフォレンジックアナリストを支援することです。各レコードには、ファイル名、作成時刻と更新時刻、ファイルサイズ、ディレクトリ関係などの重要な情報が含まれています。このツールはアクティブなエントリと削除されたエントリの両方を処理し、包括的なタイムライン分析とアーティファクトリカバリを可能にします。破損した、または不完全な MFT エントリを管理するための堅牢なエラーハンドリングを備え、損傷したファイルシステムでも信頼性の高い処理を保証します。
一般的なフォレンジックワークフローと統合するために、複数の出力形式がサポートされています。ユーザーは結果を CSV、JSON、XML、または Excel ファイルとしてエクスポートして、レビューやレポート作成に利用できます。タイムライン分析には、mactime やその他のツールと互換性のあるボディファイル形式が利用可能です。SQLite エクスポートは、クエリと長期保存のためのリレーショナルデータベース構造を作成します。TSK タイムラインおよび log2timeline CSV 形式により、確立されたフォレンジックプラットフォームへの直接取り込みが可能です。
大規模な MFT ファイルを効率的に処理するために、パフォーマンスの最適化が組み込まれています。処理は設定可能なチャンク単位で行われ、メモリ使用量を管理します。これは、数百メガバイトの MFT を分析する際に特に重要です。ハッシュ計算中はマルチプロセッシングを使用して処理時間を短縮します。ユーザーはシステムリソースに基づいてワーカープロセスの数とチャンクサイズを調整できます。進行状況インジケーターにより、長時間の操作中にリアルタイムのフィードバックが提供されます。
このツールは、さまざまな運用ニーズに合わせて設定可能な分析プロファイルをサポートしています。デフォルトプロファイルは一般的な使用にバランスの取れた処理を提供します。クイックプロファイルは迅速なトリアージのために処理オーバーヘッドを最小限に抑えます。フォレンジックプロファイルは、すべてのタイムスタンプバリアントと拡張属性を含む最大のデータ抽出を可能にします。パフォーマンスプロファイルは、大規模データセットで速度とリソース効率を優先するように内部設定を調整します。
データランを含むファイルレコード属性に対してハッシュ計算が利用可能です。常駐データおよび非常駐データに対して、MD5、SHA256、SHA512、CRC32 ハッシュを生成できます。この機能はファイルの識別と整合性検証をサポートします。ハッシュはデフォルトで並列実行され、プロセス数は設定可能です。ユーザーは制約のある環境で実行する場合、マルチプロセッシングを無効にできます。
設定はコマンドラインオプションまたは JSON または YAML 形式の外部ファイルを通じて管理されます。設定ファイルでは、出力設定、分析プロファイル、ハッシュオプション、フィルタリング条件を定義できます。サンプル設定ファイルは --create-config オプションを使用して生成できます。--list-profiles オプションは、利用可能なすべての組み込みプロファイルとその説明を表示します。
入力は -f オプションの後に MFT ファイルへのパスを指定して指定します。出力形式はファイル拡張子または明示的なエクスポートフラグによって決定されます。-o オプションで出力先を設定します。SQLite にエクスポートする場合は、--sqlite フラグを使用する必要があります。CSV 出力の場合、出力ファイルが .csv で終わっていれば追加のフラグは必要ありません。
開発およびトレーニング目的のために、テスト MFT ジェネレーターが含まれています。--generate-test-mft オプションを使用すると、ユーザーは指定された数のレコードを持つ合成 MFT ファイルを作成できます。この機能は、ツールの機能の検証、パーサーのテスト、またはデモデータの作成に役立ちます。
コマンドラインオプションには、出力を増やすための -v とデバッグレベルのロギングのための -d を使用した冗長性制御が含まれています。これらは処理中の問題の診断に役立ちます。エクスポートオプションを使用すると、ファイル拡張子に依存せずに形式を選択できます。パフォーマンスチューニングオプションには、レコードバッチサイズの --chunk-size とハッシュスレッド数を設定する --hash-processes があります。
このツールには構造化されたヘルプシステムが含まれています。スクリプトを --help で実行すると、利用可能なすべてのオプションとその説明が表示されます。使用法の概要には必須およびオプションの引数が表示されます。エクスポート、パフォーマンス、設定、デバッグ設定など、各カテゴリのオプションについて詳細な説明が提供されます。
バージョン 3.1.1 では、コード品質とテストカバレッジに大幅な改善が含まれています。テストスイートには現在、すべての主要コンポーネントをカバーする 224 の包括的なテストが含まれています。GitHub Actions CI/CD パイプラインは、Linux、Windows、macOS 上の Python 3.8-3.12 全体でコード品質を保証します。Bandit によるセキュリティスキャンと Safety による依存関係チェックがビルドプロセスに統合されています。Codecov によるコードカバレッジレポートはテストの効果を追跡します。
計画されているエクスポート形式には、脅威インテリジェンス共有のための STIX/TAXII、集中ログ分析のための Elasticsearch および Splunk との統合が含まれます。Neo4j へのグラフデータベースエクスポートにより、ファイルシステムの関係の視覚化が可能になります。ユーザーはツール内で直接、日付範囲、ファイルタイプ、サイズで出力をフィルタリングできるようになります。レコードを段階的に調査できるインタラクティブモードが導入される可能性があります。
プロジェクトへの貢献は GitHub プルリクエストを通じて受け付けています。開発者は Python 3.8 以上との互換性を確保する必要があります。すべての新しいコードには型ヒントと包括的な単体テストを含める必要があります。テストスイートは pytest を使用して実行され、カバレッジは 80% 以上を維持する必要があります。コードは PEP 8 ガイドラインに従い、クロスプラットフォーム互換である必要があります。新しい機能や変更についてはドキュメントを更新する必要があります。
このツールは、正当なフォレンジックおよびセキュリティ分析目的のために現状のまま提供されます。ユーザーは、ファイルシステムや MFT データを分析する前に適切な許可を得ていることを確認する責任があります。作者は本ソフトウェアの誤用について一切の責任を負いません。