Как правильно сделать дамп устройства командой hexdump?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

Как правильно сделать дамп устройства командой hexdump?

Сообщение жучара »

Друзья! На самом деле это не так просто.
Имеем устройство /dev/sda, на нём два раздела, /dev/sda1 и /dev/sda2. Посмотрим на таблицу разделов, где что находится:

Shell

user@astra:~/Desktop$ sudo fdisk /dev/sda

Команда (m для справки): p

Disk /dev/sda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders, всего 78165360 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x963a48f3

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 2048 4196351 2097152 83 Linux
/dev/sda2 4196352 12589055 4196352 5 Расширенный

Команда (m для справки): q

user@astra:~/Desktop$
Давайте снимем дамп первых 16-ти байта /dev/sda2, Предлагаю привязаться к устройству /dev/sda

Shell

user@astra:~/Desktop$ sudo hexdump -s 4196352b -n 16 /dev/sda
80100000 0000 0000 0000 0000 0000 0000 0000 0000
80100010
user@astra:~/Desktop$
Мы просто взяли и перепрыгнули (-s 4196352b) через 4196352 секторов каждый размером 512 байт и оказались как раз в первом секторе /dev/sda2. Всё согласно таблице разделов.

А теперь привяжемся непосредственно устройству /dev/sda2. Тут проще. Ничего не перепрыгиваем, просто смотрим первые 16 байт /dev/sda2

Shell

user@astra:~/Desktop$ sudo hexdump -n 16 /dev/sda2
0000000 7171 7171 7171 7171 7171 7171 7171 7171
0000010
user@astra:~/Desktop$
Результаты разные. ЧЯДНТ? Спасибо, кто откликнется.
Последний раз редактировалось жучара 17.10.2019 13:54, всего редактировалось 1 раз.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно сделать дамп устройства командой hexdump?

Сообщение Bizdelnick »

А если указать смещение в байтах?
sudo hexdump -s $((4196352 * 512)) -n 16 /dev/sda
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

Re: Как правильно сделать дамп устройства командой hexdump?

Сообщение жучара »

Bizdelnick писал:
17.10.2019 13:51
А если указать смещение в байтах?
то же самое.

Shell

user@astra:~/Desktop$
user@astra:~/Desktop$ sudo hexdump -s 4196352b -n 16 /dev/sda
80100000 0000 0000 0000 0000 0000 0000 0000 0000
80100010
user@astra:~/Desktop$
user@astra:~/Desktop$
user@astra:~/Desktop$ sudo hexdump -s 2148532224 -n 16 /dev/sda
80100000 0000 0000 0000 0000 0000 0000 0000 0000
80100010
user@astra:~/Desktop$
user@astra:~/Desktop$
user@astra:~/Desktop$ sudo hexdump -n 16 /dev/sda2
0000000 7171 7171 7171 7171 7171 7171 7171 7171
0000010
user@astra:~/Desktop$
user@astra:~/Desktop$
user@astra:~/Desktop$
user@astra:~/Desktop$ sudo fdisk /dev/sda

Команда (m для справки): p

Disk /dev/sda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders, всего 78165360 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x963a48f3

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 2048 4196351 2097152 83 Linux
/dev/sda2 4196352 12589055 4196352 5 Расширенный

Команда (m для справки):
Команда (m для справки):
Команда (m для справки): q

user@astra:~/Desktop$
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно сделать дамп устройства командой hexdump?

Сообщение Bizdelnick »

Ну не знаю, у меня выдаёт одинаковый результат. bsdmainutils 11.1.2+b1
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Как правильно сделать дамп устройства командой hexdump?

Сообщение Hephaestus »

жучара писал(а):
17.10.2019 13:29
Мы просто взяли и перепрыгнули (-s 4196352b) через 4196352 секторов каждый размером 512 байт и оказались как раз в первом секторе /dev/sda2. Всё согласно таблице разделов.
Есть у меня подозрение, что это не начало раздела /dev/sda2, а несколько другая точка. Это же расширенный раздел.
Попробуйте разные смещения "вокруг" цифры 4196352.
А заодно попробуйте считать не 16 байт, а больше - величину, сопоставимую с размером блока.
Считывание /dev/sda2 напрямую действительно читает от начала раздела, а в данном случае, похоже промахнулись. не дотянули до начала /dev/sda2.

Кстати, винчестер у Вас зачетный - 40Гб.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

Re: Как правильно сделать дамп устройства командой hexdump?

Сообщение жучара »

Hephaestus, поздно прочёл ваш комментарий. Перезагрузился и всё совпало.

Shell

user@astra:~$
user@astra:~$ sudo hexdump -s 4196352b -n 16 /dev/sda
80100000 7171 7171 7171 7171 7171 7171 7171 7171
80100010
user@astra:~$
user@astra:~$ sudo hexdump -s 2148532224 -n 16 /dev/sda
80100000 7171 7171 7171 7171 7171 7171 7171 7171
80100010
user@astra:~$
user@astra:~$ sudo hexdump -n 16 /dev/sda2
0000000 7171 7171 7171 7171 7171 7171 7171 7171
0000010
user@astra:~$
user@astra:~$ sudo fdisk /dev/sda
Предупреждение: игнорируются дополнительные данные в таблице разделов 5
Предупреждение: игнорируются дополнительные данные в таблице разделов 5
Предупреждение: игнорируются дополнительные данные в таблице разделов 5
Предупреждение: неверный флаг 0x6b6b таблицы разделов 5 будет исправлен записью

Команда (m для справки): p

Disk /dev/sda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders, всего 78165360 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x963a48f3

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 2048 4196351 2097152 83 Linux
/dev/sda2 4196352 12589055 4196352 5 Расширенный
/dev/sda5 ? 1907456369 3810716385 951630008+ 71 Неизвестный

Команда (m для справки): q

user@astra:~$
содержание соответствует действительности, ибо я сам заполнял соответствующий сектор такими символами (с помощью dd). Но причину несовпадения, увы, теперь не найти, а воспроизвести такую же ошибку очень трудно. Хотя я постараюсь и если с чем подобным столкнусь, то напишу здесь.
Hephaestus писал:
17.10.2019 15:02
Кстати, винчестер у Вас зачетный - 40Гб.
это для изучения всего (для экспериментов)

Shell

user@astra:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 37,3G 0 disk
├─sda1 8:1 0 2G 0 part
└─sda2 8:2 0 1K 0 part
sdb 8:16 0 931,5G 0 disk
├─sdb1 8:17 0 200G 0 part
├─sdb2 8:18 0 48,8G 0 part
├─sdb3 8:19 0 241,8G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 65,2G 0 part /
├─sdb6 8:22 0 9,3G 0 part
├─sdb7 8:23 0 76,3G 0 part /home
├─sdb8 8:24 0 83,8G 0 part
└─sdb9 8:25 0 206,2G 0 part
sdc 8:32 0 465,8G 0 disk
├─sdc1 8:33 0 97,7G 0 part
├─sdc2 8:34 0 195,3G 0 part
└─sdc3 8:35 0 78,1G 0 part
user@astra:~$
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как правильно сделать дамп устройства командой hexdump?

Сообщение Bizdelnick »

жучара писал(а):
17.10.2019 15:17
Перезагрузился и всё совпало.
Разметку правили непосредственно перед экспериментом? fdisk не всегда может заставить ядро перечитать таблицу разделов, в таком случае при завершении он выдаёт сообщение об этом. Надо внимательнее читать вывод.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 950
ОС: астралинукс

Re: Как правильно сделать дамп устройства командой hexdump?

Сообщение жучара »

Bizdelnick писал:
17.10.2019 15:30
Разметку правили непосредственно перед экспериментом?
ну да. Ладно, буду отслеживать.
Я просто читаю маны.
Спасибо сказали:
Ответить