Hoy vamos a ver cómo extraer una base de datos de SQLite de una aplicación de Android para copiarla a nuestra computadora y poder analizarla haciendo consultas; evitando pasar por la API de Java.
No vamos a necesitar root, simplemente tener el ejecutable de adb
que se instala cuando comenzamos a programar en Android.
Por favor mira este tutorial en donde se ve cómo agregar adb.exe a la variable PATH de Windows.
ls
, cd
, cp
)Conecta tu dispositivo por cable o a través del Wi-Fi como se ve en este post. Ahora es necesario conocer su nombre, para ello ejecuta:
adb devices
Eso dará una lista de dispositivos. Fíjate en el nombre del dispositivo.
Ahora ejecuta:
adb -s [NOMBRE DISPOSITIVO] shell
En mi caso:
adb -s 192.168.1.9:5555 shell
Nota: en mi caso aparece la IP porque lo conecté por Wi-Fi; en tu caso va a variar. Eso te llevará a una shell:
En este momento ya estamos en nuestro dispositivo (I’m in, dijeran los juankers). Vamos a ejecutar:
run-as id.de.tu.paquete
Debido a que estoy probando la app de control de gastos el id es me.parzibyte.administrate así que:
run-as me.parzibyte.administrate
El comando cambiará el prompt.
Como estamos en una terminal de Linux de Android vamos a entrar al directorio databases, si no lo encuentras ejecuta ls
. El punto es entrar al mismo con:
cd databases
Ahí verás todas las bases de datos que hayas creado. A mí me interesa la que se llama “administrate“.
La base de datos de SQLite es un archivo; por lo que basta con copiarlo. Para ello copiamos la base de datos al almacenamiento externo, en mi caso es /storage/emulated/0
así que:
cp administrate /storage/emulated/0/administrate_extraida
Fíjate que la estoy copiando con el nombre “administrate_extraida
“; esto no es estrictamente necesario pero es algo que recomiendo. Eso habrá copiado el archivo a nuestro almacenamiento externo en donde ya podemos tocar a la base de datos.
Ahora falta copiar el archivo desde Android a nuestra computadora con Windows. Si quieres, hazlo como cuando copias un archivo normal; o puedes hacerlo con adb
. Para ello sal de la terminal con:
exit
exit
Es decir, escribe exit dos veces para salir completamente. Después ejecuta:
adb pull ruta_bd ruta_de_tu_pc
Como guardamos la base de datos en /storage/emulated/0 entonces la copiamos de ahí. el segundo argumento es el destino.
Yo haré esto:
adb pull /storage/emulated/0/administrate_extraida C:\Users\usuario\Desktop\administrate_extraida
Esperamos un momento y el archivo se copiará. Recuerda que el segundo argumento es la ruta de destino, puedes cambiarla.
Ahora puedes explorar tu base de datos con lo que tú quieras. Es muy probable que tengas el ejecutable de sqlite3 si seguiste mis tutoriales anteriores, pero si no, puedes descargar una herramienta para visualizar bases de datos de SQLite o usar un pequeño script de Python.
Así se ve la base de datos que he extraído de Android:
Un poco complejo, pero lo hemos logrado. Con esto podrías explorar cualquier base de datos de cualquier paquete; pues estás en modo desarrollador.
No veo que atente contra la seguridad de nadie, puesto que se debe habilitar la depuración. Además, la mayoría de apps importantes y enfocadas en la comunicación encriptan las bases de datos.
Por cierto, esto fue para Windows pero sería lo mismo para Linux, pues el ejecutable de adb es multiplataforma.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.
Ver comentarios
Excelente aporte!, muchas gracias por la explicación