2

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

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

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

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

1 ответ1

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 .

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

  • 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .