Команда Linux, чтобы получить FAT32 секторы файла

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

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

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

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

1 ответ

Прошло 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,

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

  • Цифровая криминалистика XML, через fiwalk команда (упоминается здесь и здесь, но не включена в *buntu 14.04 sleuthkit пакет.)
  • База данных 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.

Другие вопросы по тегам