Как извлечь необработанные данные extode inode с диска?

В файловой системе ext3 (или ext2 / 4, pick your flavor), как извлечь необработанные байтовые данные, соответствующие конкретному inode непосредственно с жесткого диска? Возможно ли, например, указать номер inode, чтобы определить его местоположение на диске (возможно, как смещение от начала раздела или другое смещение LBA), а затем использовать некоторую полезность, такую ​​как «dd» или системный вызов (что-то например lseek, кроме работы с файловой системой?), чтобы читать эти данные без необходимости ссылаться на них как на файл? Я предполагаю, что это можно сделать, возможно, с помощью какой-либо утилиты на уровне драйвера ….

  • Не удается записать на недавно созданный раздел EXT4
  • Содержание Объяснение: / proc / fs / ext4 / имя_устройства / mb_groups
  • Как найти смещение файловой системы ext4?
  • Как исправить прерывистые ошибки «Нет места на устройстве» во время mv, когда у устройства достаточно места?
  • inodes, сравнение потребляемого пространства (xfs, btrfs, ext4)
  • ext4 переопределяет мой параметр commit = 100 mount с фиксацией = 0
  • Дефрагментация раздела ext?
  • не удается добавить файлы на жесткий диск
  • One Solution collect form web for “Как извлечь необработанные данные extode inode с диска?”

    Команда imap в debugfs может рассказать вам, где находится индексный дескриптор. Пример:

     $ debugfs -R 'imap <128901>' /dev/whatever debugfs 1.42.5 (29-Jul-2012) Inode 128901 is part of block group 16 located at block 524344, offset 0x0400 

    Чтобы получить исходный дамп inode 128901, вы должны искать байты 524344*block_size + 0x0400 и читать байты inode_size . Вы можете получить размеры с помощью команды stats в debugfs или отдельной утилите dumpe2fs .

    stats или dumpe2fs также предоставит вам полный список всех областей хранения inode, чтобы вы могли создать свою собственную функцию, которая выполняет эквивалент imap не называя при этом каждый раз называть debugfs (или запуская его в интерактивном режиме). Просто помните, когда вы делаете свой расчет, нет нуля inode. inode 1 начинается с байта 0 первого блока inodes.

    Если вы хотите сделать это в программе на языке C без внешних программ, вам следует посмотреть библиотеку libext2 , которая используется всеми стандартными утилитами ext2. Я не использовал его сам, но я подозреваю, что с документацией libext2 и исходным кодом debugfs для использования в качестве вдохновения вы можете легко написать свою функцию imap like.

    … и вот где мне пришло в голову, что, возможно, вы буквально не хотели, чтобы вам нужны необработанные данные inode. Возможно, вы хотите, чтобы содержимое файла описывалось inode. В этом случае это еще проще. debugfs имеет встроенную команду:

     debugfs -R `cat <128901>` /dev/whatever 

    печатает содержимое файла с номером inode 128901.

    Interesting Posts

    Перенести «Списки контактов» от Thunderbird до Evolution

    Определение путей использования автозаполнения zsh

    используйте команду «читать» для передачи строк в качестве позиционных параметров в сценарий оболочки

    wait bash-builtin сжигает CPU на 100 процентов

    Не удается загрузить раздел Windows 7 с помощью Grub

    Все файлы в каталоге, которые не заканчиваются в определенной строке?

    Служба sshd не запускается: Centos 6.5

    Длительная загрузка на экран пароля для зашифрованного диска

    Как заменить все первые вхождения в совпадающие строки с инкрементным числом?

    Система файлов rootfs.jffs2 не поместится в mtd3

    Клиент Postfix SMTP не будет аутентифицироваться с помощью AUTH LOGIN

    подсказка conffile во время обновления по сценарию

    Пропустить первую строку (или больше) в CSV-файле, который используется для переименования файлов

    Какова цель командной строки grub

    Присоединиться не подходит

    Linux и Unix - лучшая ОС в мире.