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

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

  • Как рассчитать правильный размер образа файловой системы loopback для debootstrap
  • Преимущества / недостатки увеличения «фиксации» в fstab
  • Форматирование внешнего жесткого диска USB ext4
  • как сделать файл вредоносного ПО доступным для чтения с помощью «Нет разрешения на чтение в файле» на linux ext-4?
  • Создание раздела ext4 происходит с недопустимым числом блоков,
  • Совместимость зашифрованных дисковых файловых систем
  • ext4 - исчезла целая директория?
  • плохая геометрия: количество блоков 967424 превышает размер устройства (415232 блока)
  • 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

    Как захватить головную часть сайта с помощью команды curl и grep?

    Сценарий Bash для передачи аргументов скрипту

    Как просмотреть сертификат WPA2 PEAP, предлагаемый AP?

    Как создать локальную функцию в моем bashrc?

    Обмен переменными среды с www-данными

    Почему корневая оболочка по умолчанию настроена по-другому с обычной оболочкой обычного обычного пользователя?

    Загрузка crontab из файла при запуске

    Как восстановить initramfs, чтобы он мог включать модуль bcache?

    Выполнить команду в фоновом режиме, но также объединить в нее другие команды?

    Как я могу остановить последовательности смены заголовка от клонирования моих титулов экрана GNU?

    dd loop input Файл для вывода устройства?

    Не удается установить Firefox в Semplice Linux

    Тестирование Debian не позволяет получить информацию о экране и контролировать яркость с помощью Gnome 3.21.90

    Мош не пересоединяется

    Почему мой пользовательский макет не работает?

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