Вопрос

Это продолжение моего вопроса о чтении суперблока .

Допустим, я хочу использовать файловую систему HFS + в Mac OS X. Как я могу прочитать сектор 2 загрузочного диска? Насколько я знаю, Unix обеспечивает только системные вызовы для чтения из файлов, которые никогда не хранятся в этом месте.

Требуется ли для этого 1) программа для запуска в режиме ядра или 2) программа для написания на ассемблере? Я бы предпочел избежать любого из этих ограничений, особенно последнего.

Это было полезно?

Решение

В Linux вы можете читать из специального файла устройства /dev/sda, предполагая, что жесткий диск, который вы хотите прочитать, является первым. Вы должны быть root, чтобы читать этот файл. Чтобы прочитать сектор 2, просто попытайтесь сместить 2*SECTOR_SIZE и прочитать в SECTOR_SIZE байтах.

Я не знаю, доступен ли этот файл устройства в OS X. Проверьте файлы с интересными именами в /dev, например /dev/hda или <=>.

Другие советы

Я сделал это сам на Mac, см. мой инструмент для редактирования дисков: http: //apps.tempel .org / iBored

Вы бы открыли диск с помощью / dev / diskN или / dev / rdiskN (N - номер индекса диска, начинающийся с 0). Затем вы можете использовать lseek (обязательно используйте версию с 64-битным диапазоном!) И выполнять чтение / запись вызовов для открытого файла.

Также используйте команду оболочки " ls / dev / disk * " чтобы увидеть, какие диски существуют в настоящее время. И обратите внимание, что диски также существуют с & Quot; sM & Quot; расширение, где М - номер раздела. Таким образом, можно также читать разделы напрямую.

Или вы можете просто использовать инструмент оболочки " xxd " или " dd " читать данные, а затем использовать их вывод. Может быть проще.

Вы не сможете читать ваш корневой диск и другие внутренние диски, пока вы не запустите его как root. Вы можете получить доступ к другим дискам, если они были смонтированы пользователем, или их разрешения отключены. Но вам также может понадобиться сначала отключить тома диска. Найдите команду unmount в команде оболочки & Quot; diskutil & Quot;.

Надеюсь, это поможет.

Обновление 2017: в OS X 10.11 и более поздних версиях SIP также может препятствовать прямому доступу к секторам диска.

Я также собирался предложить файл / dev / device для тома, но вы можете связаться с Амитом Сингхом, который написал утилита hfsdebug и, вероятно, сделала именно то, что вы хотите.

Как это работает с точки зрения разрешений? Не будет ли чтение из / dev / ... небезопасным, поскольку, если вы будете читать достаточно далеко, вы сможете читать файлы, для которых у вас нет прав на чтение?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top