示例#1
0
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()
示例#2
0
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='.')
示例#3
0
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()
示例#4
0
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)
示例#5
0
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())
示例#6
0
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'
        )