def test(): apk_path = "/home/tdoly/com.android.vending_090150.apk" apkf = APK(apk_path) print apkf.cert_text print apkf.file_md5 print apkf.cert_md5 print apkf.file_size print apkf.androidversion print apkf.package print apkf.get_android_manifest_xml() print apkf.get_android_manifest_axml() print apkf.is_valid_APK() print apkf.get_filename() print apkf.get_package() print apkf.get_androidversion_code() print apkf.get_androidversion_name() print apkf.get_max_sdk_version() print apkf.get_min_sdk_version() print apkf.get_target_sdk_version() print apkf.get_libraries() print apkf.get_files() # pip install python-magic print apkf.get_files_types() # print apkf.get_dex() print apkf.get_main_activity() print apkf.get_activities() print apkf.get_services() print apkf.get_receivers() print apkf.get_providers() print apkf.get_permissions()
def test(): apk_path = "wan.ke.ji-V1.5-1500.apk" apkf = APK(apk_path) print apkf.cert_text print apkf.file_md5 print apkf.cert_md5 print apkf.file_size print apkf.androidversion print apkf.package print apkf.get_android_manifest_xml() print apkf.get_android_manifest_axml() print apkf.is_valid_APK() print apkf.get_filename() print apkf.get_package() print apkf.get_androidversion_code() print apkf.get_androidversion_name() print apkf.get_max_sdk_version() print apkf.get_min_sdk_version() print apkf.get_target_sdk_version() print apkf.get_libraries() print apkf.get_files() # pip install python-magic print apkf.get_files_types() # print apkf.get_dex() print apkf.get_main_activity() print apkf.get_activities() print apkf.get_services() print apkf.get_receivers() print apkf.get_providers() print apkf.get_permissions() print apkf.show() apkf.parse_icon(icon_path='.')
def test(): apk_path = "/users/ozgumusy/AndroidStudioProjects/RijksClient/app/app-release.apk" apkf = APK(apk_path) print apkf.cert_text print apkf.file_md5 print apkf.cert_md5 print apkf.file_size print apkf.androidversion print apkf.package print apkf.get_android_manifest_xml() print apkf.get_android_manifest_axml() print apkf.is_valid_APK() print apkf.get_filename() print apkf.get_package() print apkf.get_androidversion_code() print apkf.get_androidversion_name() print apkf.get_max_sdk_version() print apkf.get_min_sdk_version() print apkf.get_target_sdk_version() print apkf.get_libraries() print apkf.get_files() print apkf.get_files_types() #print apkf.get_dex() print apkf.get_main_activity() print apkf.get_activities() print apkf.get_services() print apkf.get_receivers() print apkf.get_providers() print apkf.get_permissions()
def write_to_csv(apk_paths): for file_path in apk_paths: obj = APK(file_path) obj = APK(read(file_path), raw=True) list_of_obtained_permissions = obj.get_permissions() #print(list_of_obtained_permissions) result = [] for permission in list_of_permissions: if permission in list_of_obtained_permissions: result.append(1) else: result.append(0) package_name = obj.get_package() result.append(package_name) package_size = obj.file_size result.append(package_size) result.append(1) with open("./saurabh_dataset.csv", "a") as f: writer = csv.writer(f, dialect='excel') writer.writerow(result)
def test(): apk_path = r"C:\Users\heguofeng\Downloads\com.tencent.mm_6.7.3_liqucn.com.apk" apkf = APK(apk_path) print(apkf.cert_text) print( apkf.file_md5) print( apkf.cert_md5) print( apkf.file_size) print( apkf.androidversion) print( apkf.package) print( apkf.get_android_manifest_xml()) print( apkf.get_android_manifest_axml()) print( apkf.is_valid_APK()) print( apkf.get_filename()) print( apkf.get_package()) print( apkf.get_androidversion_code()) print( apkf.get_androidversion_name()) print( apkf.get_max_sdk_version()) print( apkf.get_min_sdk_version()) print( apkf.get_target_sdk_version()) print( apkf.get_libraries()) print( apkf.get_files()) # pip install python-magic print( apkf.get_files_types()) # print( apkf.get_dex() print( apkf.get_main_activity()) print( apkf.get_activities()) print( apkf.get_services()) print( apkf.get_receivers()) print( apkf.get_providers()) print( apkf.get_permissions())
def analyze(args): access_token = _load_token() if access_token is None: print('Please login to AppetizerIO first') return 1 authorization = 'Bearer ' + access_token apk = APK(args.apk) pkg = apk.get_package() with open('AndroidManifest.json', 'w') as f: f.write( subprocess.check_output(['node', 'apkdump.js', args.apk]).decode('utf-8')) log_zip = pkg + '.log.zip' serialnos = args.serialnos.split(',') DEVICE_LOG = DEVICE_LOG_BASE + pkg + '.log' token = None print('0. harvest and compress device logs') with zipfile.ZipFile(log_zip, 'w') as myzip: myzip.write('AndroidManifest.json') for d in serialnos: subprocess.check_call( ['adb', '-s', d, 'pull', DEVICE_LOG, d + '.log']) if args.clear: subprocess.check_call( ['adb', '-s', d, 'shell', 'rm', DEVICE_LOG]) myzip.write(d + '.log') os.remove('AndroidManifest.json') print('1. request analysis from the server') r = requests.post(API_BASE + '/insight/analyze/qiniu', headers={'Authorization': authorization}, data={'pkgName': pkg}, verify=False) r_json = r.json() print(r_json) if r.status_code != 200: print(r_json) return 1 token = r_json['token'] key = r_json['key'] print('2. upload log files') print('pkg: ' + pkg) print('log file: ' + log_zip) print('uploading......') ret, info = put_file(token, key, log_zip) if (ret is None or 'success' not in ret or ret['success'] != True): print('upload error') return 1 print('3. server analyzing') r_json = None while True: r = requests.get(API_BASE + '/insight/analyze', headers={'Authorization': authorization}, params={'key': key}) r_json = r.json() if r_json['success'] != True: print(r_json) return 1 if r_json['state'] == 'return_upload_auth' or r_json[ 'state'] == 'upload_finish' or r_json[ 'state'] == 'server_download': print('waiting...... server is downloading log') elif r_json['state'] == 'analyzing': print('waiting...... server is analyzing') elif r_json['state'] == 'analyze_success' or r_json[ 'state'] == 'server_upload': print('waiting...... server is uploading the report') elif r_json['state'] == 'server_upload_success': print('server has generated and uploaded the report') break else: print(r_json) print('server fails to analyze the logs') return 1 time.sleep(ANXIETY) downloadURL = r_json['downloadURL'] print(downloadURL) print('4. download report') r = requests.get(downloadURL) if r.status_code != 200: print('download failed') return 1 print('download completed') with open(args.report_path, 'wb') as f: data = bytearray() for chunk in r.iter_content(chunk_size=1024000): data += chunk f.write(gzip.decompress(data)) print('5. cleanup') os.remove(log_zip) for d in serialnos: os.remove(d + '.log') print('All done! Report file stored at: ' + args.report_path) if not args.clear: print( 'Please remember to delete old logs with clearlog command to avoid repeated analysis' )