Esempio n. 1
0
def get_intents(path):
    a = apk.APK(path)
    if a.is_valid_APK():
        manifestxml = a.xml["AndroidManifest.xml"]

        intents = []

        for intent in manifestxml.getElementsByTagName("intent-filter"):
            for action in intent.getElementsByTagName("action"):
                intents.append(action.getAttribute("android:name"))
        return intents
Esempio n. 2
0
def get_package_activity_name_androguard(path):
    """Using - Androguard to extract from apk the package name and main activity"""
    package = ""
    main_activity = ""

    try:
        a = apk.APK(path)
        if a.is_valid_APK():
            package = a.get_package()
            if package is None:
                raise CuckooPackageError("NO_PACKAGE_NAME_FOUND:" +
                                         os.path.basename(path))
            andro_main_activity = a.get_main_activity()
            if andro_main_activity is None:
                activities = a.get_activities()
                for activity in activities:
                    activity = activity.lower()
                    if ("main" in activity):
                        log.warning(
                            'main activity from: if "main" in activity')
                        main_activity = activity
                        break
                    elif ("start" in activity):
                        log.warning(
                            'main activity from: if "start" in activity')
                        main_activity = activity
                        break

                if main_activity is "":
                    if activities.__len__() > 0:
                        main_activity = activities[0]
                        log.warning("main activity from: activities[0]")
                    else:
                        raise CuckooPackageError("NO_MAIN_ACTIVITY_FOUND:" +
                                                 os.path.basename(path))
            else:
                main_activity = andro_main_activity
            return package, main_activity
        else:
            raise CuckooPackageError("INVALID_APK:" + os.path.basename(path))

    except (IOError, OSError, BadZipfile) as e:
        raise CuckooPackageError("BAD_APK:" + os.path.basename(path) + "," +
                                 e.message)