[How-To] Daten retten von als intern eingebundener SD Karte

  • 62 Antworten
  • Neuester Beitrag
Diskutiere [How-To] Daten retten von als intern eingebundener SD Karte im Android 6.0.x (Marshmallow) im Bereich Android Allgemein.
O

ooo

Lexikon
Hinweis: Diese Lösung benötigt im Vorfeld mindestens einen entsperrten Bootloader
Hinweis:
Das hat absolut nichts mit Hacken bzw. korrekt Cracken (also kriminellen Handlungen) zu tun. - Jeder darf ganz offiziell seinen Bootloader entsperren und jeder darf danach die System-Dateien seines Phones sehen, lesen, bearbeiten, kopieren & löschen.
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)
  • 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.)
  • 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/
      Oder auch einfach nur ausgeben lassen zum Kopieren/Abnotieren
      adb shell "hexdump -e '/1 \"%02X \"' /data/misc/vold/expand*.key ; echo"
      Evtl. geht auch das (dabei wird das Passwort bereits korrekt formatiert):
      adb shell "hexdump -v -e '/1 \"%02x\"' /data/misc/vold/expand*.key ; echo"
      Oder auch gleich direkt in eine Text-Datei auf dem Rechner schreiben lassen
      adb shell "hexdump -v -e '/1 \"%02x\"' /data/misc/vold/expand*.key" > expand.key.txt
      Und Ergebnis überprüfen (Inhalt der Datei expand.key.txt ausgeben):
      Windows:
      type expand.key.txt
      Linux:
      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.):

    passwort-extrahieren.png

    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:
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

  • ADB.zip
    820,8 KB Aufrufe: 1.070
Zuletzt bearbeitet von einem Moderator:
Bearbeitet von cptechnik - Grund: Typo adb-get -> apt-get
C

Capten

Neues Mitglied
Hallo community,

ich habe folgendes Problem.
Der Display meines HTC M8 ist defekt und ich kann dadurch das Handy nicht mehr starten.
Das ist das eine Problem, aber das andere ist, die SD Karte.
Diese hatte ich, in dem Handy als internen Speicher formatiert und bekomme nun keinen Zugriff mehr darauf.

Gibt es eine Möglichkeit, an die Daten ranzukommen (per PC)?
Wäre echt mies, wenn die Daten nun verloren gehen.....
 
C

Capten

Neues Mitglied
ohh ....

Danke!
Aber hilft mir nicht direkt weiter, da ich nicht im vorhinein die notwendigen Einstellungen gemacht habe.
Also schließe mal daraus, dass man dann nicht mehr an die Daten kommt...
 
C

Capten

Neues Mitglied
@rudolf

Hab das gerade mit der computerbild Notfall DVD probiert.

Hab das Programm über den bootloader gestartet und dann über die App "Laufwerke" probiert den Inhalt anzeigen zu lassen, aber bei dem Eintrag der SD Karte ist alles ausgegraut.
Lässt sich also nicht anzeigen...
Oder mache ich da was falsch? Geht das noch irgendwie anders?
 

Anhänge

magicw

magicw

Ehrenmitglied
Capten schrieb:
Also schließe mal daraus, dass man dann nicht mehr an die Daten kommt...
Richtig. Die als interner Speicher konfigurierte SD-Karte ist verschlüsselt. Und ohne den Schlüssel kommst du da nicht mehr an die Daten.
 
John.Faith

John.Faith

Erfahrenes Mitglied
Hallo zusammen, nachdem ich nun das ganze Jahr mit gerootetem Stock ROM inkl. Xposed und internal formatierter SD Karte ausgekommen bin, habe ich wie aus dem Nichts und ohne kurz vorher irgendwelche Änderungen vorgenommen zu haben ein katastrophales Problem:

Mein S7 Edge steckt im Bootloop fest, sobald die SD Karte eingelegt ist. Auch ins TWRP komme ich nicht mehr. Nehme ich die Karte raus, läuft alles wunderbar, nur habe ich dann keinen Zugriff auf all meine Daten die ich unbedingt brauche.
Probeweise habe ich die SD Karte in ein Galaxy S4 gesteckt, dort wird sie mir allerdings als leer angezeigt (was mir extrem Angst macht). Da die Karte wie gesagt als interne SD formatiert ist, weiß ich nun nicht, wie ich an die Daten komme, die HOFFENTLICH noch da sind und generell wie ich die Karte überhaupt weiterhin verwenden kann.

Das Problem ist heute an Heiligabend aufgetreten, als ich gerade auf Instagram unterwegs war und das Handy sich plötzlich neustartete und dann im Bootloop hing.

Weiß jemand wie ich meine Daten retten kann? :(
 
Zuletzt bearbeitet von einem Moderator:
Bearbeitet von hagex - Grund: Typenbezeichnung vor Threadmerge im Post ergänzt, Gruß von hagex
O

ooo

Lexikon
John.Faith schrieb:
Weiß jemand wie ich meine Daten retten kann?
So, wie im Start-Posting beschrieben ...

(Da dein Device gerootet ist, kommst du an die Schlüssel-Datei, die du dann auf einer Linux-Box benutzen kannst, um herauszufinden, ob die Inhalte zerstört oder noch da sind.)
 
John.Faith

John.Faith

Erfahrenes Mitglied
Hallo, ich möchte die Schritte gerne mit Ubuntu als VM testen. Was genau ist mit "SD Card in den Linux Rechner einlegen" gemeint? Müsste ich mir extra ein SD Karten Lesegerät kaufen oder geht das auch irgendwie mit im Smartphone eingelegter SD, dass im Downloadmodus o.ä. ist? Ich hab noch nicht ganz raus, wie Ubuntu nu an die Speicherkarte kommt...
 
O

ooo

Lexikon
John.Faith schrieb:
Müsste ich mir extra ein SD Karten Lesegerät kaufen ...
Ja. (Oder anderen Rechner benutzen, der einen SD Card Reader hat)
John.Faith schrieb:
... oder geht das auch irgendwie mit im Smartphone eingelegter SD,
Nein. (Nicht in dieser Anleitung.)
___

Tipp: Nimm einfach einen USB-Stick mit einem Ubuntu oder Linux Mint drauf Stichwort: Live-DVD, ohne VM. - Mit geht es natürlich auch, erfordert aber mehr und komlexere Schritte für die Installation der VM-Software und der VM selbst. - Wenn du bereits eine hast, hab' ich natürlich nichts gesagt ...
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
Hier ein paar Links dazu:

Linux Box selbst aufsetzen (z. B. Linux Mint Live-DVD oder von einem USB-Boot-Stick im "Nur ausprobieren"-Modus starten reicht, dann adb und fastboot installieren und kurz einrichten - Nur "Schritt 1," siehe Spoiler dort) - Schon nach dem Start der Live-DVD kann man - im Linux Desktop angekommen - erkennen, ob das Phone bzw. das Kabel funktionieren oder nicht ... (Die Windows-Installation wird dabei nicht verändert.)

Download - Linux Mint
Brenne die ISO-Datei auf DVD
Live-DVD booten


Benutzer-Handbuch - Linux Mint

___
Linux Mint installieren – So geht's
USB-Stick bootfähig machen in wenigen Schritten
 
John.Faith

John.Faith

Erfahrenes Mitglied
Jesus, ist das ein Aufwand...
Bevor ich mich da stundenlang weiter reinfriemele, ich hab die SD Karte wie gesagt schon in ein anderes Samsung Smartphone gesteckt. Dort funktioniert die ganz normal, wird allerdings als leer angezeigt. Ist das normal oder ist die möglicherweise schon irgendwie- und wann formatiert worden und ich mache gerade alles umsonst?
 
O

ooo

Lexikon
Das weiß ich nicht. - Es kann sein, dass die Karte defekt ist, dass sie bereits gelöscht/reformatiert ist, es kann aber auch sein, dass sie noch in Ordnung ist. - Deswegen machst du das ja alles, weil du es herausfinden möchtest. - Nur würde ich sie nicht mehr irgendwo in ein Phone einsetzen, solange ich das mit einer Linux Box nicht überprüft habe. - Das Reinfriemeln machst du einmal, verbuchst es als Lehrgeld und hast etwas Neues gelernt - auch, wenn die SD Card die Daten nicht mehr hergeben sollte. - Bei der nächsten SD Card machst du ab und zu eine Sicherung auf den Rechner.
 
V

villeneuve

Ambitioniertes Mitglied
Vielen Dank, meine Mutter freut sich sehr, daß ich ihre Daten dank der super Anleitung retten konnte.
Da ich jetzt die Schnauze voll habe von der scheinbar unzuverlässigen Android-Funktion der Speichererweiterung per eingebundener SD-Karte ist meine Frage jetzt: Kann ich die bisher auf der SD-Karte liegenden, nun geretteten Daten, irgendwie wieder ins System einpflegen (ohne Fotos, Musik etc. natürlich)?
 
O

ooo

Lexikon
Ja, das geht. - Allerdings nur, wenn man im "echten" internen Speicher genug Platz hat:
  • (Am Rechner sichtbare) Inhalte der SD Card komplett sichern (wenn erforderlich)
  • Photos, Musik etc. können dann auch gelöscht werden, um für "Daten migrieren" (s. u.) weniger Platz im internen Speicher zu benötigen
  • Alle verschobenen Apps (einzeln) wieder in den internen Speicher zurück verschieben
  • Einstellungen > Speicher > Interner Speicher > Menü > Daten migrieren
    (also von der intern eingebundenen SD Card die Daten in den "echten" iinternen Speicher zurückholen)
  • Danach kann man die SD Card wieder als Tragbaren/Mobilen Speicher formatieren, wenn man möchte
Tipp:
Wenn das Device gerootet (bzw. der Bootloader entsperrt) und ein TWRP Recovery vorhanden ist, kann man sich vor der ganzen Aktion noch ein Voll-Backup anlegen (OTG-USB-Stick wäre optimal) und dieses auf den Rechner wegkopieren.​
 
Zuletzt bearbeitet:
John.Faith

John.Faith

Erfahrenes Mitglied
Danke erstmal. Aus Zeitmangel habe ich mich allerdings dazu entschieden, die Daten auf der SD Karte aufzugeben. (Ein paar habe ich wie es scheint vorher doch gesichert). Ich habe über das S7 Edge mit nicht eingelegter SD die Registrierung aufgehoben und der Gerät läuft soweit wieder ganz normal. Sobald ich die SD einlege, erscheint allerdings die Meldung "SD-Karte nicht unterstützt" und ich werde dazu aufgefordert, sie zu formatieren. Das habe ich dann (angeblich) auch getan, doch die Meldung erscheint noch immer und ich kann nicht darauf zugreifen. Auch wenn ich das S7E an den PC anschließe erscheint lediglich der interne Speicher. Im Recovery allerdings wird die SD als solche erkannt. Im normal eingeschaltetem Zustand habe ich über die Eingabeaufforderung sm partition disk:179,0 public eingegeben, was allerdings auch nichts bewirkt. So langsam kriege ich Angst...
 
O

ooo

Lexikon
Am Rechner und im TWRP kann man die SD Card ebenfalls formatieren. - Versuch es mal so. - Oder ganz normal (nicht im Terminal Emulator) nochmal im Phone und danach Phone ausschalten, einmal ohne SD Card starten, wieder runter fahren, SD Card einsetzen, wieder starten. - Nützt das nichts, neue SD Card besorgen ...
 
John.Faith

John.Faith

Erfahrenes Mitglied
Es scheint alles nichts zu nützen. Habe sie probeweise via Adapter in meine Kamera gesteckt, dort kommt nur die Meldung "SD-Karte nicht formatiert". Versuche ich sie hierüber zu formatieren, bleibt die Meldung erhalten. Das komische ist, dass sie im Recovery Modus und im alten Galasy S4 wunderbar funktioniert. Ich vermute also, dass sie physisch noch unbeschädigt ist und irgendetwas am System umgestellt werden muss. Kenne mich da nur leider 0 aus. Die Karte war teuer...

Edit: Es gibt die Funktion, das Dateisystem zu ändern. Das könnte ich mal testen. Welches wäre da das "normale". Leider keenen Plan, was EXT2,3 usw. zu beudeten haben :o
 
Zuletzt bearbeitet:
O

ooo

Lexikon
Welche Größe (Kapazität, freier Speicher) zeigt dir dein S4 für die SD Card an und welche Kapazität ist aufgedruckt?
 
John.Faith

John.Faith

Erfahrenes Mitglied
Die tatsächliche. Es lassen sich auch Dateien und Ordner auf der SD bearbeiten. Sowohl formatieren, partitionieren, reparieren oder sonst eine Form der Änderung vom Recovery des S7E funktioniert doch nicht, wie ich gerade getestet habe. S4 top, S7E flop... :(