PDA

Просмотр полной версии : Монтирование неизвестного LBA раздела


nuxster
18.08.2016, 11:00
Доброго времени суток!

Разбираюсь с одним девайсом, который грузится с SD-карточки.

Система закрыта от меня, есть только образ SD-карты. На котором присутствует 2 раздела:


# fdisk -l mmcblk0.dd

Disk mmcblk0.dd: 7,4 GiB, 7951351808 bytes, 15529984 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start End Sectors Size Id Type
mmcblk0.dd1 62 15017267 15017206 7,2G b W95 FAT32
mmcblk0.dd2 15017268 15632803 615536 300,6M c W95 FAT32 (LBA)



# file -s mmcblk0.dd

mmcblk0.dd: DOS/MBR boot sector; partition 1 : ID=0xb, start-CHS (0x0,1,1), end-CHS (0x3ff,145,62),
startsector 62, 15017206 sectors; partition 2 : ID=0xc, start-CHS (0x3ff,145,62), end-CHS (0x3ff,145,62),
startsector 15017268, 615536 sectors



# kpartx -a -v mmcblk0.dd

add map loop0p1 (254:0): 0 15017206 linear /dev/loop0 62
device-mapper: resume ioctl on loop0p2 failed: Invalid argument
create/reload failed on loop0p2
add map loop0p2 (0:0): 0 615536 linear /dev/loop0 15017268

Мне необходимо получить доступ ко второму разделу (W95 FAT32 (LBA)), но я ни как не могу этого сделать, ни какими способами и программными средствами.

Определить, что за ОСь крутится на устройстве не представляется возможным, т.к. интерфейс заблокирован сторонней оболочкой, подключиться к нему по сети или просканировать порты так же нет возможности, перезагрузить и т.п. - аналогично. Предположительно там Windows CE.

Есть мнение, что внутри LBA-раздела есть еще какая то логическая разбивка на разделы, поэтому и не получается его примонтировать как отдельный раздел.

Подскажите пожалуйста как можно прочитать структуру LBA-раздела и получить к нему доступ?

pas9x
18.08.2016, 18:07
↑ (https://antichat.live/posts/3982586/)
но я ни как не могу этого сделать, ни какими способами и программными средствами.


Почему не можешь? Если там нормальная файловая система то монтироваться раздел должен нормально.

Что выводит команда mount -t vfat mmcblk0.dd1 /mnt ?

nuxster
19.08.2016, 09:32
↑ (https://antichat.live/posts/3982765/)
Что выводит команда
mount -t vfat mmcblk0.dd1 /mnt
?


В данном случае я получаю:


# mount -t vfat mmcblk0.dd2 /mnt

mount: special device mmcblk0.dd2 does not exist

pas9x
19.08.2016, 14:58
↑ (https://antichat.live/posts/3982909/)
mount: special device mmcblk0.dd2 does not exist


Блин. Я конечно подозревал, что такое может быть, но надеялся что раз чел так всё грамотно расписал то знает что делает.

Естественно does not exist, а что ты сделал чтобы они exist?

Сначала надо подмонтировать файл как блочное устройство, причём первый и второй раздел также должны быть подмонтированы с правильным сдвигом относительно 0 блока. Как это делается написано здесь https://major.io/2010/12/14/mounting-a-raw-partition-file-made-with-dd-or-dd_rescue-in-linux/

Но вычислять сдвиг не обязательно, хотя полезно знать как это делается. Команда losetup делает это за тебя.


losetup --find --partscan --verbose mmcblk0.dd
ls -lh /dev |grep loop
mkdir /mnt/part1 /mnt/part2
mount -t vfat /dev/loop0p1 /mnt/part1
mount -t vfat /dev/loop0p2 /mnt/part2

nuxster
22.08.2016, 15:04
↑ (https://antichat.live/posts/3982991/)
Блин. Я конечно подозревал, что такое может быть, но надеялся что раз чел так всё грамотно расписал то знает что делает.


Дак понятное дело я его замонтировал сперва, ведь утилита kpartx, вывод которой я предоставил в своем первом посте, ясно показывает, что не может справиться со 2м разделом.

Ваш вариант я в первую очередь проверил:


# losetup --find --partscan --verbose mmcblk0.dd
# ls -lh /dev |grep loop
...
... loop0p1
... loop0p2
...
# mkdir /mnt/loop_p{1,2}
# mount -t vfat /dev/loop0p1 /mnt/loop_p1
# mount -t vfat /dev/loop0p2 /mnt/loop_p2

mount: wrong fs type, bad option, bad superblock on /dev/loop0p2,
missing codepage or helper program, or other error

In some cases useful info is found in syslog - try
dmesg | tail or so.

# dmesg | tail

[21216.560982] loop: module loaded
[21216.577156] loop0: p1 p2
[21216.577309] loop0: p2 size 615536 extends beyond EOD, truncated
[21240.645328] FAT-fs (loop0p2): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
[21240.645368] FAT-fs (loop0p2): bogus logical sector size 65535
[21240.645371] FAT-fs (loop0p2): Can't find a valid FAT filesystem

Пробовал различные варианты:


mount -t vfat -o codepage=866,iocharset=utf-8 /dev/loop0p2 /mnt/loop_p2
mount -t vfat -o codepage=866,iocharset=cp1251 /dev/loop0p2 /mnt/loop_p2
mount -t vfat -o codepage=866,iocharset=koi8-r /dev/loop0p2 /mnt/loop_p2
.....

В любом случае получаю:


[21720.554197] FAT-fs (loop0p2): bogus logical sector size 65535
[21720.554202] FAT-fs (loop0p2): Can't find a valid FAT filesystem

pas9x
23.08.2016, 11:20
Есть совсем дубовый способ. Просто запиши этот образ через dd на флешку размером >= 8гб и всё. А дальше если её винда не распознаёт то значит криво скопировано и единственный способ достать оттуда файлы - ковырять её программами по восстановлению дохлых файловых систем. Либо вообще вручную.

nuxster
23.08.2016, 17:48
↑ (https://antichat.live/posts/3984078/)
Есть совсем дубовый способ. Просто запиши этот образ через dd на флешку размером >= 8гб и всё. А дальше если её винда не распознаёт то значит криво скопировано и единственный способ достать оттуда файлы - ковырять её программами по восстановлению дохлых файловых систем. Либо вообще вручную.


Я так тоже уже делал. Винда не видит. Но девайс грузится и работает, значит скопировано не криво.

Какие программы можете посоветовать, на вскидку?

nuxster
12.09.2016, 14:23
Ни чего не помогло из выше предложенного. :-(

Но заметил интересную особенность:


# fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 7,5 GiB, 8053063680 bytes, 15728640 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 62 15017267 15017206 7,2G b W95 FAT32
/dev/mmcblk0p2 15017268 15632803 615536 300,6M c W95 FAT32 (LBA)



# fdisk -l /dev/mmcblk0p1

Disk /dev/mmcblk0p1: 7,2 GiB, 7688809472 bytes, 15017206 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6f20736b

Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1p1 ? 778135908 1919645538 1141509631 544,3G 72 unknown
/dev/mmcblk0p1p2 ? 168689522 2104717761 1936028240 923,2G 65 Novell Netware 386
/dev/mmcblk0p1p3 ? 1869881465 3805909656 1936028192 923,2G 79 unknown
/dev/mmcblk0p1p4 ? 2885681152 2885736650 55499 27,1M d unknown

Partition table entries are not in disk order.



# fdisk -l /dev/mmcblk0p2

Disk /dev/mmcblk0p2: 300,6 MiB, 315154432 bytes, 615536 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Т.е. раздел /dev/mmcblk0p1 содержыт в себе несколько разделов, но монтируется как один.