Snapdragon Über ADB und Recovery auf verschlüsselte /data Partition zugreifen (LineageOS 16)?

  • 7 Antworten
  • Neuester Beitrag
Diskutiere Über ADB und Recovery auf verschlüsselte /data Partition zugreifen (LineageOS 16)? im Xiaomi Redmi Note 4 Forum im Bereich Xiaomi Forum.
X

X-Ray

Neues Mitglied
Hallo zusammen!

Auf meinem Redmi Note 4 ist LineageOS 16 installiert. Die Datenverschlüsselung ist aktiviert, ich muss beim Starten ein Muster zum Entschlüsseln eingeben. Leider ist jetzt das Display defekt, es bleibt schwarz. Ich habe das Display bereits getauscht, aber ohne Erfolg - der Fehler muss woanders liegen.

Nun versuche ich per ADB und Recovery Image auf die Daten zuzugreifen. Folgendes habe ich erreichen können:
  • Per Fastboot die aktuellste TWRP-Version geladen:
    fastboot boot twrp-3.3.1-0-mido.img
  • Per ADB Shell den Speicher entschlüsselt (siehe TWRP Commandline Guide):
    adb shell
    Code:
    ~ # twrp decrypt 41236
    Attempting to decrypt data partition via command line.
    Data successfully decrypted, new block device: '/dev/block/dm-0'
    Updating partition details...
    ...done
    Unable to mount storage
    ~ #
Nach meinem Verständnis werden die Daten also entschlüsselt unter /dev/block/dm-0 bereitgestellt, können dann aber nicht unter /data gemountet werden.

Nach dem twrp decrypt Befehl kommen in der Datei /tmp/recovery.log folgende Zeilen hinzu:

Code:
I:Command 'decrypt 41236' received
I:Set page: 'singleaction_page'
I:operation_start: 'TWRP CLI Command'
Attempting to decrypt data partition via command line.
D:crypt_ftr->fs_size = 111393711
I:starting verify_hw_fde_passwd
I:Using scrypt with keymaster for cryptfs KDF
I:TWRP keymaster max API: 3
I:Signing safely-padded objectkeymaster module name is Keymaster QTI HAL
keymaster version is 256
Found keymaster1 module, using keymaster1 API.
I:Extra parameters for dm_crypt: fde_enabled ice
I:target_type = req-cryptI:real_blk_name = /dev/block/mmcblk0p49, extra_params = fde_enabled iceE:test mount returned 0
I:Found no matching fstab entry for uevent device '/devices/virtual/block/dm-0' - add
I:Found no matching fstab entry for uevent device '/devices/virtual/block/dm-0' - change
Data successfully decrypted, new block device: '/dev/block/dm-0'
I:Can't probe device /dev/block/dm-0
I:Unable to mount '/data'
I:Actual block device: '/dev/block/dm-0', current file system: 'ext4'
Updating partition details...
I:Can't probe device /dev/block/dm-0
I:Unable to mount '/data'
I:Actual block device: '/dev/block/dm-0', current file system: 'ext4'
I:Unable to mount '/sdcard1'
I:Actual block device: '', current file system: 'auto'
I:Unable to mount '/usb-otg'
I:Actual block device: '', current file system: 'auto'
...done
I:Can't probe device /dev/block/dm-0
I:Unable to mount '/data'
I:Actual block device: '/dev/block/dm-0', current file system: 'ext4'
Unable to mount storage
/data | /dev/block/dm-0 | Size: 0MB Used: 0MB Free: 0MB Backup Size: 0MB
Flags: Can_Be_Mounted Can_Be_Wiped Can_Be_Backed_Up Wipe_During_Factory_Reset Wipe_Available_in_GUI IsPresent Can_Be_Encrypted Is_Encrypted Is_Decrypted Has_Data_Media Can_Encrypt_Backup Use_Userdata_Encr
Symlink_Path: /data/media
Symlink_Mount_Point: /sdcard
Primary_Block_Device: /dev/block/mmcblk0p49
Decrypted_Block_Device: /dev/block/dm-0
Crypto_Key_Location: footer
Length: -16384
Display_Name: data
Storage_Name: Internal Storage
Backup_Path: /data
Backup_Name: data
Backup_Display_Name: Data
Storage_Path: /data/media
Current_File_System: ext4
Fstab_File_System: ext4
Backup_Method: files
MTP_Storage_ID: 65539
I:Unmounting main partitions...
I:Done reading ORS command from command line
I:operation_end - status=0
I:Set page: 'decrypt_pattern'
I:Set page: 'main'
I:Set page: 'clear_vars'
I:Set page: 'main2'
SELinux contexts loaded from /file_contexts
Full SELinux support is present.
I:Can't probe device /dev/block/dm-0
I:Unable to mount '/data'
I:Actual block device: '/dev/block/dm-0', current file system: 'ext4'
I:Unable to mount settings storage during GUI startup.
I:Copying file /cache/recovery/log to /cache/recovery/last_log
I:Can't probe device /dev/block/dm-0
I:Unable to mount '/data'
I:Actual block device: '/dev/block/dm-0', current file system: 'ext4'
I:Can't probe device /dev/block/dm-0
I:Unable to mount '/data'
I:Actual block device: '/dev/block/dm-0', current file system: 'ext4'
Unable to mount /data/media/TWRP/.twrps
I:Attempt to load settings from settings file...
I:InfoManager file '/data/media/TWRP/.twrps' not found.
I:Backup folder set to '/data/media/TWRP/BACKUPS/f707e0500604'
I:Copying file /etc/recovery.fstab to /cache/recovery/recovery.fstab
I:Version number saved to '/cache/recovery/.version'
I:Can't probe device /dev/block/dm-0
I:Unable to mount '/data'
I:Actual block device: '/dev/block/dm-0', current file system: 'ext4'
I:Unable to mount '/sdcard1'
I:Actual block device: '', current file system: 'auto'
I:Unable to mount '/usb-otg'
I:Actual block device: '', current file system: 'auto'
I:TWFunc::Set_Brightness: Setting brightness control to 255
I:PageManager::LoadFileToBuffer loading filename: '/twres/languages/en.xml' directly
parsing languageFile
parsing languageFile done
I:Translating partition display names
I:Backup folder set to '/data/media/TWRP/BACKUPS/f707e0500604'
I:Starting MTP
I:[MTP] Starting MTP
I:Can't probe device /dev/block/dm-0
I:Unable to mount '/data'
I:Actual block device: '/dev/block/dm-0', current file system: 'ext4'
MTP Enabled
I:Check_Lifetime_Writes result: '648837'
I:Switching packages (TWRP)
I:Starting Adb Backup FIFO
I:Set page: 'main'
I:Set page: 'clear_vars'
I:Set page: 'main2'
I:[MTP] created new mtpserver object
I:[MTP] MtpServer::run fd: 18
I:TWFunc::Set_Brightness: Setting brightness control to 5
I:TWFunc::Set_Brightness: Setting brightness control to 0
Die Ausgabe von fdisk sieht folgendermaßen aus:

Code:
~ # fdisk -l /dev/block/dm-0

Disk /dev/block/dm-0: 57.0 GB, 57033580032 bytes
255 heads, 63 sectors/track, 6933 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/block/dm-0 doesn't contain a valid partition table
~ #
Hat jemand eine Idee, wie ich auf die Daten zugreifen kann? Ich frage mich, ob nur das mounten nicht funktioniert, oder ob schon beim Entschlüsseln etwas falsch läuft und daher falsche Daten unter /dev/block/dm-0 bereitgestellt werden...

Viele Grüße!
Ray
 
Zuletzt bearbeitet:
DerGraf1997

DerGraf1997

Experte
/dev/block/dm-0 ist das komplette Blockdevice, d.h. du musst ein Partition-Offset angeben, damit du die Datenpartition gemountet bekommst. Infos zum Thema Offset: Mounting a raw partition file made with dd or dd_rescue in Linux :: Major Hayden 🤠 — Words of wisdom from a social nerd

Ich weiß jetzt nicht, ob sich unter TWRP irgendwie auf die GNU coreutils oder busybox zugreifen lässt. Die besten Chancen hast du wahrscheinlich, wenn du das Image per dd irgendwie auf eine ausreichend große MicroSD gebraten bekommst, dies dann an einem (Linux-)PC versuchst, zu mounten. Ich weiß nämlich nicht, ob das TWRP-mount auch mit Offsets arbeiten kann.

Dieser Post: Mount Android encrypted data partition on PC sagt mir, dass es wohl folgendermaßen funktionieren soll:
Bash:
adb shell twrp decrypt (deinpasswort)
adb pull /dev/block/dm-0 .../decryt_data.img
 
X

X-Ray

Neues Mitglied
Danke für die Hinweise! Ich habe inzwischen ein 57.033.580.032 Bytes großes Image von /dev/block/dm-0 auf meinen Rechner kopiert mit:
adb pull /dev/block/dm-0

Jetzt versuche ich unter Ubuntu 20.04 etwas mit diesem Image anzufangen:
  • file /media/sf_U_DRIVE/Note4Data/dm-0.img
    Ergebnis:
    /media/sf_U_DRIVE/Note4Data/dm-0.img: data
    Hier also schonmal keine hilfreiche Info.
  • Also die Datei mit loop-Device gemountet:
    losetup -fP /media/sf_U_DRIVE/Note4Data/dm-0.img
    Und mit fdisk untersucht:
    fdisk -l /dev/loop3
    Ergebnis:
    Disk /dev/loop3: 53,12 GiB, 57033580032 bytes, 111393711 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

    Partitionen werden leider nicht gefunden.
Wo kann ich Infos dazu finden, wie LineageOS 16 auf dem Redmi Note 4 (mido) das Block-Device dm-0 mit den entschlüsselten Daten interpretiert? Brauche ich zum mounten die Offsets von Partitionen? Oder sind das LVM-Volumes? Oder noch anders?
 
DerGraf1997

DerGraf1997

Experte
In dem Fall sollte sich das Image tatsächlich einfach als loop device mounten lassen. Dateisystem ist ext4, von daher sollten die Daten dort nun unverschlüsselt vorliegen
 
X

X-Ray

Neues Mitglied
Das wäre so schön. Aber leider:

Code:
# mount -o loop /media/sf_U_DRIVE/Note4Data/dm-0.img /mnt/Note4Data
mount: /mnt/Note4Data: wrong fs type, bad option, bad superblock on /dev/loop3, missing codepage or helper program, or other error.
# mount -t ext4 -o loop /media/sf_U_DRIVE/Note4Data/dm-0.img /mnt/Note4Data
[ 6986.649794] EXT4-fs (loop3): VFS: Can't find ext4 filesystem
mount: /mnt/Note4Data: wrong fs type, bad option, bad superblock on /dev/loop3, missing codepage or helper program, or other error.
# mount -t f2fs -o loop /media/sf_U_DRIVE/Note4Data/dm-0.img /mnt/Note4Data
[ 7004.610412] F2FS-fs (loop3): Can't find valid F2FS filesystem in 1th superblock
[ 7004.615289] F2FS-fs (loop3): Can't find valid F2FS filesystem in 2th superblock
mount: /mnt/Note4Data: wrong fs type, bad option, bad superblock on /dev/loop3, missing codepage or helper program, or other error.
 
DerGraf1997

DerGraf1997

Experte
Was sagt parted dazu? parted -s dm_0.img unit s print
 
Zuletzt bearbeitet:
X

X-Ray

Neues Mitglied
Code:
# parted -s /media/sf_U_DRIVE/Note4Data/dm-0.img unit s print
Error: /media/sf_U_DRIVE/Note4Data/dm-0.img: unrecognized disk label
Model:  (file)
Disk /media/sf_U_DRIVE/Note4Data/dm-0.img: 111393711s
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
 
Zuletzt bearbeitet:
DerGraf1997

DerGraf1997

Experte
Schaut aus, als wenn der Superblock einen weg hat bzw. die Partitionstabelle nicht vorhanden ist. Das sollte sich eigentlich recht einfach beheben lassen.
fsck.ext4 dm-0.img könnte da schon reichen, ggf. mal Testdisk drüber laufen lassen.