KB » Computer » Problemen met je Android telefoon

Problemen met je Android telefoon

    Tweeten

Introductie


Rooten van je telefoon

Introductie

Om *alles* met je telefoon te kunnen doen heb je 'root access' nodig. Op Unix/Linux-computers is root de naam van de supergebruiker, vergelijkbaar met Administrator onder Windows.

Net als het in Windows de gebruiker steeds moeilijker wordt gemaakt om "domme" dingen te doen door de privileges van gewone gebruikers steeds verder in te perken, heeft men dat ook in Android gedaan.

Maar natuurlijk zullen er altijd slimme hackers blijven die het voor elkaar krijgen om ook in de nieuwste versies van Android toegang tot root te krijgen.

Wat moet je doen?

Dus, als je het risico wilt nemen om je telefoon om zeep te helpen, dan kan je bv. beginnen op deze pagina, waar een hele lijst van telefoons genoemd wordt.

Er zijn nl. talloze versies van Android in omloop, en in theorie zou het overal net iets anders kunnen werken.

Handleiding voor de Samsung Galaxy S II (mijn telefoon, 1-12-2014) staat hier.


Het nut van Android Debug Bridge, en installeren ervan

Introductie

ADB is onderdeel van de Google Android System Development Kit (SDK).

Na het installeren ervan (onder Windows), kan je via een USB-kabel vanaf de commandoregel een hoop dingen doen met je telefoon, zoals er bestanden naartoe en vanaf kopiëren, apps installeren en deïnstalleren, etc.

Het installatieproces wordt o.a. op de site van How-to-geek beschreven (maar klopte niet met waar ik tegenaan liep, zie onder).

Installatie

JDK

Als eerste moet je op je PC de 32-bits versie van de Java Development Kit installeren (ook als je een 64-bits versie van Windows draait). Deze versie (Windows x86!!) is hier te downloaden.

Op sommige PC's zal de Java Runtime Environment (JRE) al aanwezig zijn, maar dat is niet voldoende.

Android SDK

Het 2e te installeren product (volgens de Engelse site) is de Android System Development Kit. Ik heb echter gemerkt dat het voldoende is om het bestand te downloaden en te ontzippen.

Je kan het pakket hier downloaden.

Ik heb ook in dit geval maar een 32-bits versie genomen, hoewel ik een 64-bits PC heb.

Android SDK Platform-tools

Stel dat je ontzipt naar de map c:\adk, dan staan daarna de platform tools in C:\adk\adt-bundle-windows-x86-20140702\sdk\platform-tools

Als het goed is moet je een bestand zien met de naam adb.exe

Debugging aanzetten

Zet op je telefoon USB debugging aan, via Settings - System - Developer options

Test of ADB werkt

Sluit je telefoon op de PC aan (met USB-kabel).

Ga vanaf de commandoregel naar de map platform-tools

(Op de commandoregel kan je met het commando cd \ naar de hoofdmap van de schijf gaan, met het commando schijfletter: naar een andere schijf, en met cd mapnaam naar een dieper gelegen map.
Je kan jezelf tikwerk besparen door deel-van-mapnaam in te tikken, en dan een 1 of meer keer spatie tot de goede naam op je scherm staat.
Als je in de hoofdmap van schijf C: staat, en je tikt in cd wi en dan 1 of meer keer spatie, dan komt er vanzelf cd windows te staan.)

Tik dan in: adb devices

Als je niets ziet, moet je nog drivers installeren.

USB driver installeren

Je kan eerst proberen de Google USB driver te installeren.

Start SDK Manager vanuit de map waarin ook de platform-tools zitten.

Vink onder Extras Google USB Driver aan (haal alle andere vinkjes weg), en klik op Install

Het kan ook zijn dat de fabrikant van je telefoon een driver heeft.

Gebruik van ADB

Een complete beschrijving van het gebruik van ADB is hier te vinden.

Shell commando's

App commando's

File commando's

Log commando's


Toegang tot beveiligde mappen zonder root

Introductie

Als je met een tool als SD Maid (een soort Verkenner (Explorer) voor de telefoon) door de mappen van je telefoon gaat, zal je merken dat je tot sommige ervan geen toegang hebt.

Een voorbeeld is de map /data/data

Nou kan je je telefoon rooten (waarmee je 'root access' krijgt, en dus *alles* kan), maar fabrikanten vinden dat minder leuk. En jij misschien ook, als je je telefoon ermee om zeep helpt.

Dus: hoe kan je bij die mappen komen zonder te rooten? 1 ding lijkt zeker te zijn: je hebt sowieso Android Debug Bridge nodig.

Adb backup

Met deze methode lijk je alle bestanden van apps van de telefoon af te kunnen krijgen.

Maak een backup van de data van een app door op de commandoregel (in de map waar adb staat) in te tikken:
adb backup -f lokale-filenaam -apk app-naam

Kijk dan op je telefoon, want je moet daar een bevestiging geven. Je kan ook een code opgeven, maar doe dat niet!!! Dat maakt de rest alleen maar veel moeilijker.

Voor WhatsApp (app-naam = com.whatsapp) heb ik gemerkt dat dat de backup ook de file key en de onversleutelde database bevat. Normaal gesproken kan je deze bestanden niet benaderen.

Inhoud uit backup halen

Een probleempje is nog wel dat de backup in een zeer obscuur formaat (Android backup = .ab) is. Het is een gecomprimeerde vorm van een .TAR-bestand, wat op zich ook al weer een gecomprimeerd bestand is. De file wordt gemaakt met het DEFLATE-algoritme, maar dan nog weer net iets anders.

Er is een open source tool om de .TAR-file uit de backup te halen. Android Backup Extractor is hier te downloaden. Je hoeft het bestand alleen maar uit te pakken.

Zorg ervoor dat (de map van) java.exe in je pad zit. Die map zal waarschijnlijk ongeveer zo heten: C:\Program Files (x86)\Java\jreversie\bin

Het is het handigste om de backup file in dezelfde map te zetten als in de map van Android Backup Extractor. Ga dan op de commandoregel naar die map toe.

Voer het volgende commando uit:
java -jar abe.jar unpack <backup.ab> <backup.tar> [password]

Het password is hetzelfde als je evt. (maar hopelijk niet) op de telefoon hebt gebruikt bij het maken van de backup.

Ik ga er van uit dat het invoerbestand (de backup) backup.ab heette, dan heb je achteraf een bestand backup.tar

Elk fatsoenlijk compressieprogramma kan .TAR-files aan, dus met bv. 7Zip kan je de inhoud uit backup.tar halen.

Run-as

Deze methode werkt alleen voor apps waarbij de debug-vlag aanstaat. Zie de beschrijving hier.

Als je interactief wilt werken tik je de volgende commando's in:

run-as com.your.package shell@android:/data/data/com.your.package $ ls cache databases lib shared_prefs rm databases/mydatabase.db

Je zit dan in de map met data voor de app.

Je kan ook de volgende 2 commando's uitvoeren:

run-as com.your.package ls -l /data/data/com.your.package run-as com.your.package rm /data/data/com.your.package/databases/mydatabase.db



Gespreksgeschiedenis WhatsApp is beschadigd

Het probleem

Iemand die ik ken kreeg de volgende melding:
Uw gespreksgeschiedenis is beschadigd.
Wilt u uw gespreksgeschiedenis herstellen?

De Engelse variant van deze boodschap is:
Error: your message history is corrupted.
Would you like to restore backup

Als onderstaand verhaal niet duidelijk is, zie dan evt. deze pagina.

De WhatsApp database

De database is een sqlite3 database, en is zowel versleuteld als onversleuteld opgeslagen op je telefoon.

De onversleutelde vorm staat in een niet toegankelijke map:
/data/data/com.whatsapp/databases/msgstore.db

De versleutelde vorm is toegankelijk, en staat in
/sdcard/WhatsApp/Databases/msgstore.db.crypt7

De gegevens van de telefoon naar je computer halen

Installeer ADB op je PC.

Maak een backup van de data van WhatsApp, door op de commandoregel (in de goede map) in te tikken:
adb backup -f lokale-filenaam -apk com.whatsapp

Een voorbeeld zou zijn: adb backup -f c:\whatsapp.ab -apk com.whatsapp

Kijk nu op je telefoon, want je moet daar een bevestiging geven. Je kan ook een code opgeven, maar doe dat niet!!! Dat maakt de rest alleen maar veel moeilijker.

De WhatsApp-gegevens bekijken

Haal de inhoud uit de Android backup file.

In principe heb je nu de onversleutelde database, msgstore.db, en kan je die met WhatsApp Viewer bekijken.

De persoon die ik probeerde te helpen had wel de versleutelde database veiliggesteld, maar daarna WhatsApp geinitialiseerd.

In dat geval moet je de file key uit de backup (in de map f) en het bestand msgstore.db.crypt7 gebruiken om de versleutelde database in een onversleutelde om te zetten.

Ook dat kan met WhatsApp Viewer.

Als de WhatsApp database corrupt is zou het kunnen zijn dat WhatsApp Viewer en ook DB Browser for SQLite hem niet kunnen benaderen.

In dat geval kan je deze methode via Linux proberen.

WhatsApp database terugzetten naar telefooon

Ik kan me niet voorstellen dat je dat zou willen, want met de viewer is het veel gemakkelijker je chats te bekijken dan op de telefoon. Maar wie ben ik...

Je hebt op de computer een bestand met een onversleutelde WhatsApp database. Zo niet, zorg dan eerst dat je die krijgt.

Deïnstalleer WhatsApp van je telefoon.

Verander de naam van de onversleutelde database in msgstore.db, en kopiëer hem weer naar je telefoon in de map /sdcard/WhatsApp/Databases/

Installeer dan WhatsApp opnieuw.

WhatsApp Viewer 1.6

Dit programma is gratis en hoef je niet te installeren.

Je kan hiermee de inhoud van de WhatsApp database bekijken, maar ook de versleutelde variant decrypten (als je tenminste ook de file key hebt).

Download WhatsApp Viewer van Andreas Mausch. Je hoeft de file alleen uit te pakken.

WhatsApp-gegevens bekijken

Klik in het programma op File - Open

Je geeft in het bovenste vak de naam van de onversleutelde database, en in het onderste vak je Google account-naam. Dat is gewoon het stuk voor @gmail.com

Je WhatsApp-geschiedenis is nu gesplitst in een aantal bestanden (de lijst die je links ziet), en rechts kan je de inhoud ervan bekijken.

Het oudste bestand staat onderaan, en binnen de bestanden staan de berichten van boven naar beneden in chronologische volgorde, en de verschillende chats zijn met dunne lijntjes van elkaar gescheiden.

WhatsApp database decrypten

Je klikt op File - Decrypt .crypt7

Je moet nu de locaties van de versleutelde database en de key file opgeven. Als uitvoer krijg je dan een onversleuteld bestand msgstore.decrypted.db

Het benaderen van de WhatsApp gegevens als sqlite3 database met DB Browser for SQLite 3.4.0

Het bekijken met deze tool is veel minder handig dan met WhatsApp Viewer, maar je kan er ook andere nuttige dingen mee.

Stel dat een sqlite3-file corrupt zou zijn, en deze tool kan hem nog wel lezen, dan zou je alle gegevens kunnen exporteren en weer importeren in een nieuwe database. Ik zou verwachten dat de corruptie dan weg moet zijn.

De tool is hier te downloaden, en moet geïnstalleerd worden.

Om de msgstore.db database file van WhatsApp te kunnen benaderen klik je op File - Open Database, en ga je naar de locatie van de file toe.

Daarna klik je op het tabblad Browse Data, en selecteer je achter Table bv. messages

Onder de kolom data zie je dan de inhoud van de boodschappen.

Exporteren van de hele database kan met File - Export - Database to SQL file

Corrupte db decrypten

Deze stappen moeten in Linux.

Als het goed is heb je de file key en de file msgstore.db.crypt7

Haal de 256-bit AES-sleutel uit de key file:
hexdump -e '2/1 "%02x"' key | cut -b 253-316 > aes.txt

Haal de initialization vector uit de key file:
hexdump -e '2/1 "%02x"' key | cut -b 221-252 > iv.txt

Strip de header van de crypt7 file:
dd if=msgstore.db.crypt7 of=msgstore.db.crypt7.nohdr ibs=67 skip=1

Extraheer een onversleutelde versie uit de crypt7 file:
openssl enc -aes-256-cbc -d -nosalt -nopad -bufsize 16384 -in msgstore.db.crypt7.nohdr -K $(cat aes.txt) -iv $(cat iv.txt) > msgstore.db

Je zou nu een onversleutelde file msgstore.db moeten hebben.

Je zou kunnen proberen of de database nu met WhatsApp Viewer is te benaderen.

Zo niet, ga dan door met het exporteren en importeren van de gegevens (nog steeds onder Linux).

Exporteren en importeren van de db

Zodra je het bestand msgstore.db ergens in een Linux-omgeving hebt staan, haal je met het volgende commando de inhoud eruit:
echo .dump | sqlite3.exe msgstore.db > Temp.sql

De database staat nu in een andere vorm in de file Temp.sql

Nu maak je een nieuwe db aan die geschikt is voor WhatsApp, dus in sqlite3-formaat:
echo .quit | sqlite3.exe -init Temp.sql msgstore_new.db

Je hebt nu een onversleuteld bestand met de naam msgstore_new.db


Niet voldoende geheugenruimte over om bv. apps te updaten

De meest voor de hand liggende manier om ruimte te maken is apps naar de SD-kaart te verhuizen.

Herstart

Sommige mensen laten hun telefoon *altijd* (of in elk geval heeeeel lang) aan staan.

In dat geval kan het nuttig zijn om je telefoon te herstarten (echt uit en weer aan).

Verwijder cached data

Doe dat door in de instellingen te gaan naar Storage.

Tik vervolgens op Internal Storage

Je komt dan op een scherm waar o.a. de grootte van Cached data berekend wordt (kan even duren). Bij mij was dat ca. 0,5 GB.

Tik op Cached data, en daarna op Delete. Je wint dan die ruimte terug.

Installeer een schoonmaak-app


Batterij te snel leeg en/of telefoon wordt warm

Ik heb deze situatie meegemaakt met de Samsung Galaxy S5.

Toen ik de telefoon een paar maanden eerder kocht, kon ik makkelijk 1 etmaal mee zonder de batterij op te laden.

Vandaag (30-4-2015) had ik de telefoon om 12 uur opgeladen, en zou hij volgens de voorspelling leeg zijn om 19 uur 's avonds. Dat gaat wel heel hard.

Die voorspelling kan je als volgt bekijken, en eronder zie je ook welke programma's de meeste stroom slurpen.

In mijn geval was dat mm-qcamera-daemon. Dit programma had anderhalf uur na het opladen al 3% van de batterij verbruikt, terwijl ik (kijkend naar de naam van het programma) helemaal niets met een camera had gedaan.

Ik blijk niet de enige te zijn met dit probleem. Zie bv. deze thread op een forum.


Whatsapp Xtract: Backup Messages Extractor / Database Analyzer / Chat-Backup
Nog een tool om de inhoud van de WhatsApp database te kunnen bekijken. Je hebt er echter wel Python voor nodig.
How do you extract an App's data from a full backup made through “adb backup”?
Een thread op een forum, waarin o.a. duidelijke uitleg wordt gegeven over wat een Android backup is, een verwijzing naar de tool Android Backup Extractor en naar de tool Droid Explorer, etc.
How to Decrypt WhatsApp crypt7 Database Messages
Zeer goed verhaal over waar de WhatsApp-bestanden op je telefoon staan, hoe je ze er met Android Debug Bridge vanaf kan krijgen, hoe je ze kan decrypten, etc. Wel allemaal Linux-based.
How to access data/data folder in Android device?
Deze thread was een beetje het startpunt voor mijn zoektocht, en er staat een hoop nuttige info in, o.a. ook over Eclipse. Maar er staat ook een hoop onzin in.
Corrupted data - Can't restore Whatsapp chat history
Deze thread bevat ook veel van het materiaal dat ik in deze pagina heb verwerkt. Duidelijke info over de WhatsApp-bestanden, en hoe je de database m.b.v. Linux-commando's uit de versleutelde file kunt halen en weer terug kunt krijgen op de telefoon.
Pro tip: Fix the dreaded Android USB storage full issue
Een niet zo geweldig artikel van TechRepublic om het probleem van te weinig geheugenruimte op je Android-telefoon op te lossen.
[GUIDE] How to extract, create or edit android adb backups
De naam zegt het al: een gids om met .ADB-bestanden (AnDroid Backup) te kunnen werken.
Hoogste tijd om Android-machtigingen in te trekken (9-4-2018)
Als je Android 6 of hoger hebt kan je heel gemakkelijk eens even kijken of apps niet meer machtigingen hebben dan ze eigenlijk nodig hebben.


    Tweeten

© Henk Dalmolen
Reageer via E-mail (dalmolen@xs4all.nl)

Deze pagina is voor het laatst gewijzigd op: 25-08-18 20:10:19