我想使用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具有
zlib
,gzip
和tarfile
,似乎它们应该可用。无论如何,如果可以做到,该怎么办?tarfile.open('filename.tar', 'r:')
是否可以用于第二步?我在窗户上,顺便说一句。
最佳答案
如果文件不是太大,无法容纳所有内容,请从标准库中导入以下文件:
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
中,您具有https://docs.python.org/2/library/tarfile.html#tarfile-objects中记录的TarFile
实例,因此您可以例如获取其内容列表,提取一个或多个成员&c。如果备份太大而无法容纳所有这些位,则当然可以将任何或所有中间结果写入磁盘。但是如果大小足够小,则将所有内容保留在内存中应该可以加快执行速度。