
analyzeMFT.py est conçu pour analyser entièrement le fichier MFT d'un système de fichiers NTFS et présenter les résultats aussi précisément que possible dans plusieurs formats.
Statut : Tous les tests réussissent sur Python 3.8-3.12 sous Windows, macOS et 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 est un outil basé sur Python conçu pour analyser et parser la Master File Table (MFT) NTFS.
Il transforme les données MFT binaires brutes en sorties structurées et lisibles, adaptées à la criminalistique numérique, à la réponse à incident et à l'analyse de systèmes de fichiers. L'outil prend en charge une large gamme de formats de sortie et assure une extraction détaillée des métadonnées, permettant aux enquêteurs d'examiner les horodatages, les attributs et les propriétés structurelles des volumes NTFS.
L'objectif principal d'AnalyzeMFT est d'aider les analystes en criminalistique à reconstituer l'activité du système de fichiers en décodant les enregistrements MFT. Chaque enregistrement contient des informations critiques telles que les noms de fichiers, les dates de création et de modification, les tailles de fichiers et les relations entre répertoires. L'outil gère à la fois les entrées actives et supprimées, permettant une analyse complète des chronologies et la récupération d'artefacts. Il inclut une gestion robuste des erreurs pour traiter les entrées MFT corrompues ou incomplètes, garantissant un traitement fiable même sur des systèmes de fichiers endommagés.
Plusieurs formats de sortie sont pris en charge pour s'intégrer aux flux de travail courants en criminalistique. Les utilisateurs peuvent exporter les résultats sous forme de fichiers CSV, JSON, XML ou Excel pour examen et rapports. Pour l'analyse chronologique, le format de fichier body compatible avec mactime et d'autres outils est disponible. L'exportation SQLite crée une structure de base de données relationnelle pour l'interrogation et le stockage à long terme. Les formats CSV de chronologie TSK et log2timeline permettent une ingestion directe dans les plateformes criminalistiques établies.
Des optimisations de performance sont intégrées à l'outil pour traiter efficacement les fichiers MFT volumineux. Le traitement s'effectue par lots configurables afin de gérer l'utilisation de la mémoire, ce qui est particulièrement important lors de l'analyse de MFT de plusieurs centaines de mégaoctets. Le multiprocessing est utilisé lors du calcul des empreintes (hashs) pour réduire le temps de traitement. Les utilisateurs peuvent ajuster le nombre de processus de travail et la taille des lots en fonction des ressources système. Des indicateurs de progression fournissent un retour en temps réel pendant les opérations de longue durée.
L'outil prend en charge des profils d'analyse configurables pour répondre à différents besoins opérationnels. Le profil par défaut offre un traitement équilibré pour un usage général. Le profil rapide minimise la charge de traitement pour un triage rapide. Le profil criminalistique permet une extraction maximale des données, y compris toutes les variantes d'horodatage et les attributs étendus. Le profil performance ajuste les paramètres internes pour privilégier la vitesse et l'efficacité des ressources sur les grands ensembles de données.
Le calcul d'empreintes (hashs) est disponible pour les attributs d'enregistrements de fichiers qui incluent des data runs. Les hashs MD5, SHA256, SHA512 et CRC32 peuvent être générés pour les données résidentes et non résidentes. Cette fonctionnalité prend en charge l'identification des fichiers et la vérification de l'intégrité. Le hachage s'exécute en parallèle par défaut, avec un nombre de processus configurable. Les utilisateurs peuvent désactiver le multiprocessing s'ils opèrent dans des environnements contraints.
La configuration est gérée via des options de ligne de commande ou des fichiers externes au format JSON ou YAML. Un fichier de configuration peut définir les paramètres de sortie, les profils d'analyse, les options de hachage et les critères de filtrage. Des exemples de fichiers de configuration peuvent être générés à l'aide de l'option --create-config. L'option --list-profiles affiche tous les profils intégrés disponibles et leurs descriptions.
L'entrée est spécifiée à l'aide de l'option -f suivie du chemin vers le fichier MFT. Le format de sortie est déterminé par l'extension du fichier ou par des indicateurs d'exportation explicites. L'option -o définit la destination de sortie. Lors de l'exportation vers SQLite, l'indicateur --sqlite doit être utilisé. Pour la sortie CSV, aucun indicateur supplémentaire n'est requis si le fichier de sortie se termine par .csv.
Un générateur de MFT de test est inclus à des fins de développement et de formation. En utilisant l'option --generate-test-mft, les utilisateurs peuvent créer des fichiers MFT synthétiques avec un nombre spécifié d'enregistrements. Cette fonctionnalité est utile pour valider le fonctionnement de l'outil, tester les parseurs ou créer des données de démonstration.
Les options de ligne de commande incluent des contrôles de verbosité avec -v pour une sortie plus détaillée et -d pour une journalisation au niveau débogage. Elles aident à diagnostiquer les problèmes pendant le traitement. Les options d'exportation permettent de sélectionner le format sans dépendre des extensions de fichiers. Les options d'optimisation des performances incluent --chunk-size pour la taille des lots d'enregistrements et --hash-processes pour définir le nombre de threads de hachage.
L'outil comprend un système d'aide structuré. L'exécution du script avec --help affiche toutes les options disponibles et leurs descriptions. Le résumé d'utilisation montre les arguments requis et facultatifs. Des explications détaillées sont fournies pour chaque catégorie d'options, notamment les paramètres d'exportation, de performance, de configuration et de débogage.
La version 3.1.1 inclut des améliorations significatives de la qualité du code et de la couverture des tests. La suite de tests comprend désormais 224 tests complets couvrant tous les composants principaux. Les pipelines CI/CD GitHub Actions garantissent la qualité du code sur Python 3.8-3.12 sous Linux, Windows et macOS. L'analyse de sécurité avec Bandit et la vérification des dépendances avec Safety sont intégrées au processus de build. Les rapports de couverture de code via Codecov suivent l'efficacité des tests.
Les formats d'exportation prévus incluent STIX/TAXII pour le partage de renseignements sur les menaces, ainsi que l'intégration avec Elasticsearch et Splunk pour l'analyse centralisée des journaux. L'exportation vers la base de données graphe Neo4j permettra de visualiser les relations du système de fichiers. Les utilisateurs pourront filtrer la sortie par plage de dates, type de fichier et taille directement dans l'outil. Un mode interactif pourrait être introduit pour permettre l'examen pas à pas des enregistrements.
Les contributions au projet sont acceptées via les pull requests GitHub. Les développeurs doivent garantir la compatibilité avec Python 3.8 et versions ultérieures. Tout nouveau code doit inclure des annotations de type et des tests unitaires complets. La suite de tests est exécutée avec pytest, et la couverture doit rester supérieure à 80 %. Le code doit suivre les directives PEP 8 et être compatible multiplateforme. La documentation doit être mise à jour pour toute nouvelle fonctionnalité ou modification.
Cet outil est fourni tel quel pour des fins légitimes d'analyse criminalistique et de sécurité. Les utilisateurs sont responsables de s'assurer qu'ils disposent de l'autorisation appropriée avant d'analyser tout système de fichiers ou données MFT. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive de ce logiciel.