
Командная строка низкоуровневого извлечения файлов для NTFS
Введение
Это консольное приложение, которое копирует файлы с томов NTFS, используя метод низкоуровневого чтения диска.
Синтаксис
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]
Описание параметров
/ImageFile:
Полный путь и имя файла образа для извлечения. Если этот параметр используется, то необходимо указать /ImageVolume:. Необязательно.
/ImageVolume:
Номер тома для извлечения. Если том не NTFS, ничего не будет извлечено. Используется только с /ImageFile:.
/FileNamePath:
Полный путь и имя файла для извлечения. Может быть также в формате Volume:MftRef. Обязательно.
/OutputPath:
Путь для извлечения файла. Необязательно. Если опущен, путь извлечения по умолчанию — каталог программы.
/OutputName:
Имя выходного файла. Необязательно. Если опущено, имя файла будет соответствовать оригинальному. Используется только для переопределения исходного имени.
/AllAttr:
Логический флаг для запуска извлечения всех атрибутов. Необязательно. По умолчанию 0.
/RawDirMode:
Необязательный режим вывода списка каталогов. 0 — без вывода. 1 — подробный вывод. 2 — базовый вывод. Если опущен, по умолчанию 0. Может использоваться с любыми другими параметрами, однако для этого невозможно указать FileNamePath с MftRef.
/WriteFSInfo:
Необязательный логический флаг для записи файла с информацией о томе в VolInfo.txt в указанном выходном каталоге.
/TcpSend
Необязательный логический флаг, указывающий, что вывод должен отправляться по сети. Если этот флаг установлен, то значение /OutputPath: должно быть IP:PORT или DOMAIN:PORT
Этот инструмент позволяет копировать файлы, которые обычно недоступны, потому что система заблокировала их. Например, кусты реестра, такие как SYSTEM и SAM. Или файлы внутри "System Volume Information". Или pagefile.sys. Или любой файл в файловой системе.
Он поддерживает указание входного файла либо по полному пути, либо по номеру записи $MFT (индексному номеру).
Итак, как получить индексный номер файла, который не является одним из известных системных файлов? Начиная с версии 1.0.0.13 функциональность RawDir была перенесена в RawCopy. Таким образом, можно выполнить поиск в таких каталогах, как "System Volume Information" (RawCopy.exe /FileNamePath:"c:\System Volume Information" /RawDirMode:2).
Для файлов образов буква тома в параметре /FileNamePath: игнорируется.
При указании путей устройств в /FileNamePath можно получить доступ к подключенным устройствам, на которых не смонтированы тома. Примеры: HarddiskVolume1, Harddisk0Partition2, HarddiskVolumeShadowCopy1, PhysicalDrive1.
Чтобы извлечь файлы из теневой копии внутри файла образа, необходимо предварительно смонтировать файл образа, чтобы Windows предоставила символическую ссылку на теневую копию, например \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy60. Рекомендуется монтировать образ с помощью такого инструмента, как Arsenal Image Mounter (бесплатный).
Параметр /WriteFSInfo: может быть полезен при написании скриптов, поскольку SectorsPerCluster и MFTRecordSize используются с LogFileParser и Mft2Csv.
При использовании /TcpSend:1 для отправки вывода по сети вы, очевидно, должны иметь что-то прослушивающее на приемной стороне, чтобы это работало. Например, netcat. На данный момент данные отправляются как есть по сети без шифрования.
Эта версия несовместима с Windows 2000 / NTFS 3.0. Я подготовил специальную сборку из v1.0.0.19, которую можно использовать там; https://github.com/jschicht/RawCopy/releases/download/1.0.0.19/RawCopy_v1.0.0.19_.Win2000.zip Более ранние версии не тестировались.
Примеры использования
Пример копирования файла гибернации с работающей системы и сохранения его в E:\output\hiberfil_c.sys
RawCopy.exe /FileNamePath:C:\hiberfil.sys /OutputPath:E:\output /OutputName:hiberfil_c.sys
Пример копирования куста SYSTEM с работающей системы
RawCopy.exe /FileNamePath:C:\WINDOWS\system32\config\SYSTEM /OutputPath:E:\output
Пример извлечения $MFT по его индексному номеру в каталог программы и переопределение имени выходного файла по умолчанию на MFT_C.bin.
RawCopy.exe /FileNamePath:C:0 /OutputName:MFT_C.bin
Пример извлечения записи MFT с номером 30224 и всех атрибутов, включая $DATA, и сохранения в C:\tmp:
RawCopy.exe /FileNamePath:C:30224 /OutputPath:C:\tmp /AllAttr:1
Пример доступа к образу диска и извлечения MftRef ($LogFile) из тома номер 2.
RawCopy.exe /ImageFile:e:\temp\diskimage.dd /ImageVolume:2 /FileNamePath:c:2 /OutputPath:e:\out
Пример доступа к образу раздела/тома и извлечения file.ext с сохранением в E:\out.
RawCopy.exe /ImageFile:e:\temp\partimage.dd /ImageVolume:1 /FileNamePath:c:\file.ext /OutputPath:e:\out
Пример создания необработанного списка каталогов в подробном режиме в c:$Extend:
RawCopy.exe /FileNamePath:c:$Extend /RawDirMode:1
Пример создания необработанного списка каталогов в базовом режиме в c:\System Volume Information внутри файла образа диска:
RawCopy.exe /ImageFile:e:\temp\diskimage.dd /ImageVolume:1 /FileNamePath:"c:\System Volume Information" /RawDirMode:2
Пример создания необработанного списка каталогов в подробном режиме на корневом уровне внутри теневой копии:
RawCopy.exe /FileNamePath:\.\HarddiskVolumeShadowCopy1❌\ /RawDirMode:1
Пример извлечения $MFT из раздела 2 на жестком диске 1 и сохранения в e:\out:
RawCopy.exe /FileNamePath:\.\Harddisk0Partition2:0 /OutputPath:e:\out
Пример извлечения $MFT со второго тома на PhysicalDrive0 и сохранения как E:\out\MFT_Pd0Vol2.bin:
RawCopy.exe /FileNamePath:\.\PhysicalDrive0:0 /ImageVolume:2 /OutputPath:e:\out /OutputName:MFT_Pd0Vol2.bin
Пример извлечения $LogFile из системного тома и отправки по сети:
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