Tengo un teléfono inteligente Samsung Galaxy S2 GT-I9100 con LineageOS y TWRP. Cada semana hago una copia de seguridad con el siguiente comando:
adb backup -f twrp-20170322.ab --twrp boot data system
Opcionalmente, también puedo usar la --compress
opción.
¿Hay alguna forma de extraer el twrp-20170322.ab
archivo de copia de seguridad con las herramientas de línea de comandos estándar de GNU/Linux? También consideraré instalar software adicional si es necesario, pero debe ser gratuito (como en libertad).
Enlaces:
Descubrí que los .ab
archivos generados por TWRP son diferentes de los adb backup
archivos normales, por lo que el desplazamiento es diferente de los .ab
archivos normales. Pude inspeccionar y extraer archivos usando (por ejemplo, para inspeccionar) el siguiente comando:
dd if=backup.ab bs=512 skip=1 | tar ft -
Aparentemente, el encabezado puede ser más largo, pero debe alinearse con los límites de 512 bytes, así que simplemente cambie el skip=
parámetro si no puede encontrarlo al principio.
Tenga en cuenta que el formato de archivo se define en twadbstream.h , si necesita profundizar más en esto.
El problema con el enfoque ingenuo basado en dd es que hay metadatos de vez en cuando en el archivo. Esto da como resultado la corrupción de archivos de cualquier longitud significativa.
Escribí una herramienta de extracción utilizando twadbstream.h (gracias @anarcat) que he usado para recuperar con éxito grandes (~10 GB) copias de seguridad TWRP ADB de sistemas de archivos múltiples. twrpabx
Siempre que no lo hayas protegido con una contraseña:
dd if=$1 bs=24 skip=1 | openssl zlib -d >${1%%.ab}.tar
dd
es el "Duplicador de disco" (también conocido como "destructor de disco" en caso de que confundas sus parámetros con el interruptor if
y of
;)bs=23
aconseja utilizar un tamaño de bloque de 24 bytes, que necesitamos para...skip=1
omita 1 bloque de 24 bytes (el "encabezado de copia de seguridad")openssl
para procesarla y desempaquetarlaA partir de ahí, debes saber tu camino: simplemente "descomprimir" (extraer) lo que quieras.
¿Por qué se usa $1
? Bueno, copié esta línea de ab2tar
, que se incluye con mi pequeña herramienta Adebar que también te puede interesar: crea una buena documentación del dispositivo, scripts de respaldo y más, todo a través de ADB usando nada más que Bash 😇 Así que pon esa línea en un pequeño pequeño script de shell, y llámalo:
ab2tar twrp-20170322.ab
Luego encuentra un twrp-20170322.tar
resultado. Por supuesto, esto requiere openssl
ser instalado en su máquina Linux.
--compress
al crear la copia de seguridad, ¿crea copias de seguridad sin comprimir? En este último caso, intente omitir el zlib
parámetro (o hágalo al revés y especifique --compress
al crear la copia de seguridad;).openssl
). Pero cuando trato de enumerar el contenido del archivo tar con tar -tf twrp-20170320.tar obtengo: tar: esto no parece un archivo tar; tar: saltar al siguiente encabezado; tar: Saliendo con estado de falla debido a errores anteriores--compress
opción con adb
: comprime de manera menos eficiente que xz
. Prefiero ahorrar el mayor espacio posible. Pero eso no está relacionado con mi problema inicial.--compress
allí). De su declaración ( adb backup …
) asumí el mismo formato. Si solo está usando una compresión diferente, debe considerar eso. openssl
es necesario para descifrar la copia de seguridad, por lo que sin eso, no obtiene un archivo .tar
. De sus últimos comentarios, supongo que debe reemplazar zlib
por la parte correspondiente para xz
. Aparte de eso, me quedé sin ideas, lo siento.adb backup
que no está creando una "copia de seguridad ADB" aquí? Eso es bastante confuso.data.ext4.win
con un encabezado de 1536 bytes, pero 'dividido' en bloques de datos. también puede contener múltiples particiones sourceforge.net/p/adbextractor/discussion/general/thread/…
TrojanName
sandro antonucci
TrojanName