apk包资源分析
这两天研究了一下androguard,根据项目实际情况写了这个脚本,apk包解压和归类的功能脚本完成了,接下里继续完善#!/usr/bin/env python# -*- coding: utf-8 -*- import os,sys,time,shutil,zipfilefrom os.path import getsizefilename_apk = sys.arg
·
这两天研究了一下androguard,根据项目实际情况写了这个脚本,apk包解压和归类的功能脚本完成了,后面加入历史版本资源对比的功能,作为Jenkins中作为CI的一项,
#!/usr/bin/env python
# -*- coding: utf-8 -*-import os,sys,time,shutil,zipfile
from os.path import getsize
filename_apk = sys.argv[1] #要解压的文件,将apk拖入命令行,如: #./unzipapk.py DiDi_one_driver_d_build_166.apk
print(filename_apk)
filename =os.path.splitext(filename_apk)[0]+'.zip'
shutil.copyfile(filename_apk,filename)
filedir = 'data2/' #解压后放入的目录
currentDir = os.getcwd()
resultDir = os.path.join(currentDir, filedir)
r = zipfile.is_zipfile(filename)
if r:
starttime = time.time()
fz = zipfile.ZipFile(filename,'r')
src_picture = 'src_picture' #新建存储图片资源的文件夹
new_dir_pic = os.path.join(currentDir, src_picture)
os.makedirs(new_dir_pic)
src_audio = 'src_audio' #新建存储音频资源的文件夹
new_dir_audio = os.path.join(currentDir, src_audio)
os.makedirs(new_dir_audio)
src_so = 'src_so' #新建存储os文件的文件夹
new_dir_so = os.path.join(currentDir, src_so)
os.makedirs(new_dir_so)
for file in fz.namelist(): #开始遍历
fz.extract(file,resultDir)
var = os.path.splitext(file)[1] #获取file文件的后缀名
if var=='.png' or var=='.PNG' or var=='.jpg'or var=='.JPG'or var=='.gif'or var=='.GIF': #图片文件
file_absolute_path = os.path.join(resultDir, file) #file解压到解压目录后的绝对路径
file_size = getsize(file_absolute_path) #file文件的大小
# print('Picture Resources:')
# print(file_absolute_path)
fz.extract(file,new_dir_pic) #图片资源单独存储在src_picture文件夹
elif var=='.m4a' or var=='.wav' or var=='.mid'or var=='.ogg'or var=='.mp3'or var=='.mp4': #音频文件
file_absolute_path = os.path.join(resultDir, file) #file解压到解压目录后的绝对路径
file_size = getsize(file_absolute_path) #file文件的大小
fz.extract(file,new_dir_audio) #图片资源单独存储在src_audio文件夹
elif var=='.so': #库文件
file_absolute_path = os.path.join(resultDir, file) #file解压到解压目录后的绝对路径
file_size = getsize(file_absolute_path) #file文件的大小
fz.extract(file,new_dir_so) #图片资源单独存储在src_os文件夹
endtime = time.time()
times = endtime - starttime
print('###unzip and classification with',times,'s###')
print('###unzip success!###')
os.remove(filename)
else:
print('This file is not zip file')
更多推荐
已为社区贡献1条内容
所有评论(0)