Threema-Daten aus TWRP-Backup übernehmen

Stelle deine Frage öffentlich an die Threema-Forum-Community - über 4.600 Mitglieder helfen dir weiter. > Frage stellen <
  • Hallo zusammen. :)

    Ich hab auf meinem Samsung Galaxy S2 Cyanogenmod 13 laufen (ohne root). Vor einiger Zeit hat es sich aufgehängt und ich habe nach einiger Wartezeit den Akku rausgenommen – war vorher schon ein paar Mal passiert, und damals hatte ich mit dieser Aktion immer Glück! Dieses Mal leider nicht -- Bootloop. :(

    Also habe ich erstmal mit TWRP ein Backup von /boot, /data und /system gemacht, und mittels ADB die Daten von der internen sdcard gesichert.

    Anschließend Reparaturversuche:

    - Cache und Dalvik-Cache leeren mit TWRP bringt nichts.
    - Restore /system aus altem TWRP-Backup (und Caches löschen, das lasse ich bei den restlichen Schritten weg, ist ja klar) auch nicht
    - Restore /boot aus altem TWRP-Backup auch nicht

    Restore von /boot, /system und /data aus altem TWRP-Backup behebt das Problem. Nur sind halt leider die Daten alt.

    Jetzt habe ich versucht, die Threema-Daten aus dem neuen TWRP-Backup zu extrahieren, aber irgendwas klappt nicht. Ich versuche, das frisch ge-restore-te Handy zu booten (klappt), den ADB-Rootzugriff zu erlauben (klappt),

    Code
    adb root


    (klappt), mich mit einer ADB-Shell damit zu verbinden (klappt), mit

    Code
    rm -r /data/data/ch.threema.*


    die Threema-ordner zu löschen (klappt), mit

    Code
    adb push usb-stick/threema-extrakt/ch.threema.app /data/data/ch.threema.app


    die drei Ordner aus dem Backup zurückzuladen (klappt), mit

    Code
    chown -R <id>:<id> ch.threema.app


    die richtigen Besitzer der Ordner zu setzen (klappt) und mit

    Code
    restorecon -Rv /data/data/ch.threema.app


    die richtigen Wasweißichwas zu setzen.

    Doch wenn ich dann reboote (egal ob mit oder ohne Caches-Leeren), ist Threema einfach weg!

    Bedeutet, irgendwas fehlt mir noch in meinem Vorgehen. Hat jemand Ahnung oder kann mich in die richtige Richtung stupsen?
    Apps aufs Handy laden kann ich leider nicht, da ich dazu das WLAN einschalten müsste und Threema neue Daten in den zu überschreibenden alten Bestand schreibt.


    Freue mich auf Antworten! :)

  • Hallo äpfelgarten,

    erste Frage: du hast in Threema ein internes Backup gemacht?
    Wenn ja dann sollte noch nichts verloren sein, wenn nicht brauchst ein Titanium Backup, das dir die vollständigen AppDaten sichern kann - das macht das TWRP bzw. Nandroid Backup nicht.

    Das Nandroid Backup sichert nur System und data (ohne Interner Speicher), daher wird der Threema Benutzer Ordner auch nicht gebackupt.
    Entweder du hast ein Titatium Backup, oder du versuchst mal über TWRP den Internen Speicher per Dateimanager anzuwählen und den Threema Backup Ordner auf eine SD Karte zu sichern (oder per USB auf den Rechner) - falls nicht schon geschehen (sicher ist sicher).

    Ansonsten kannst ja einfach "system" (und wenn das nicht klappt auch "data" - aber dann sind alle Apps und Eintsellungen weg) wipen und CM13 neu flashen. Darüber kommst wieder an deinen Internen Speicher und damit an deine persönlichen Threema Daten (ID,Chats - sofern ein Threema Backup vorhanden). Dann einfach Threema neu installieren und das Backup (das an der richtigen Stelle im internen Speicher abgelegt werden sollte) wieder einspielen.

    Viel Erfolg! ;)

    Einmal editiert, zuletzt von Anton (8. Dezember 2017 um 15:18)

  • Hallo Anton :)

    Zitat von "Anton" pid='34866' dateline='1512742054'


    Hallo äpfelgarten,

    erste Frage: du hast in Threema ein internes Backup gemacht?

    Ja, das ist aber noch viel älter.

    Zitat

    Wenn ja dann sollte noch nichts verloren sein, wenn nicht brauchst ein Titanium Backup, das dir die vollständigen AppDaten sichern kann - das macht das TWRP bzw. Nandroid Backup nicht.

    Das Nandroid Backup sichert nur System und data (ohne Interner Speicher), daher wird der Threema Benutzer Ordner auch nicht gebackupt.
    Entweder du hast ein Titatium Backup, oder du versuchst mal über TWRP den Internen Speicher per Dateimanager anzuwählen und den Threema Backup Ordner auf eine SD Karte zu sichern (oder per USB auf den Rechner) - falls nicht schon geschehen (sicher ist sicher).

    Ja, das habe ich ja gemacht, ich habe alle Daten von der internen sdcard per adb aus dem TWRP-Modus-Telefon geladen. Was davon sind denn die Threema-Daten?
    [hr]
    Hah, ich nochmal:

    Zitat von "Anton" pid='34866' dateline='1512742054'


    Das Nandroid Backup sichert nur System und data (ohne Interner Speicher), daher wird der Threema Benutzer Ordner auch nicht gebackupt.

    Moment, das kann aber nicht sein, wenn ich jetzt keinen Denkfehler habe: Ich habe, als das Handy im Bootloop war, TWRP gestartet und all die Backups gemacht (nandroid, manuell von der internen sdcard). Dann habe ich /boot, /system und /data gewipt und aus dem älteren Backup geladen. Die interne sdcard habe ich nicht angefasst!

    Als ich das Handy dann wieder gebootet habe, war Threema noch da, und es hatte genau den Datenbestand, den es hatte, bevor ich das Backup erstellt hatte, aus dem ich /boot, /system und /data wiederhergestellt habe. Käme es auf die interne sdcard an, wären die Daten aktueller gewesen! Oder?

  • Und was genau suchst du? Deine ID scheinst du ja noch zu haben, aber die aktuellen Chatverläufe fehlen dir?

    Ein Nandroid fasst den Threema Ordner auf dem internen Speicher nicht an, also weder wird er gesichert noch wiederhergestellt.
    /data enthält die App Dateien - also Einstellungen und die Bestandteile zum Funktionieren der Apps (auch die Einstellungen von CM sind auf der Partition gespeichert). - Wenn du /data wieder einspielst, dann sind viele (aber nicht alle!) Apps wieder exakt auf dem Stand wie beim Zeitpunkt des Backups - außer es werden Verknüpfungen zum Internen Speicher gemacht, die dann entweder nicht mehr hergestellt oder gefunden werden können.
    Bei Threema ist meine Erfahrung, dass ich nur mit über Titanium Backup (root) gesicherten App-Daten direkt weiterarbeiten kann und ansonsten das Threema Backup (Interner Speicher/Threema/Threema Backups) einspielen muss. Das "/data-Nandroid-Backup" führt bei mir erfahrungsgemäß zu Problemen (könnte mit der Verschlüsselung der Inhalte zu tun haben - vielleicht weiß das hier ein anderer genauer?).

    Frage am Rande: hast dich mal mit dem Aufspielen von LineageOS fürs S2 befasst?

    Einmal editiert, zuletzt von Anton (9. Dezember 2017 um 22:33)

  • Zitat von "Anton" pid='34882' dateline='1512855003'


    Und was genau suchst du? Deine ID scheinst du ja noch zu haben, aber die aktuellen Chatverläufe fehlen dir?

    Ja, ganz genau.

    Zitat

    Ein Nandroid fasst den Threema Ordner auf dem internen Speicher nicht an, also weder wird er gesichert noch wiederhergestellt.
    /data enthält die App Dateien - also Einstellungen und die Bestandteile zum Funktionieren der Apps (auch die Einstellungen von CM sind auf der Partition gespeichert). - Wenn du /data wieder einspielst, dann sind viele (aber nicht alle!) Apps wieder exakt auf dem Stand wie beim Zeitpunkt des Backups - außer es werden Verknüpfungen zum Internen Speicher gemacht, die dann entweder nicht mehr hergestellt oder gefunden werden können.

    Genau, ich müsste praktisch /data wieder einspielen, aber genau dann kommt die Bootloop wieder -- es ist also etwas dran kaputt. Der interne Speicher ist noch so, wie er beim Bootloop war. Ich versuche also, nur die Threema-Daten rauszuholen.

    Zitat

    Bei Threema ist meine Erfahrung, dass ich nur mit über Titanium Backup (root) gesicherten App-Daten direkt weiterarbeiten kann und ansonsten das Threema Backup (Interner Speicher/Threema/Threema Backups) einspielen muss. Das "/data-Nandroid-Backup" führt bei mir erfahrungsgemäß zu Problemen (könnte mit der Verschlüsselung der Inhalte zu tun haben - vielleicht weiß das hier ein anderer genauer?).

    Hast du bei deinen Versuchen auch an die chowns und restorecons gedacht oder "nur" /data/data/ch.threema.<xyz> reinkopiert?

    Zitat

    Frage am Rande: hast dich mal mit dem Aufspielen von LineageOS fürs S2 befasst?

    Bislang keine Zeit gehabt. :(

    Kann man denn mit Titanium Backup einzelne App-Daten aus einem TWRP-Backup zurücksichern? Wenn das ginge, müsste ich ja nur das ältere TWRP wiederherstellen, Threema deinstallieren, Titanium Backup installieren und Threema aus dem Bootloop-TWRP-Backup zurückholen.

  • Zitat von "rugk" pid='35032' dateline='1513431482'


    Könnte das evt. der Grund für den Bootloop sein: https://threema-forum.de/thread-3624-post-35002.html

    Das ist eine sehr interessante Frage.
    Um das herauszufinden, müsste ich die Version von Threema kennen, mit der die Bootloop auftritt, richtig? Nachdem ich die ja schlecht nachschauen kann, habe ich das TWRP-Backup mal auseinandergenommen und unter /data/app/ch.threema.app-2 die base.apk aufgemacht (7zip) und in das Manifest geschaut. Da steht drin (Zeile 10):

    Code
    permission<NUL><FF>stopWithTask<NUL><VT>authorities<NUL><DC3>grantUriPermissions<NUL><BEL>android<NUL>*http://schemas.android.com/apk/res/android<NUL><NUL><NUL><BEL>package<NUL><CAN>platformBuildVersionCode<NUL><CAN>platformBuildVersionName<NUL><BS>manifest<NUL><SO>ch.threema.app<NUL><EOT>3.21<NUL><STX>26<NUL><ENQ>8.0.0<NUL><BS>uses-sdk<NUL><SI>uses-permission<NUL>7android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS<NUL><DLE>supports-screens<NUL><FF>uses-feature<NUL> android.permission.READ_CONTACTS<NUL>


    (Am Ende viel weggelassen; ich hab nur Notepad++, die HTML-artigen Worte sind die n++-Darstellung der Sonderzeichen)

    Daraus hätte ich jetzt gelesen, dass ich im Bootloop-System Threema Version 3.21 habe. Kann das sein?

    Was ich heute probiert habe:
    - Altes TWRP-Backup wiederhergestellt: Läuft, aber Threema hat alte Daten.
    - Das folgende wiederhergestellt aus dem Bootloop-Backup:

    Code
    /data/app/ch.threema.app-2/oat/arm/base.odex
    /data/app/ch.threema.qrscannerplugin-2/oat/arm/base.odex
    /data/data/ch.threema.app/databases/threema.db
    /data/data/ch.threema.app/databases/threema-nonce-blob.de
    /data/data/ch.threema.app/files/.crs-pref_message_drafts
    /data/data/ch.threema.app/files/msgqueue.ser
    /data/data/ch.threema.app/shared_prefs/ch.threema.app_preferences.xml
    /data/misc/keystore/user_0/<AndroidThreemaUserId>_USRKEY_threema_pinlock_key

    Das waren nämlich die (mMn relevanten Dateien), die sich in den beiden Backups unterscheiden. Das "wiederherstellen" habe ich ganz mühsam per Hand mit

    Code
    cat neueDatei > alteDatei

    gemacht, damit die Rechte nicht kaputtgehen.

    Leider kein Erfolg: Starte ich danach Threema, stürzt es ab und im Android Log steht

    Code
    ch.threema.app.ThreemaApplication: net.sqlcipher.database.SQLiteDatabaseCorruptException: database disk image is malformed: , while compiling: select count(*) from sqlite_master

    Ich denke also, dass ich irgendein wichtiges Detail noch übersehen habe.

  • Nochmal probiert:

    - Die drei ch.threema.*-Verzeichnisse aus einem TWRP-Backup kopiert
    - Auf dem Smartphone löschen
    - Die Verzeichnisse aus dem Backup einspielen
    - Für alle drei Verzeichnisse mit

    Code
    chown -R $user:$user $verzeichnis

    die richtigen Besitzer setzen
    - Für alle drei Verzeichnisse mit

    Code
    restorecon -Rv $verzeichnis

    die richtigen SELinuxe setzen

    Reboot. Threema weg. Logcat sagt u.a.:

    Zitat

    Skipping packageSetting{66740f ch.threema.app/$user} due to missing metadata
    [...]
    LauncherModel: Invalid package: ComponentInfo{ch.threema.app/ch.threema.app.activities.ComposeMessageActivity}

    Langsam echt nervig. :(

  • Mein ehrlicher Rat:

    Smartphone neu aufsetzen mit LineageOS und alles sauber installieren, solange die ID noch da ist ja nicht alles verloren und danach gibts umso mehr Spaß mit dem neuen Gerät ;)

    Zum Vorgehen beim S2 i9100:

    System-Speicher vergrößern (da LOS größer ist als das also OS) mit dem aktuellen TWRP (wichtig, dass es aktuell ist!). Dort am besten System, Data und Intern (Vorsicht - Dateien extern sichern), sowie Cache und Dalvik wipen (ggf auch die Partitionen reparieren), dann mit dem Lanchon REPIT Skript den Speicher vergrößern.
    Dann die aktuelle LOS (+ ggf. OpenGapps) oder LOS + MicroG Build installieren (ggf. SU für root dazu) und fertig! :)

    Einmal editiert, zuletzt von Anton (17. Dezember 2017 um 19:27)

  • Zitat von "Anton" pid='35070' dateline='1513534368'


    Mein ehrlicher Rat:

    Smartphone neu aufsetzen mit LineageOS und alles sauber installieren, solange die ID noch da ist ja nicht alles verloren und danach gibts umso mehr Spaß mit dem neuen Gerät ;)

    Das habe ich ja auch vor. :)
    Aber meine Daten möchte ich nicht so schnell aufgeben! Ein Android ist ein Linux, und wenn eine App Daten da hinlegen kann, will ich auch in der Lage sein, diese Daten durch eine aktuellere Version auszutauschen.

    Inzwischen habe ich übrigens (mit einigen Verrenkungen) Titanium Backup Pro installiert, aber das findet leider nichts in meinem TWRP. Seufz. :(

  • Zitat von "äpfelgarten" pid='35073' dateline='1513539081'

    Inzwischen habe ich übrigens (mit einigen Verrenkungen) Titanium Backup Pro installiert, aber das findet leider nichts in meinem TWRP. Seufz. :(

    Das war übrigens ein Fehler meinerseits.

  • Neue Erkenntnis: Wenn ich das ganze System auf ein älteres TWRP-Backup zurücksetze, Titanium (pro) installiere und dann damit aus dem neueren TWRP-Backup Threema wiederherstelle, funktioniert es: Die neueren Nachrichten sind da und es verschwindet nicht beim Start.

    Mein Fazit daraus: Es ist im Bootloop-TWRP tatsächlich auch Threema defekt.

  • Hatte auch einen bootloop (Nexus 5 mit stock-Android 6.0.1 - root) und konnte nur noch über die TWRP-recovery auf die Partitionen zugreifen. Also habe ich die daten-Partition als nandroid-backup gesichert.
    Nach der Neuinstallation von jetzt lineageOS nightly 14.1 habe ich mit TitaniumBackup problemlos den Threema-Verlauf wiederhergestellt.

    Leider sind die anhängenden Mediendateien (Bilder, Dokus usw.) nicht vorhanden. Ich vermute, sie werden anderswo/anderswie gespeichert.


    Tip ???

  • Ordner und Inhalte von /data/media/* (also die interne SD) habe ich getrennt gesichert. Die Threema-Verzeichnisse der Sicherung enthalten allerdings keine Dateien. Da ich zuvor die Chat-Anhänge geöffnet hatte, müssten sie ja auch irgendwo gespeichert sein. Wo?