
Extracteur de fichiers bas niveau en ligne de commande pour NTFS
Introduction Ceci est une application console qui copie des fichiers depuis des volumes NTFS en utilisant une méthode de lecture de bas niveau.
Syntax RawCopy /ImageFile:FullPath\ImageFilename /ImageVolume:[1,2...n] /FileNamePath:FullPath\Filename /OutputPath:FullPath /AllAttr:[0|1] /RawDirMode:[0|1|2] /WriteFSInfo:[0|1] /TcpSend:[0|1]
Explication des paramètres /ImageFile: Le chemin complet et le nom de fichier d'une image à partir de laquelle extraire. Si ce paramètre est utilisé, /ImageVolume: doit être défini. Optionnel. /ImageVolume: Le numéro du volume à partir duquel extraire. Si le volume n'est pas NTFS, rien ne sera extrait. Utilisé uniquement avec /ImageFile:. /FileNamePath: Le chemin complet et le nom du fichier à extraire. Peut également être sous la forme Volume:MftRef. Obligatoire. /OutputPath: Le chemin de sortie où extraire le fichier. Optionnel. S'il est omis, le chemin d'extraction par défaut est le répertoire du programme. /OutputName: Le nom de fichier de sortie. Optionnel. S'il est omis, le nom de fichier sera celui du fichier d'origine. Utilisé uniquement pour remplacer le nom de fichier d'origine. /AllAttr: Indicateur booléen pour déclencher l'extraction de tous les attributs. Optionnel. Par défaut 0. /RawDirMode: Un mode de listage de répertoire optionnel. 0 pas d'affichage. 1 affichage détaillé. 2 affichage basique. S'il est omis, la valeur par défaut est 0. Peut être utilisé conjointement avec n'importe quel autre paramètre, cependant, pour cela, il n'est pas possible de définir FileNamePath avec un MftRef. /WriteFSInfo: Un indicateur booléen optionnel pour écrire un fichier avec des informations sur le volume dans VolInfo.txt dans le répertoire de sortie défini. /TcpSend Un indicateur booléen optionnel pour indiquer que la sortie doit être envoyée sur le réseau. Si cet indicateur est défini, la valeur de /OutputPath: doit être IP:PORT ou DOMAIN:PORT.
Cet outil vous permet de copier des fichiers qui ne sont généralement pas accessibles car le système les a verrouillés. Par exemple, les ruches de registre comme SYSTEM et SAM. Ou des fichiers dans 'System Volume Information'. Ou pagefile.sys. Ou tout fichier sur le système de fichiers.
Il prend en charge le fichier d'entrée spécifié soit par le chemin complet du fichier, soit par son numéro d'enregistrement $MFT (numéro d'index).
Alors, comment obtenir le numéro d'index d'un fichier donné qui n'est pas l'un des fichiers système connus ? Depuis la version 1.0.0.13, la fonctionnalité de RawDir a été intégrée dans RawCopy. Ainsi, on peut effectuer une recherche dans des répertoires tels que 'System Volume Information' (RawCopy.exe /FileNamePath:"c:\System Volume Information" /RawDirMode:2).
Pour les fichiers image, la lettre de volume dans le paramètre /FileNamePath: est ignorée.
Lors de la spécification de chemins de périphériques dans /FileNamePath, il est possible d'accéder à des périphériques attachés qui n'ont aucun volume monté. Les exemples sont HarddiskVolume1, Harddisk0Partition2, HarddiskVolumeShadowCopy1, PhysicalDrive1.
Afin d'extraire des fichiers d'une copie fantôme dans un fichier image, vous devrez monter le fichier image au préalable afin que Windows présente un lien symbolique vers la copie fantôme tel que \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy60. Il est recommandé de monter l'image avec un outil tel qu'Arsenal Image Mounter (gratuit).
Le paramètre /WriteFSInfo: peut être utile lors de l'écriture de scripts car SectorsPerCluster et MFTRecordSize sont utilisés avec LogFileParser et Mft2Csv.
Lors de l'utilisation de /TcpSend:1 pour envoyer la sortie sur le réseau, vous devez évidemment avoir quelque chose qui écoute sur la destination pour que cela fonctionne. Par exemple, netcat. Pour l'instant, les données sont envoyées telles quelles sur le réseau, non chiffrées.
Cette version est incompatible avec Windows 2000 / NTFS 3.0. J'ai préparé une version spéciale de la v1.0.0.19 qui peut y être utilisée ; https://github.com/jschicht/RawCopy/releases/download/1.0.0.19/RawCopy_v1.0.0.19_.Win2000.zip Les versions antérieures n'ont pas été testées.
Exemples d'utilisation
Exemple de copie du fichier d'hibernation d'un système en cours d'exécution et sauvegarde dans E:\output\hiberfil_c.sys RawCopy.exe /FileNamePath:C:\hiberfil.sys /OutputPath:E:\output /OutputName:hiberfil_c.sys
Exemple de copie de la ruche SYSTEM d'un système en cours d'exécution RawCopy.exe /FileNamePath:C:\WINDOWS\system32\config\SYSTEM /OutputPath:E:\output
Exemple d'extraction de $MFT en spécifiant son numéro d'index, dans le répertoire du programme et en remplaçant le nom de fichier de sortie par défaut par MFT_C.bin. RawCopy.exe /FileNamePath:C:0 /OutputName:MFT_C.bin
Exemple d'extraction du numéro de référence MFT 30224 et de tous les attributs incluant $DATA, et déversement dans C:\tmp: RawCopy.exe /FileNamePath:C:30224 /OutputPath:C:\tmp /AllAttr:1
Exemple d'accès à une image disque et d'extraction de MftRef ($LogFile) depuis le volume numéro 2. RawCopy.exe /ImageFile:e:\temp\diskimage.dd /ImageVolume:2 /FileNamePath:c:2 /OutputPath:e:\out
Exemple d'accès à une image de partition/volume et d'extraction de file.ext et déversement dans E:\out. RawCopy.exe /ImageFile:e:\temp\partimage.dd /ImageVolume:1 /FileNamePath:c:\file.ext /OutputPath:e:\out
Exemple de listing brut de répertoire en mode détaillé dans c:$Extend: RawCopy.exe /FileNamePath:c:$Extend /RawDirMode:1
Exemple de listing brut de répertoire en mode basique dans c:\System Volume Information à l'intérieur d'un fichier image disque: RawCopy.exe /ImageFile:e:\temp\diskimage.dd /ImageVolume:1 /FileNamePath:"c:\System Volume Information" /RawDirMode:2
Exemple de listing brut de répertoire en mode détaillé au niveau racine à l'intérieur d'une copie fantôme: RawCopy.exe /FileNamePath:\.\HarddiskVolumeShadowCopy1❌\ /RawDirMode:1
Exemple d'extraction de $MFT depuis la partition 2 du disque dur 1 et déversement dans e:\out: RawCopy.exe /FileNamePath:\.\Harddisk0Partition2:0 /OutputPath:e:\out
Exemple d'extraction de $MFT depuis le deuxième volume sur PhysicalDrive0, et sauvegarde sous E:\out\MFT_Pd0Vol2.bin: RawCopy.exe /FileNamePath:\.\PhysicalDrive0:0 /ImageVolume:2 /OutputPath:e:\out /OutputName:MFT_Pd0Vol2.bin
Exemple d'extraction de $LogFile depuis le volume système et envoi sur le réseau: RawCopy.exe /FileNamePath:c:$LogFile /TcpSend:1 /OutputPath:10.10.10.10:6666 RawCopy.exe /FileNamePath:c:$LogFile /TcpSend:1 /OutputPath:www.mypublicdomain.com:6666