Skip to main content
 首页 » 编程设计

android之Python:解压android备份

2025年05月04日29softidea

我想使用 python 解压缩 Android 备份文件。

根据 http://nelenkov.blogspot.com/2012/06/unpacking-android-backups.html可以使用

解压缩未加密的 adb 文件
dd if=mybackup.ab bs=24 skip=1|openssl zlib -d > mybackup.tar 

tar xvf mybackup.tar 

这些可以用python完成吗? Python 有zlibgziptarfile,看起来应该可以用。无论如何,如果可以做到,怎么做?

tarfile.open('filename.tar', 'r:') 是否适用于第二步?

顺便说一句,我在 Windows 上。

请您参考如下方法:

如果文件不是太大以至于所有内容都无法轻松放入内存,则在从标准库中导入所需内容后:

with open('mybackup.ab', 'rb') as f: 
    f.seek(24)  # skip 24 bytes 
    data = f.read()  # read the rest 
 
tarstream = zlib.decompress(data) 
tf = tarfile.open(fileobj=io.BytesIO(tarstream)) 

现在在 tf 中,您有一个 TarFile 实例,如 https://docs.python.org/2/library/tarfile.html#tarfile-objects 中所述,因此您可以获取其内容列表、提取一个或多个成员等。

如果备份太大以至于所有这些位都无法轻松地放入内存中,您当然可以将任何或所有中间结果写入磁盘;但如果它足够小,将所有内容都保存在内存中应该会导致执行速度更快。