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

Удостоверьтесь, что у Вас есть надлежащие кодеки и библиотеки, включая libdbdcss2:

sudo apt-get install libdvdread4

затем

sudo /usr/share/doc/libdvdread4/install-css.sh

3
12.11.2014, 01:01
2 ответа

Вы хотите что-то подобное:

echo -e "foo\ntouchit\nbar\nbaz" | while read line; do case $line in
  touchit) touch test.txt;;
  bar)     echo bar found;;
esac; done
-121--186711-

Просто добавляя к ответу, простой способ сказать свой адрес (ip/domain), это ssh в компьютер, в который можно ssh, exit и затем ssh снова в него. Чаще всего вы увидите приветственное сообщение, например:

"Last login at xx:xxpm from you.domain.com/ip.ad.dre.ss"
-121--31688-

Команда imap в отладках может указать, где находится inode. Пример:

$ 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 плюс исходный код отладки использовать в качестве вдохновения, вы можете написать свой собственный imap -образная функция довольно легко.

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

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

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

7
27.01.2020, 21:12

Я хотел сделать что-то подобное и в итоге использовал debugfs, аналогичный другому ответу, но использовал следующий (, где моя корневая файловая -система находится на/dev/nvme0n1p4):

$ debugfs
debugfs: open /dev/nvme0n1p4
debugfs: stat /usr/bin/docker-current
debugfs: inode_dump <9445675> # After getting the inode number from the output above

Вы также можете сделать следующее, что дает тот же результат без ручного поиска inode:

debugfs:  inode_dump /usr/bin/docker-current 
0000  ed81 0000 2819 f200 e805 ab5d ed28 7d5d ....(......].(}]
0020  be5c 585d 0000 0000 0000 0100 1079 0000 .\X].........y..
0040  0000 0800 0100 0000 0af3 0200 0400 0000 ................
0060  0000 0000 0000 0000 0008 0000 0060 8f02 .............`..
0100  0008 0000 2207 0000 0050 8f02 0000 0000 ...."....P......
0120  0000 0000 0000 0000 0000 0000 0000 0000 ................
0140  0000 0000 76bb 0b93 0000 0000 0000 0000 ....v...........
0160  0000 0000 0000 0000 0000 0000 0000 0000 ................
0200  2000 0000 0025 6ad3 0000 0000 2c57 e8ca  ....%j.....,W..
0220  ed28 7d5d 18db 8a5f 0000 0000 0000 0000 .(}]..._........
0240  0000 0000 0000 0000 0000 0000 0000 0000 ................
*
0
22.02.2020, 21:55

Теги

Похожие вопросы