Come leggere il contenuto di una SD card usata con crittografia su un dispositivo Android.
Estraendo dal telefono la SD card e inserendola in un PC GNU/Linux si può vedere il seguente schema di partizione (quella che interessa è la seconda partizione):
Disk /dev/sdb: 29,72 GiB, 31914983424 bytes, 62333952 sectors Disk model: STORAGE DEVICE 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: gpt Disk identifier: 78B76F02-A9D9-4974-B648-F277E7C43CEF Device Start End Sectors Size Type /dev/sdb1 2048 34815 32768 16M unknown /dev/sdb2 34816 62333918 62299103 29,7G unknown
Senza la chiave crittografica è impossibile decifrare il contenuto della SD card, questa va recuperata dal dispositivo Android. È necessario avere accesso root al telefono oppure avere un dump della memoria.
Il file interessato si trova nella cartella /data/misc/vold, si tratta di un file di 16 byte:
-rw------- 1 root root 16 2021-06-03 15:30 expand_b532da9c958f42df86808af649186da6.key
Copiare il file sul PC e visualizzarne il contenuto in esadecimale:
od -t x1 expand_b532da9c958f42df86808af649186da6.key 0000000 f8 de 0d b9 d7 c0 38 f4 72 53 f5 98 e7 bc 24 a2 0000020
Vedere la dimensione in byte del volume:
blockdev --getsize /dev/sdb2 62299103
Quindi è possibile attivare il volume crittografato con:
dmsetup create crypt1 \ --table "0 62299103 crypt aes-cbc-essiv:sha256 f8de0db9d7c038f47253f598e7bc24a2 0 /dev/sdb2 0"
In questo modo diventa disponibile il device /dev/mapper/crypt1, che può essere montato (in questo esempio in modalità read-only) con:
mount -o ro /dev/mapper/crypt1 /mnt/
Il filesystem potrebbe essere ext4 oppure f2fs.
Per smontare la scheda SD:
umount /mnt dmsetup remove crypt1