def extract_dex(file_path): start_time = time.time() logging.warning('{} is processing...'.format(file_path)) a, d, dx = AnalyzeAPK( file_path) # type: (APK, list[DalvikVMFormat], Analysis) dex = list(a.get_all_dex())[0] end_time = time.time() logging.warning('{} cost {}s'.format(file_path, format(end_time - start_time, '.2f'))) return dex
'urls': get_urls(apk), } # Certificate if len(apk.get_certificates()) > 0: cert = apk.get_certificates()[0] res['certificate']['sha1'] = cert.sha1_fingerprint.replace(' ', '') res['certificate']['serial'] = '{:X}'.format(cert.serial_number) res['certificate']['issuerDN'] = convert_x509_name(cert.issuer) res['certificate']['subjectDN'] = convert_x509_name(cert.subject) res['certificate']['not_before'] = cert['tbs_certificate']['validity'][ 'not_before'].native.strftime('%b %-d %X %Y %Z') res['certificate']['not_after'] = cert['tbs_certificate']['validity'][ 'not_after'].native.strftime('%b %-d %X %Y %Z') # Dexes dex_names = list(apk.get_dex_names()) dex_values = list(apk.get_all_dex()) for dex in range(len(dex_names)): m = hashlib.sha256() m.update(dex_values[dex]) res['dexes'][dex_names[dex][:-4]] = { 'sha256': m.hexdigest(), 'ssdeep': ssdeep.hash(dex_values[dex]) } res['functionalities'] = find_functionalities(dexes) print(json.dumps(res, indent=4, sort_keys=True))