6 - Copiar base de datos de dispositivo a PC con adb pull
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 vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.
Ver comentarios
Excelente aporte!, muchas gracias por la explicación