====== Android: come leggere una scheda SD crittografata ======
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
===== Web References =====
* **[[https://nelenkov.blogspot.com/2015/06/decrypting-android-m-adopted-storage.html|Decrypting Android M adopted storage]]**