Команда Linux для получения секторов FAT32 из файла

865
supervic

Я хотел бы найти эквивалентную команду для debugfs, но для разделов FAT32 в Linux.

Мне нужно перечислить все сектора, соответствующие конкретному файлу (я работаю на диске, созданном с помощью dd).

Если нет, знаете ли вы какие-либо команды DOS / Windows?

Спасибо за помощь.

2
Зачем? Вы можете просто смонтировать файл, если хотите получить к нему доступ или скопировать его. mdpc 11 лет назад 0
Это в основном для восстановления данных. На самом деле я нашел решение: перейдите к файловой системе и выполните команду ** hdparm --fibmap **, которая выдаст список LBA. Но не работает с образами дисков. supervic 11 лет назад 0

1 ответ на вопрос

1
ssokolow

Прошло 5 лет, но я только что провел исследование, чтобы написать инструмент для резервного копирования моих старых дискет, который должен переводить назад и вперед между смещениями в образах дисков и именами файлов, так что вот вам ответ.

Я работаю на диске с dd

Во-первых, в интересах тех, кто заходит в Google, я рекомендую всегда использовать GNU ddrescue. Я помню, как сталкивался с разговорами, которые ddненадежны, когда дело доходит до обнаружения и сообщения об определенных видах ошибок.

Что касается ответа на вопрос, я нашел два варианта:

  1. filefrag -e /path/to/fileпохоже, работает на любом диске или -o loop-монтированном образе диска и является его частью e2fsprogs, поэтому он должен быть установлен по умолчанию на подавляющем большинстве компьютеров с Linux, но он должен быть запущен от имени пользователя root и несовместим с протестированными мною файловыми системами FUSE, такими как fuseiso ,

    ( Этот ответ подсказал это, но я должен был добавить, -eчтобы он работал надежно для изображений, с которыми я тестировал.)

  2. Sleuth Kit будет делать то, что вы хотите, и очень рад работать с широким разнообразием форматов изображений. (И, поскольку это криминалистический инструментарий, инструменты не будут предлагать новые способы случайного изменения образа диска, который вы выгружали, и вы также можете использовать их для восстановления файлов, если вы читаете справочные страницы.)

Вот пример того, как использовать Sleuth Kit:

#!/bin/bash  # For demonstration purposes, I'll start from a bad sector report culled # from a ddrescue log file, so I can also demonstrate looking up a file # from a byte offset within the image. BAD_OFFSET=1234567890 IMG_PATH=/path/to/image/file  # Translate to the units TSK tools expect BLOCK_SIZE="$(blkcat -s "$IMG_PATH" | cut -d: -f1)" BLOCK_OFFSET="$(($BAD_OFFSET / $BLOCK_OFFSET))"  # Get the inode (or equivalent ID) for the file at that offset FILE_INODE="$(ifind -d "$BAD_OFFSET" "$IMG_PATH")"  # Get the filename for the file at that offset (for the display/logging) FILE_NAME="$(ffind -u "$IMG_PATH" "$FILE_INODE")"  # Get `stat` info for the file and a list of sectors it occupies FILE_META="$(istat "$IMG_PATH" "$FILE_INODE")"  # Get the file's contents, just for the sake of completeness FILE_DATA="$(icat "$IMG_PATH" "$FILE_INODE")" 

Кроме того, его можно использовать как библиотеку ... однако, поскольку он лицензирован по Стандартной общественной лицензии, несовместимой с GPL, вы, вероятно, захотите использовать один из предоставляемых ими инструментов для выгрузки всей этой информации на компьютер. -читаемый формат, так что вы можете называть его подпроцессом, как это делают менеджеры архивов Linux unrar.

Есть два формата, которые он поддерживает для машиночитаемого вывода:

  • Digital Forensics XML через fiwalkкоманду (упоминается здесь и здесь, но не входит в sleuthkitпакет * buntu 14.04 .)
  • База данных SQLite, через tsk_loaddb /path/to/image(Она сгенерирует имя файла базы данных, вставив .dbв конец пути ввода, но вы можете изменить целевой каталог с помощью -d target_dir.)

За последние несколько лет схема SQLite менялась несколько раз, чтобы приспособиться к новым функциям, поэтому просто посмотрите на страницу Tsk_loaddb в их вики для описания схемы для любой версии TSK, которую вы используете.

Что касается поддерживаемых форматов изображений, моя копия из репозитория * buntu 14.04 поддерживает следующие:

ssokolow@monolith ~ % lsb_release -i -r -c Distributor ID: Ubuntu Release: 14.04 Codename: trusty  ssokolow@monolith ~ % ifind -V The Sleuth Kit ver 3.2.3  ssokolow@monolith ~ % ifind -i list Supported image format types: raw (Single raw file (dd)) aff (Advanced Forensic Format) afd (AFF Multiple File) afm (AFF with external metadata) afflib (All AFFLIB image formats (including beta ones)) ewf (Expert Witness format (encase)) split (Split raw files)  ssokolow@monolith ~ % ifind -f list  Supported file system types: ntfs (NTFS) fat (FAT (Auto Detection)) ext (ExtX (Auto Detection)) iso9660 (ISO9660 CD) hfs (HFS+) ufs (UFS (Auto Detection)) raw (Raw Data) swap (Swap Space) fat12 (FAT12) fat16 (FAT16) fat32 (FAT32) ext2 (Ext2) ext3 (Ext3) ufs1 (UFS1) ufs2 (UFS2) 

Википедия и вики Sleuth Kit указывают, что с тех пор были добавлены поддержка ExFAT, ext4 и YAFFS2, но UDF по-прежнему является запросом открытой функции по состоянию на 2018-04-24.