112 votos

¿Cómo se puede extraer de una Aplicación de datos desde una copia de seguridad completa realizada a través de "bad copia de seguridad"?

Tengo la copia de seguridad de mi Nexus 7 con adb backup para la copia de seguridad de todos los archivos en una copia de seguridad encriptada. Veo que usted puede restaurar desde una copia de seguridad con adb restore, pero que podrían borrar todos mis datos existentes en el dispositivo.

Exactamente cómo iba yo a sacar de la Aplicación de los datos de este archivo de copia de seguridad cifrados?

112voto

mercutio Puntos 5828

Sólo para tener una referencia de los demás, aquí hay algunos antecedentes sobre el .ab formato de archivo.

El Android De Copia De Seguridad (*.ab) es un archivo comprimido TAR archivo. Está comprimido mediante el DESINFLE algoritmo. En la parte superior de eso, no puede ser AES de cifrado utilizado. Esto se determina al crear la copia de seguridad, si se introduce una contraseña, a continuación, la copia de seguridad es encriptada, lo contrario; no hay cifrado, es solo comprimido.

El ENCABEZADO del archivo es un poco diferente a la de una normal DESINFLAR archivo. Contiene información acerca de la copia de seguridad y se ve como el siguiente:

ANDROID BACKUP
1
1
none

La primera línea es la "Magia" de la línea. La siguiente línea es la versión de la plataforma Android en formato de archivo de Respaldo. La siguiente línea es un valor booleano (true o false, 1 o 0), que indica si el archivo está comprimido. La última línea es el tipo de cifrado. Este ejemplo no es el uso de cifrado. Si hay una contraseña, la línea sería la siguiente "AES-256". Después de eso es el sistema de cifrado. Si no hay ninguna contraseña, a continuación, el DESINFLE "archivo", comienza.

Está comprimido mediante el Java Deflater. Que, desde una perspectiva de los desarrolladores, hace que los problemas si desea utilizar cualquier cosa, además de Java para extraer de ella. No he sido capaz de encontrar nada que puede desinflarse utilizando el mismo algoritmo, aunque todos los que he encontrado (como C#) se supone que deben seguir las "ESPECIFICACIONES".

Con eso dicho, hay un proyecto de código abierto bajo la licencia Apache 2.0, escrito por Nikolay Elenkov que te permitirá extraer el .ab en un archivo tar.

Uso:

java -jar abe.jar unpack <backup.ab> <backup.tar> <password>

Si usted no está seguro de cómo utilizar realmente que (lo que está más allá del alcance de esta respuesta) la próxima versión de Droid Explorer v0.8.8.7 (disponible aquí) le permitirá hacer exactamente esto, y más, directamente desde el Explorador. Usted puede leer más acerca de las características en mi blog (sí, lo sé, enchufe descarado. Yo que cuando cabe la pregunta)

unpack

88voto

Kari Puntos 101

O con un one-liner:

( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 backup.ab ) |  tar xfvz -

30voto

Priyank Bolia Puntos 3825

Una opción más es el uso de bash, cat y gunzip (gzip).

El proceso completo podría ser este (con un sin cifrar copia de seguridad):

  1. copia de seguridad de una aplicación de datos (por ejemplo,"Anular DNS para KitKat"):

    $ adb backup -f net.mx17.overridedns.ab -noapk net.mx17.overridedns
    Now unlock your device and confirm the backup operation.
    
  2. extracto de los datos comprimidos

    $ dd if=net.mx17.overridedns.ab bs=1 skip=24 > compressed-data
    1285+0 records in
    1285+0 records out
    1285 bytes (1,3 kB) copied, 0,00745877 s, 172 kB/s
    
  3. descomprimir el archivo con los datos

    $ printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" \
        | cat - compressed-data | gunzip -c > decompressed-data.tar
    gzip: stdin: unexpected end of file
    
  4. "descomprimir" el archivo tar

    $ tar xf decompressed-data.tar
    

4voto

Izzy Puntos 45544

Otra opción es utilizar el Perl AdbBackupRoutines de este hilo de XDA. Tienen un par de requisitos: Perl obviamente, más libterm-readkey-perl, libcrypt-cbc-perly libcrypt-pbkdf2-perl (si sus copias de seguridad sin cifrar, puede omitir la última dependencia simplemente comentando la línea 103 backupdecrypt.pl , donde se incluye, trabajó muy bien para mí).

El uso es bastante sencillo:

./backupdecrypt.pl [options] <backupfile.ab> <outfile.tar>

La resultante .tar archivo, a continuación, pueden ser investigados como cualquier otro archivo tar. Su estructura es bastante interesante, al menos en un aspecto: no refleja la real caminos donde los archivos se han tomado de (por ejemplo, no /data/data/com.app.name/databases/whatever.db, sino apps/com.app.name/db/whatever.db), lo que indica una aplicación de copia de seguridad en un dispositivo de ROM podría ser restaurado a cualquier otro dispositivo/ROM sin problemas, como adb restore debe averiguar la verdadera rutas de sí mismo.

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: