Порядок байтов при чтении MBR жесткого диска

Я напечатал MBR жесткого диска моего ноутбука Pentium M. Вот команда, которую я использовал:

$ sudo od -N 512 -x /dev/sda

Я ожидал бы получить байты в последовательном порядке на выходе, но кажется, что каждая пара байтов инвертирована.

Например, следующие 16 байтов описывают второй раздел:

0000700............................ 0080
0000720 0601 fe07 ffff 7886 0001 1990 0353

Это загрузочный раздел. Итак, первый байт в этой записи раздела должен быть 80. 5-й байт должен иметь код файловой системы, который является "07" для NTFS. Тем не менее, они появляются во 2-й и 6-й позиции, соответственно.

Другой пример - последние 4 байта должны быть размером раздела. Это имеет смысл как 0x03531990 (28,5 ГБ). Тем не менее, вышеприведенный результат показывает 1990 0353.

Похоже, он переворачивает каждую пару байтов. Поскольку это немного порядковый чип, я мог бы видеть, что он помещает младший байт первым, но разве он не будет работать от размера слова? Это было бы 4 байта. Вывод выше, кажется, реверсирует каждые 2 байта.

Очень смущенный этим, любая помощь будет принята с благодарностью. Спасибо!

2 ответа

Видимо, это нормально. Увидеть:

На всех IBM PC, PC-совместимых или любых других компьютерах с прямым порядком байтов шестнадцатеричные числа в два или более байтов всегда хранятся на носителе или в памяти в обратном порядке (для более эффективной обработки ЦП). Таким образом, подпись MBR, шестнадцатеричное число 0xAA55 (или AA55h), появится в редакторе дисков в виде последовательности: 55 AA.

От http://en.wikipedia.org/wiki/Partition_table_%28master_boot_record%29.

От od справочная страница:

'-x' Вывести в виде шестнадцатеричных двухбайтовых единиц. Эквивалент '-t x2'.

а также

Вы можете указать количество байтов для использования при интерпретации каждого числа в данном типе данных, следуя за символом индикатора типа десятичным целым числом.

Так что, возможно, вы предпочтете -t x1 (или же -t x4) вместо

Другие вопросы по тегам