- PVSM.RU - https://www.pvsm.ru -
В Android 6.0 ввели функцию, позволяющую отформатировать карту памяти так, чтобы она являлась не отдельным хранилищем, а придатком ко внутренней памяти. Это позволяет избежать путаницы с двумя хранилищами данных, особенно при ручной установке некоторых не всегда честно купленных крупных приложений, поставляемых по частям. Однако есть один нюанс: при этом всём нам наглухо блокируют доступ к карте напрямую. Хочешь что-то передать на устройство — используй MTP со всеми вытекающими, вроде скорости передачи файлов, сравнимой с прогулочным шагом контуженной черепахи. Карту теперь не только к ПК через кабель напрямую нельзя подключить: её и из выключенного телефона через кардридер просто так не смонтируешь, ведь она отформатирована в нечто неизвестное ни науке, ни нашим компьютерам.
Но ведь правила созданы для того, чтобы их нарушать? Давайте попробуем обойти это бессовестное ограничение.
Рекомендуется для ежедневного использования. Судя по всему, даже не требует рут. Всё, что понадобится — это ADB. Те, кто в курсе, могут пролистать до второго способа.
С передачей всё просто: первый аргумент — откуда, второй аргумент — куда. /sdcard — то место, куда на Андроиде монтируется доступное пользователю хранилище, т.е. корневой каталог штатного файлового менеджера почти любого девайса на Андроиде.
$ adb push chunk.bin /sdcard
chunk.bin: 1 file pushed. 4.8 MB/s (44040192 bytes in 8.667s)
Получение — аналогично:
$ adb pull /sdcard/chunk.bin chunk2.bin
/sdcard/chunk.bin: 1 file pulled. 16.0 MB/s (44040192 bytes in 2.627s)
$ cmp chunk.bin chunk2.bin
Основной плюс — двухсторонний обмен данными на вполне удовлетворительной скорости (если сравнивать с MTP). Также ко всей этой красоте прилагается симпатичный счетчик прогресса в процентах, который, к сожалению, отсюда не видно. Полагаю, что к графическому файловому менеджеру тоже можно как-то приделать нечто похожее, но на практике с такими плагинами сталкиваться не приходилось. Возможно, Android всё-таки не зря нас к карте не подпускает, ну да ладно, кто ж его спрашивает?
На этот раз нам понадобятся root-доступ к смартфону и ПК с системой на базе Linux.
Для начала вытянем карту из девайса, подключим к ПК и сразу же посмотрим на её содержимое.
$ parted /dev/mmcblk0 print
Model: SD SD32G (sd/mmc)
Disk /dev/mmcblk0: 31.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 17.8MB 16.8MB fat32 android_meta
2 17.8MB 31.2GB 31.2GB android_expand
Отлично, хотя бы таблица разделов имеется.
Невооружённым взглядом видно, что филейная часть — это второй раздел с неопознанной файловой системой. Первый раздел прекрасно монтируется в fat32 и не менее прекрасно пуст, поэтому про него можно забыть, т.к. я не знаю, что на нём хранится у здоровых людей.
Вторая часть зловещего плана — ключ. Да-да, данные зашифрованы: не просто ж так parted не смог обнаружить на целевом разделе ФС. С ключом всё почти так же просто: хранится он на нашем Android-девайсе в двоичном файлике по адресу /data/misc/vold/expand_PARTUUID.key, где PARTUUID — это UUID шифрованного раздела в нижнем регистре без разделителей. Рут нам понадобится как раз для того, чтобы добраться до этого файла через нечитаемый для всех, кроме рута, каталог /data/misc/vold.
$ partuuid=$(lsblk /dev/mmcblk0p2 -o PARTUUID | tail -1 | tr -d '-')
$ adb root
$ adb pull /data/misc/vold/expand_$partuuid.key magic.key
/data/misc/vold/expand_9d292da2b76a9179118aaa217f23e4a7.key: 1 file pulled. 0.0 MB/s (16 bytes in 0.110s)
Готово. 128 бит заветной информации.
Заключительная часть Мерлезонского балета — подключение раздела. Сделаем это стандартным линуксовским dm-crypt, который, собственно, и самим Андроидом используется.
К сожалению, я не знаю, какой именно метод шифрования используется Андроидом, поэтому понадеюсь на пресвятой дефолт, оставив --cipher неуказанным.
$ cryptsetup open --type plain --key-file=magic.key --key-size=128 /dev/mmcblk0p2 dm-magic
На меня не ругаются, это хорошо. Монтируем.
$ mount /dev/mapper/dm-magic /mnt
$ ls -l /mnt
total 21
drwxrwx--x 33 alpha alpha 3488 Mar 16 08:51 app
drwxr-x--x 3 root root 3488 Nov 29 00:34 local
drwxrwx--- 4 1023 1023 3488 Nov 29 08:01 media
drwxrwx--t 3 alpha 9998 3488 Nov 30 03:02 misc
drwx--x--x 3 alpha alpha 3488 Nov 29 00:34 user
drwx--x--x 3 alpha alpha 3488 Nov 29 00:34 user_de
Кажется, получилось. Неопознанные UID-ы напоминают нам о том, что карточка не с нашего ПК и лучше бы нам здесь особо ничего не ворошить.
Если поковыряться по каталогам, можно увидеть данные приложений, хранящихся на карте памяти, а также непосредственно содержимое SD-карты, которое нам подсовывали в первом способе по адресу /sdcard. Его мы можем найти в каталоге /mnt/media/0.
На этом всё, приятного ковыряния.
Автор: fedoraman
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/276198
Ссылки в тексте:
[1] Источник: https://geektimes.ru/post/299409/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.