Программно извлекать файлы из образа дд в C - PullRequest
1 голос
/ 02 февраля 2011

У меня есть несколько образов dd, и я хотел бы узнать, как лучше всего извлечь из них файлы с использованием C. Изображения представляют собой смешанные файловые системы (fat32, ntfs, ext2 / 3), и хост-компьютер, выполняющий извлечение, будетбыть коробкой Ubuntu, так что вы можете предположить, что заголовки ядра и библиотека GNU C и т. д.

лучше бы использовать нативно, но внешние библиотеки, выполняющие эту работу, тоже подойдут.Ссылка на пример была бы идеальной.

Ответы [ 4 ]

2 голосов
/ 02 февраля 2011

Почему программно с C?

sudo mount -o loop,offset=[offset] -t auto [where] [what]

Где

смещение - это смещение в байтах от начала диска, в байтах где где в текущей файловой системе смонтировать образ что - это образ диска, который вы монтируете
2 голосов
/ 02 февраля 2011

Это значительное усилие. Вам придется существенно переопределить драйверы файловой системы для NTFS, FAT и EXT2. Я сделал это для FAT и NTFS, но на это ушло более двух лет, хотя большая часть этого была реинжинирингом NTFS.

Подумайте об использовании опции file mount команды mount, чтобы вы могли использовать драйверы файловой системы Ubuntu и не изобретать значительно большое колесо. Затем вы можете просмотреть смонтированные файловые системы.

1 голос
/ 23 апреля 2012

Посмотрите на Sleuth Kit , который должен работать со всеми перечисленными вами типами файловых систем:

Первоначальная часть Sleuth Kit - это библиотека C и коллекция инструментов для анализа файлов и файлов системы командной строки и томов. Инструменты файловой системы позволяют проверять файловые системы подозрительного компьютера ненавязчивым способом. Поскольку инструменты не используют операционную систему для обработки файловых систем, отображается удаленный и скрытый контент. Он работает на платформах Windows и Unix.

Существующий набор инструментов Sleuth Kit - отличное место для начала, если вы ищете пример кода для работы.

0 голосов
/ 02 февраля 2011

Проверьте:

  • ext2fuse или fuse-ext2 проектов, они содержат некоторые реализации ext2 / ext3 в пользовательском пространстве с использованием FUSE .
  • ntfs-3g , реализация NTFS, также использующая FUSE.
  • FUSE , так как существует множество файловой системы реализации поверх него.
...