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
-
¿Cómo puedo exportar todas mis pestañas abiertas de Firefox a un archivo de texto? se plantea hacerlo en un teléfono móvil, pero también señala dónde se encuentra el archivo. El archivo relevante se llama
sessionstore.js
.
Eso no parece útil para la ópera.find
para "sesión" sólo encuentrashared_prefs/sessionrestore.xml
que no contiene nada útil para mis propósitos. -
¿Cómo puedo exportar la lista de pestañas de Chrome abiertas?
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.