O
ooo
Enthusiast
- 3.449
Hinweis: Diese Lösung benötigt im Vorfeld mindestens einen entsperrten Bootloader
Die Lösung gilt für die folgende Situation
- Phone mit Android 6.x Marshmallow (gilt nicht für Lollipop, KitKat etc.)
- Externe SD Card als zusätzliche Speichererweiterung für den "echten" internen Speicher formatiert/eingebunden und automatisch verschlüsselt, Inhalte sind nur auf genau diesem Phone lesbar/bearbeitbar
(Nennt sich auch Adopted Storage | erweiterter Speicher | Expanded Storage) - Phone startet nicht mehr
(aus was für Gründen auch immer - Bootloop | Brick | Sturz | Akku tot ...) - Keine Backups der Daten vorhanden
- Die SD Card ist mechanisch unbeschädigt (die Inhalte vermutlich auch), kann entnommen werden und wurde noch nicht wieder formatiert
- Die passende Schlüssel-Datei zum Entsperren der SD Card ist vorhanden
(also woanders, z. B. auf einem Rechner als Backup-Kopie)
Voraussetzungen
- Für die Sicherung der Schlüssel-Datei:
- Der Bootloader des Phones ist entsperrt (zwingend)
(bzw. Zugriff als Root auf die Data-Partition, mindestens lesend, z. B. mit Datei-Manager-App, TWRP Recovery oder ADB Root Shell, ist vorhanden)
- Der Bootloader des Phones ist entsperrt (zwingend)
- Für eine spätere Daten-Rettung:
- Linux Rechner oder Linux-Live-CD/-USB-Stick oder Windows-Rechner mit VirtualBox und Linux VM
(z. B. Ubuntu, Mint) - SD Card Reader
(kann alternativ auch ein anderes Phone sein, das man an einen USB-Port der Linux Box anschließt. Das wird hier aber nicht behandelt, weil die Befehle/Befehls-Parameter dann anders aussehen.)
- Linux Rechner oder Linux-Live-CD/-USB-Stick oder Windows-Rechner mit VirtualBox und Linux VM
- USB-Treiber installiert und funktionsfähig
- ADB Tools für Windows (adb und fastboot) installiert und funktionsfähig
(MD5: 9b88b3e96c50496a9536c7d8d71b72c7)
Unter Linux Mint/Ubuntu im Terminal zu installieren mit
sudo apt-get install android-tools-adb android-tools-fastboot
oder
ADB und Fastboot - Original von Google & immer die aktuellste Version
Vorbereitung (Sicherung der Schlüssel-Datei, nur mit offenem Bootloader möglich)
Sofort nach dem ersten Formatieren der SD Card, noch bevor etwas passiert ist
- Die Datei /data/misc/vold/expand_<xyz>.key auf einen Rechner wegsichern
Mit TWRP Recovery geht das z. B. so (auch ohne Root, aber mit entsperrtem Bootloader):
- Phone und Rechner mit dem USB-Daten-Kabel verbinden
- Einstellungen > Über das Telefon > 7 x auf "Build-Nummer" tippen
- Einstellungen > Entwickleroptionen > Android-/USB-Debugging aktivieren
(Die folgende Anfrage positiv quittieren) - Am Rechner eine Eingabeaufforderung öffnen (cmd.exe), unter Linux ein Terminal öffnen
- Dort in das Verzeichnis mit adb.exe wechseln
- In den Bootloader starten mit
adb reboot bootloader - Ein zum Phone passendes TWRP Recovery Image besorgen, in das Verzeichnis mit der adb.exe kopieren und (temporär = muss nicht geflasht sein) starten mit
fastboot boot <passendes-twrp-recovery.img> - Im gestarteten TWRP-Image
TWRP Hauptmenü > Mount > Disable MTP
(MTP deaktivieren ist nur optional, manche Rechner/TWRPs lassen sonst nicht zu, mit adb zu arbeiten) - In der Eingabeaufforderung nachsehen, ob der Key (expand_<xyz>.key) da ist und wie die Datei genau heißt mit
adb shell "ls -la /data/misc/vold/ 2>/dev/null" - Wenn er da ist, den Key auf den Rechner in das aktuelle Verzeichnis kopieren mit
adb pull /data/misc/vold/
adb shell "hexdump -e '/1 \"%02X \"' /data/misc/vold/expand*.key ; echo"
adb shell "hexdump -v -e '/1 \"%02x\"' /data/misc/vold/expand*.key ; echo"
adb shell "hexdump -v -e '/1 \"%02x\"' /data/misc/vold/expand*.key" > expand.key.txt
Windows:
type expand.key.txt
cat expand.key.txt ; echo - Nach getaner Arbeit USB-Debugging bzw. die Entwickleroptionen wieder deaktivieren
- Das Passwort aus der kopierten Schlüssel-Datei (/data/misc/vold/expand_<xyz>.key) dann extrahieren und in einer Text-Datei (z. B. expand_<xyz>.key.txt) auf dem Rechner sichern
(Bei jedem erneuten Formatieren als Adopted Storage muss diese Datei (/data/misc/vold/expand_<xyz>.key) wieder gesichert werden, weil sich der Datei-Name und der darin enthaltene Schlüssel ändert. - Alte Dateien passen dann nicht mehr zur SD Card und können diese nicht mehr entschlüsseln. - Durch eine Neu-Formatierung wurde das "Schloß ausgewechselt" ...)
Bearbeiten kann man die Datei unter Windows z. B. mit
Downloads | mh-nexus
oder anderen HEX-Editoren. - Unter Linux nimmt man z. B. GHex.
Wichtig ist, das Passwort ohne Leerzeichen zwischen den 16 einzelnen Hexadezimal-Zahlen zu speichern/verwenden (Zur Not schreibt man es sich einfach ab.):
Beispiel-Passwort vorher:
55 80 D1 8A D1 F1 21 D5 E0 5D F1 A5 BC BC B7 29
Beispiel-Passwort nachher:
5580D18AD1F121D5E05DF1A5BCBCB729
- Tipp:
Dieses Passwort sollte man dann auch gleich testweise benutzen, wie im folgenden Abschnitt beschrieben. Damit weiß man, dass man im Ernstfall auch an die Inhalte der SD Card kommt.
Wenn das Problem dann irgendwann "endlich" da ist
Alternative 1:
Direkt mit der SD Card arbeiten
Linux starten, dort ein Terminal öffnen und folgende Befehle eingeben:
___
Alternative 2:
Wenn man eine SD Card als Raw Image Datei mit dd speichert (bzw. bereits hat) und man ohne die physische SD Card arbeiten möchte
Linux starten, dort ein Terminal öffnen und folgende Befehle eingeben:
Alternative 1:
Direkt mit der SD Card arbeiten
Linux starten, dort ein Terminal öffnen und folgende Befehle eingeben:
Code:
# Zu Root werden
sudo su -
# Optional fehlende Tools installieren mit
apt-get install android-tools-adb android-tools-fastboot ghex
# SD Card in den Linux Rechner einlegen
# (Die Karte wird gemountet und zeigt die erste von zwei
# Partitionen mit ca. 16/17 MB an, das ist aber nicht die,
# die man retten möchte)
# Jetzt im Terminal auf der SD Card die Partition 2 mounten
# und entschlüsseln:
# Ein logisches Volume für die zu entschlüsselnde SD Card
# Partition einrichten und die Partition gleich öffnen/aktivieren
# Dafür braucht man das zuvor gesicherte 32-stellige, HEX-codierte
# Passwort aus der expand_<xyz>.key-Datei (ohne Leerzeichen!)
dmsetup create adopted --table "0 `blockdev --getsize /dev/mmcblk0p2` crypt aes-cbc-essiv:sha256 <HIER_DAS_PASSWORT_AUS_DER_EXPAND_KEY_DATEI_HINSCHREIBEN> 0 /dev/mmcblk0p2 0"
# Mount Point anlegen
mkdir -p /mnt/adopted/
# Und die SD Card Partition als F2FS File-System dort einhängen
# Sollte "f2fs" nicht gehen, Befehl mit "ext4" benutzen
mount -t f2fs /dev/mapper/adopted /mnt/adopted/
# Test 1: Inhalt des Stamm-Verzeichnisses der SD Card anzeigen
ls -la -n /mnt/adopted/
# Test 2: Nur das anzeigen, was man am Rechner als SD-Karte inhaltlich sehen würde
ls -la -n /mnt/adopted/media/0/
# Weitere Aktionen - Datenrettung, Dateien kopieren etc. ...
# Tipp: Mit dem grafischen Dateimanager unter Linux Mint/Ubuntu
# muss man das als Systemverwalter/Root öffnen
# Links im Dateimanager "Dateisystem" öffnen
# > Verzeichnis "mnt" öffnen
# > Rechtsklick auf Verzeichnis "adopted"
# > Auswahl "Als Systemverwalter öffnen"
# > Linux-User-Passwort eingeben ...
# oder im Terminal folgende Zeile unter Linux Mint eingeben
# (bei Ubuntu ist es "nautilus" anstatt "nemo")
gksudo nemo /mnt/adopted 2> /dev/null &
# Nach der Arbeit wieder aufräumen
umount /mnt/adopted
rmdir /mnt/adopted
dmsetup remove adopted
# Linux root shell verlassen
exit
# Linux Terminal schließen
exit
Alternative 2:
Wenn man eine SD Card als Raw Image Datei mit dd speichert (bzw. bereits hat) und man ohne die physische SD Card arbeiten möchte
Linux starten, dort ein Terminal öffnen und folgende Befehle eingeben:
Code:
# Zu Root werden
sudo su -
# Optional fehlende Tools installieren mit
apt-get install android-tools-adb android-tools-fastboot ghex
# SD Card in den Linux Rechner einlegen
# (Die Karte wird gemountet und zeigt die erste von zwei
# Partitionen mit ca. 16/17 MB an, das ist aber nicht die,
# die man retten möchte)
# Abweichend zu Alternative 1
# SD Card komplett als Raw Disk Image auf dem Rechner erstellen
# Pfad und Datei-Name (/root/sdcard.raw.img) sind nur ein Beispiel
# Wenn man bereits eine Image-Datei hat, braucht man diesen Befehl
# natürlich nicht und lässt ihn hier weg
# Um eine Fortschrittsanzeige zu bekommen, installiert man sich erst "pv"
# mit folgendem Befehl
# apt-get install pv
# Dann kann man z. B. alternativ folgenden Befehl eingeben
# pv -s 32G /dev/mmcblk0 | dd of=/root/sdcard.raw.img
# (32G ist dabei die Größe der SD Card in Giga-Byte und nur ein Beispiel)
# Ohne "pv" und ganz ohne Fortschrittsanzeige geht das dann so
# Achtung: Je nach Größe der SD Card dauert das ein paar Stunden
dd if=/dev/mmcblk0 of=/root/sdcard.raw.img
# Abweichend zu Alternative 1
# Die beiden Partitionen der Image-Datei als looper devices mappen
kpartx -av /root/sdcard.raw.img
# Achtung: Etwas anderer Befehl als unter Alternative 1:
# Ein logisches Volume für die zu entschlüsselnde SD Card
# Partition einrichten und die Partition gleich öffnen/aktivieren
# Dafür braucht man das zuvor gesicherte 32-stellige, HEX-codierte
# Passwort aus der expand_<xyz>.key-Datei (ohne Leerzeichen!)
dmsetup create adopted --table "0 `blockdev --getsize /dev/mapper/loop0p2` crypt aes-cbc-essiv:sha256 <HIER_DAS_PASSWORT_AUS_DER_EXPAND_KEY_DATEI_HINSCHREIBEN> 0 /dev/mapper/loop0p2 0"
# Mount Point anlegen
mkdir -p /mnt/adopted/
# Und die SD Card Partition als F2FS File-System dort einhängen
# Sollte "f2fs" nicht gehen, Befehl mit "ext4" benutzen
mount -t f2fs /dev/mapper/adopted /mnt/adopted/
# Test 1: Inhalt des Stamm-Verzeichnisses der SD Card anzeigen
ls -la -n /mnt/adopted/
# Test 2: Nur das anzeigen, was man am Rechner als SD-Karte inhaltlich sehen würde
ls -la -n /mnt/adopted/media/0/
# Weitere Aktionen - Datenrettung, Dateien kopieren etc. ...
# Tipp: Mit dem grafischen Dateimanager unter Linux Mint/Ubuntu
# muss man das als Systemverwalter/Root öffnen
# Links im Dateimanager "Dateisystem" öffnen
# > Verzeichnis "mnt" öffnen
# > Rechtsklick auf Verzeichnis "adopted"
# > Auswahl "Als Systemverwalter öffnen"
# > Linux-User-Passwort eingeben ...
# oder im Terminal folgende Zeile unter Linux Mint eingeben
# (bei Ubuntu ist es "nautilus" anstatt "nemo")
gksudo nemo /mnt/adopted 2> /dev/null &
# Nach der Arbeit wieder aufräumen
umount /mnt/adopted
rmdir /mnt/adopted
dmsetup remove adopted
# Abweichend zu Alternative 1
# Die looper devices wieder frei machen
kpartx -dv /root/sdcard.raw.img
# Linux root shell verlassen
exit
# Linux Terminal schließen
exit
Anhänge
Zuletzt bearbeitet von einem Moderator:
Bearbeitet von:
cptechnik
- Grund: Typo adb-get -> apt-get