Как извлечь из образа файловой системы FAT16 в Python

У меня есть изображение FAT (16 бит), я хочу разобрать изображение в файл, чтобы я мог получить файлы в изображении.

2 ответа

Что касается чтения образа файловой системы FAT32 в Python, страница Википедии содержит все детали, необходимые для написания реализации только для чтения.

Конструкция может быть полезна. Похоже, у них есть пример для FAT16 ( https://github.com/construct/construct/blob/master/construct/examples/formats/filesystem/fat16.py), который вы можете попробовать расширить.

На самом деле, я был в похожей ситуации, когда мне нужна была поддержка FAT12/16/32 в Python. В Интернете вы можете найти различные реализации (например, maxpat78/FATtools , em- / grasso или hisahi/PyFAT12).

Ни одна из этих библиотек не была доступна через PyPI в то время или не имела нужных мне функций, поэтому (полное раскрытие) я решил написать свою собственную, но я попытаюсь подвести итог как можно более объективно:

pyfatfs поддерживает FAT12, FAT16, а также FAT32, включая VFAT (длинные имена файлов), и может быть установлен через pip в виде чистого пакета Python (без встроенных зависимостей, таких как mtools ). Он реализует функциональность для PyFilesystem2 , платформы для базовых операций с файлами в различных реализациях файловой системы (SSH, AWS S3, сквозной доступ к каталогу хоста OSFS и т. д.). Помимо этого, pyfatfs также можно использовать автономно (без PyFilesystem2), если вам нужно выполнять более низкоуровневые операции (манипулирование записями каталогов/файлов, изменение атрибутов диска, форматирование дисков/образов, манипулирование FAT и т. д.).

Например, чтобы скопировать файлы с образа дискеты на ваш хост через PyFilesystem2:

      import fs
fat_fs = fs.open_fs("fat://my_diskette.img")  # Open disk image
host_fs = fs.open_fs("osfs:///tmp") # Open '/tmp' directory on host
fs.copy.copy_dir(fat_fs, "/", host_fs, "/") # Copy all files from the disk image to the host_fs filesystem (/tmp directory on host)
Другие вопросы по тегам