3 votes

Comment récupérer les onglets d'Opera ouverts à partir des données de sauvegarde après que le téléphone se soit bloqué ?

J'avais plus de 200 onglets ouverts sur Opera et ils se rouvraient normalement, même après un redémarrage.

Mon téléphone s'est cassé, mais j'ai une sauvegarde de la carte SD externe, de la carte SD interne, et une sauvegarde de TWRP qui a une taille de 23,7 Go mais n'a pas de structure manifestement accessible.

Suivant les conseils de un autre AQ il est possible de concaténer les éléments suivants data.ext4.win000 a data.ext4.win009 et d'y accéder sous la forme d'une archive tar (c'est une bonne idée de cd vers l'endroit où vous voulez que la sauvegarde soit extraite d'abord) :

bash cat data.ext4.win??? | tar xvfi -

Ce que cela fait, c'est concaténer chaque fichier correspondant au motif data.ext4.win ??? et ensuite de passer les fichiers concaténés à tar pour l'extraction. Le - dans le nom de fichier indique à tar d'extraire à partir de stdin. L'option i ignore les blocs zéro qui se trouveront entre chaque fichier d'archive concaténé. fichier d'archive concaténé.

Dans cet exemple, j'ai utilisé la partition de données formatée ext4. Changez data.ext4 pour correspondre à la partition que vous extrayez.

Bien que la commande tar se termine par

/data/magisk_backup_bd5d0aa87b96353c78a3bf3a455121d0c767089c/boot.img.gz
tar: Exiting with failure status due to previous errors

il extrait un certain nombre de fichiers avant que cela ne se produise.

Cependant, il est probablement préférable de simplement extraire chacun de ces fichiers séparément sans les concaténer, comme dans le commentaire de alecxs :

remarque : concaténer les fichiers win* est une erreur, ces fichiers sont des archives tarball autonomes.

Maintenant que j'ai mon /data Encore une fois, j'ai accès à /data/data/com.opera.browser y /data/app/com.opera.browser-2 . Que dois-je faire avec eux pour extraire une liste des urls qui ont été ouvertes ?

Structures des répertoires

données/données/com.opera.browser

app_opera
   Application Cache
      Cache
          index-dir
   blob_storage
      9b46839e-470e-4a3a-aa32-e9bc919a25f0
   databases
   databases-incognito
   File System
      026
         t
             Paths
      Origins
   GCM Store
      Encryption
   GPUCache
      index-dir
   IndexedDB
      https_hackernoon.com_0.indexeddb.leveldb
      https_mobile.twitter.com_0.indexeddb.leveldb
      https_www.epicgames.com_0.indexeddb.leveldb
      https_www.independent.co.uk_0.indexeddb.leveldb
   Local Storage
      leveldb
   paks
   Platform Notifications
   saved_pages
   Service Worker
      CacheStorage
         5a6f7e336992bc24678958dc2f1f9b9eec83593b
            281ffb34-a074-4397-a60c-e3dc55aee5e5
               index-dir
            8d34090e-e00a-4f69-9450-bbe1b4b0dc9d
                index-dir
         96f3041722d8f6857b95786ee88fa6a107a86943
            11ccf6ea-9e2a-4648-8c61-a635e1cca5c5
                index-dir
         e60030e2e5440743857a39cacd108634434c91f1
             0045349f-4331-4037-bf9d-e9711e515a08
                index-dir
             4a447cca-f7ca-41f1-9464-e40337cd7ed1
                index-dir
             907b2396-da18-4880-a0df-e3608abac640
                 index-dir
      Database
      ScriptCache
          index-dir
   Session Storage
   shared_proto_db
      metadata
   Sync Data
      LevelDB
   VideoDecodeStats
app_optimized
app_textures
app_webview
   blob_storage
      3f7cc261-4c0e-41cc-947b-2dc712733f49
   GPUCache
      index-dir
   Local Storage
       leveldb
cache
   cache
      index-dir
   Crashpad
      attachments
      completed
      new
      pending
   crash_dumps
   distiller
      index-dir
   okhttp
code_cache
databases
files
   AFRequestCache
   ds
      10
      E
   images
      share
   keychain
      0
   reading
   recently_closed_tabs
no_backup
shared_prefs

données/app/com.opera.browser-2

lib
   arm
   arm64
oat
    arm
    arm64

données/données/com.opera.browser/files/

# 332 files of the nameformat "thumbnail_-214748????"
# 3   files of the nameformat "searchengine_j_<UUID>"
AFRequestCache             
appstate.bin                    
audience_network.dex     
cards_settings.dat           
ds                                  
favorite_25                     
favorite_29                     
favorite_31                     
favorites.json                  
images                           
keychain                        
newsfeedback                 
permissions.bin               
reading                          
recently_closed_tabs       
reksio.ini   

Informations sur le système

Je pense que j'étais sur Android 7.1.1
Enraciné avec Magisk, mais ROM stock

Onglets récemment fermés

Ce n'est pas ce que je recherche en ce moment, mais je suis tombé sur l'endroit où ils se trouvent, au cas où un futur spectateur les chercherait :

data/data/com.opera.browser/files/recently_closed_tabs/state-2147481796

Liens connexes

Dossiers prometteurs appstate.bin

data/data/com.opera.browser/files/appstate.bin contient au moins quelques urls et leurs titres, séparés par un octet nul. strings appstate.bin produit plus que juste les urls qui étaient ouvertes. Et certaines d'entre elles en double ou pas complètement. Je vais documenter mon parcours avec ce fichier ci-dessous.

Regarder data/data/com.opera.browser/files/appstate.bin montre que c'est un fichier de données binaires, mais il contient des chaînes de caractères lisibles. Ouvrez-le avec vim appstate.bin ou regardez hexdump -C appstate.bin .

strings appstate.bin | grep -A3 reader_mode_state

crache déjà pas mal d'urls. Mais il n'est pas encore évident pour moi de savoir comment la structure de ce fichier fonctionne réellement.

Certaines entrées préfixent l'url avec l o O o K o ] ou pas du tout.
Dans certaines entrées, la première ligne après "reader_mode_state" est l'url, dans d'autres c'est "operaui://startpage" et l'url suit plus bas.

Mais ce qui est remarquable, c'est que les urls semblent toutes commencer par http o https - à moins que vous n'ayez ouvert un ftp ou autre, ce qui n'est pas le cas.

strings appstate.bin | grep http

produit 1506 lignes cependant. certains liens sont des doublons, d'autres sont des liens dont je ne me soucie pas. par exemple, comme ceci :

Qhttps://www.linuxuprising.com/2018/06/fix-no-sound-dummy-output-issue-in.html?m=1
Qhttps://www.linuxuprising.com/2018/06/fix-no-sound-dummy-output-issue-in.html?m=1
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com
https://www.linuxuprising.com

Puisque je ne me soucie pas des dulicates, nous pouvons appliquer uniq pour réduire ce nombre à 967 urls. Avec sort -u nous descendrions à 833 à la place. Mais les deux sont encore trop nombreux. Il me semble qu'Opera y stocke également l'historique de l'onglet.

En supprimant certaines lignes manifestement indésirables, on obtient 523 lignes, soit ~260 urls :

 strings appstate.bin | grep -v -e 'operaui://startpage' -e 'Speed Dial' | grep -A2 reader_mode_state | uniq | grep -v 'reader_mode_state'

Comme chiffre cible à considérer :

strings appstate.bin | grep reader_mode_state | wc -l
231

Cela signifie - en supposant que ce nombre cible soit une bonne estimation du nombre d'onglets ouverts - que j'ai une trentaine d'url de trop. Je pense que je peux vivre avec ça.

2voto

lucidbrot Points 293

Utilisation sur un nouveau téléphone

  1. Installer Opera sur le nouveau téléphone
  2. Copiez l'ancien /data/data/com.opera.browser/files/appstate.bin au nouveau téléphone à cet endroit. (Nécessite une racine).
  3. Opéra ouvert. Tous les onglets existent (mais devront être chargés à nouveau).

Exporter les URLs en tant que liste

Cela permettra de trouver un peu plus d'url que ce que vous espériez. Probablement quelque chose provenant de l'historique de l'onglet.

data/data/com.opera.browser/files/appstate.bin contient ces données. Pour obtenir une liste des URLs uniquement, vous pouvez lancer l'opération suivante

strings appstate.bin | \
grep -v -e 'operaui://startpage' -e 'Speed Dial' | \
grep -A2 reader_mode_state | \
sort -u | grep -v 'reader_mode_state' | grep -oh "http.*$"

Si vous vous souciez de l'ordre des urls, utilisez uniq 代わりに sort -u .

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X