3 votos

¿Cómo recuperar las pestañas de la ópera abiertas de los datos de respaldo después de que el teléfono se haya bloqueado?

Tenía más de 200 pestañas abiertas en la ópera y normalmente se volvían a abrir, incluso después de reiniciar.

Mi teléfono se rompió, pero tengo una copia de seguridad de la tarjeta SD externa, tarjeta SD interna, y una copia de seguridad de TWRP que es de un tamaño de 23,7 GB, pero no tiene una estructura obviamente accesible.

Siguiendo el consejo de otro QA es posible concatenar el data.ext4.win000 a data.ext4.win009 y acceder a ellos como un archivo de alquitrán (Es una buena idea grabar en cd a donde quieres que se extraiga la copia de seguridad primero):

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

Lo que esto hace es concatenar cada archivo que coincida con el patrón data.ext4.win??? y luego pipetea los archivos concatenados para tarar por Extracción. El - como el nombre del archivo le dice al alquitrán que se extraiga de la ETS. El La opción i ignora los bloques cero que estarán entre cada archivo archivo concatenado.

En este ejemplo utilicé la partición de datos con formato ext4. Cambiar data.ext4 para que coincida con la partición que está extrayendo.

Aunque el comando del alquitrán sale con

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

extrae bastantes archivos antes de que esto ocurra.

Ahora que tengo mi /data directorio de nuevo, tengo acceso a /data/data/com.opera.browser y /data/app/com.opera.browser-2 . ¿Qué hago con ellos para extraer una lista de urls que estaban abiertas?

Estructuras de directorios

data/data/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

data/app/com.opera.browser-2

├───lib
│   ├───arm
│   └───arm64
└───oat
    ├───arm
    └───arm64

data/data/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   

Información del sistema

Creo que estaba en Android 7.1.1
rooteado con Magisk, pero con ROM de stock

Pestañas recientemente cerradas

No es lo que estoy buscando ahora mismo, pero me tropecé con la ubicación de esos, en caso de que un futuro espectador los esté buscando:

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

Enlaces relacionados

Archivos prometedores appstate.bin

data/data/com.opera.browser/files/appstate.bin contiene al menos algunas url y sus títulos, separados por un byte nulo. strings appstate.bin produce más que sólo las urls que estaban abiertas. Y algunos de ellos doblemente o no completamente. Voy a documentar mi diario con este archivo de abajo.

Mirando a data/data/com.opera.browser/files/appstate.bin muestra que es un archivo de datos binarios, pero contiene cadenas legibles. Ábrelo con vim appstate.bin o mira a hexdump -C appstate.bin .

strings appstate.bin | grep -A3 reader_mode_state

ya escupe bastantes urls. Pero aún no es obvio para mí cómo funciona la estructura de ese archivo.

Algunas entradas prefieren la url a l o O o K o ] o no lo hace en absoluto.
En algunas entradas la primera línea después de "reader_mode_state" es la url, en otras es "operaui://página de inicio" y la url sigue más abajo.

Pero lo que destaca es que todas las urls parecen comenzar con http o https - a menos que tuvieras un ftp o algo así abierto, lo que estoy bastante seguro de que no.

strings appstate.bin | grep http

produce 1506 líneas sin embargo. algunos enlaces son duplicados, otros son enlaces que no me importan. por ejemplo, así:

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

Como no me importan los duplicados, podemos aplicar uniq para reducir ese número a 967 urls. Con sort -u bajaríamos a la 833 en su lugar. Pero ambos son todavía demasiados. Me parece que la ópera también almacena la historia de la cuenta ahí.

Quitando algunas líneas obviamente no deseadas se obtienen 523 líneas, así que ~260 urls:

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

Como un número objetivo a considerar:

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

Eso significa - asumiendo que este número es una buena estimación de cuántas pestañas estaban abiertas - que tengo unas treinta urls de más. Creo que puedo vivir con eso.

2voto

lucidbrot Puntos 113

Usar en el nuevo teléfono

  1. Instalar la ópera en el nuevo teléfono
  2. Copia el viejo /data/data/com.opera.browser/files/appstate.bin al nuevo teléfono en ese lugar. (Requiere root).
  3. Ópera Abierta. Todas las pestañas existen (pero tendrán que ser cargadas de nuevo).

Exportar URLs como lista

Esto encontrará un poco más de urls de los que esperaba. Probablemente algo del historial de la cuenta.

data/data/com.opera.browser/files/appstate.bin contiene esos datos. Para obtener una lista de sólo las URL, puedes ejecutar

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 te preocupa el orden de las url, usa uniq en lugar de sort -u .

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X