Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Песочница (https://forum.antichat.xyz/forumdisplay.php?f=189)
-   -   Монтирование неизвестного LBA раздела (https://forum.antichat.xyz/showthread.php?t=440943)

nuxster 18.08.2016 11:00

Доброго времени суток!

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

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

Код:

Code:
# 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)

Код:

Code:
# 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

Код:

Code:
# 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

Цитата:

Сообщение от nuxster
nuxster said:

но я ни как не могу этого сделать, ни какими способами и программными средствами.

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

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

nuxster 19.08.2016 09:32

Цитата:

Сообщение от pas9x
pas9x said:

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

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

Код:

Code:
#  mount -t vfat mmcblk0.dd2 /mnt

mount: special device mmcblk0.dd2 does not exist


pas9x 19.08.2016 14:58

Цитата:

Сообщение от nuxster
nuxster said:

mount: special device mmcblk0.dd2 does not exist

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

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

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

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

Код:

Code:
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

Цитата:

Сообщение от pas9x
pas9x said:

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

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

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

Код:

Code:
# 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

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

Код:

Code:
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
.....

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

Код:

Code:
[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

Цитата:

Сообщение от pas9x
pas9x said:

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

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

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

nuxster 12.09.2016 14:23

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

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

Код:

Code:
# 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)

Код:

Code:
# 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.

Код:

Code:
# 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 содержыт в себе несколько разделов, но монтируется как один.


Время: 13:33