How to extract or unpack an .ab file (Android Backup file) [closed]
I am running an android 4.0.3 device, and I want to extract the back up file created by :
adb backup -f ~/data.ab -noapk app.package.name
The above line works inside the CMD (windows) and I am able to get the data.ab file inside the '~' directory.
What I can't do is extact that file using CMD . I tried the below two methods.
dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -
dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -
I get the below error
I tried extracting it via CYGWIN, however, I failed too.
Where should I do the extraction ? In which directory should my command prompt be ? Any insights ?
Solution 1:
As per https://android.stackexchange.com/a/78183/239063 you can run a one line command in Linux to add in an appropriate tar header to extract it.
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 backup.ab ) | tar xfvz -
Replace backup.ab with the path to your file.
Solution 2:
I have had to unpack a .ab
-file, too and found this post while looking for an answer. My suggested solution is Android Backup Extractor, a free Java tool for Windows, Linux and Mac OS.
Make sure to take a look at the README, if you encounter a problem. You might have to download further files, if your .ab
-file is password-protected.
Usage:java -jar abe.jar [-debug] [-useenv=yourenv] unpack <backup.ab> <backup.tar> [password]
Example:
Let's say, you've got a file test.ab
, which is not password-protected, you're using Windows and want the resulting .tar
-Archive to be called test.tar
. Then your command should be:
java.exe -jar abe.jar unpack test.ab test.tar ""