Using the SD card as Adopted Storage encrypts it. How can it be decrypted?

  • 1
    I think current versions of Android do not use the term Adopted Storage they use SD card formatted as internal storage. Dec 23, 2018 at 18:09

1 Answer 1


How to decrypt adopted storage.

  1. Your device must be rooted.

  2. Using a file browser like ES Explorer, browse to /data/misc/vold.

  3. The .key file there is the encryption key of your adopted storage. You can read it with this command: hexdump -e '1/1 "%.2x"' the_key_file.key

  4. Open that file with a hex editor to view the 16-byte key.

  5. On any GNU/Linux distro you can do this first mount your SD card, in my case SD card was mounted at /dev/sdb2.

  6. Then run this command:

    dmsetup create crypt1 --table "0 `blockdev --getsize /dev/sdb2` crypt aes-cbc-essiv:sha256 <Put the 16-byte hex key here> 0 /dev/sdb2 0"

Some types of errors/warnings can be ignored.

  1. If your key is correct you can mount it by mount -t ext4 /dev/mapper/crypt1 /mnt/1/
  2. Finally you can run cd /mnt/1 to browse the decrypted storage.
  • 2
    Are you certain you came up with all of this on your own? I've doubts given this search query: google.co.in/…
    – Firelord
    May 21, 2016 at 21:29
  • 2
    In that case consider explaining in detail the step 5. If possible, provide sources to support your technical claim. Thanks!
    – Firelord
    May 21, 2016 at 21:46
  • 1
    @Firelord well its clear that android likes to use EXT4 for apps and with a bit of searching i noticed how its done here source.android.com/security/encryption
    – poqdavid
    May 21, 2016 at 21:52
  • 2
    Related: Corrupt SD card formatted as internal storage. The answer is similar, but gives an alternative approach to finding the 16-byte key.
    – Izzy
    May 22, 2016 at 16:05
  • 3
    You can use hexdump -e '1/1 "%.2x"' the_key_file.key to convert binary to hex. Aug 23, 2016 at 16:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .