def testDifferentStringLocales(self):
        """
        Test if the resolving of different string locales works
        """
        a = APK("examples/tests/a2dp.Vol_137.apk")
        arsc = a.get_android_resources()

        p = arsc.get_packages_names()[0]

        self.assertEqual(
            sorted(["\x00\x00", "da", "de", "el", "fr", "ja", "ru"]),
            sorted(arsc.get_locales(p)))

        item = "SMSDelayText"
        strings = {
            "\x00\x00": "Delay for reading text message",
            "da": "Forsinkelse for læsning af tekst besked",
            "de": "Verzögerung vor dem Lesen einer SMS",
            "el": "Χρονοκαθυστέρηση ανάγνωσης μηνυμάτων SMS",
            "fr": "Délai pour lire un SMS",
            "ja": "テキストメッセージ読み上げの遅延",
            "ru": "Задержка зачитывания SMS",
        }
        for k, v in strings.items():
            e = etree.fromstring(arsc.get_string_resources(p, k))
            self.assertEqual(e.find("string[@name='{}']".format(item)).text, v)
예제 #2
0
 def retrieve_content_from_apk(self):
     a = APK(self.filename)
     package_name = a.get_package()
     resources = a.get_android_resources()  # .get_strings_resources()
     self.client_id = resources.get_string(package_name,
                                           "PSA_API_CLIENT_ID_PROD")[1]
     self.client_secret = resources.get_string(
         package_name, "PSA_API_CLIENT_SECRET_PROD")[1]
     self.host_brandid_prod = resources.get_string(package_name,
                                                   "HOST_BRANDID_PROD")[1]
     self.culture = self.__get_cultures_code(
         a.get_file("res/raw/cultures.json"), self.country_code)
     ## Get Customer id
     self.site_code = BRAND[package_name][
         "brand_code"] + "_" + self.country_code + "_ESP"
     pfx_cert = a.get_file("assets/MWPMYMA1.pfx")
     save_key_to_pem(pfx_cert, b"y5Y2my5B")
예제 #3
0
    def testFallback(self):
        a = APK("examples/tests/com.teleca.jamendo_35.apk")

        # Should use the fallback
        self.assertEqual(a.get_app_name(), "Jamendo")
        res_parser = a.get_android_resources()

        res_id = int(a.get_attribute_value('application', 'label')[1:], 16)

        # Default Mode, no config
        self.assertEqual(len(res_parser.get_res_configs(res_id)), 2)
        # With default config, but fallback
        self.assertEqual(len(res_parser.get_res_configs(res_id, axml.ARSCResTableConfig.default_config())), 1)
        # With default config but no fallback
        self.assertEqual(len(res_parser.get_res_configs(res_id, axml.ARSCResTableConfig.default_config(), fallback=False)), 0)

        # Also test on resolver:
        self.assertListEqual(list(map(itemgetter(1), res_parser.get_resolved_res_configs(res_id))), ["Jamendo", "Jamendo"])
        self.assertListEqual(list(map(itemgetter(1), res_parser.get_resolved_res_configs(res_id, axml.ARSCResTableConfig.default_config()))), ["Jamendo"])
예제 #4
0
    def testFallback(self):
        a = APK("examples/tests/com.teleca.jamendo_35.apk")

        # Should use the fallback
        self.assertEqual(a.get_app_name(), "Jamendo")
        res_parser = a.get_android_resources()

        res_id = int(a.get_element('application', 'label')[1:], 16)

        # Default Mode, no config
        self.assertEqual(len(res_parser.get_res_configs(res_id)), 2)
        # With default config, but fallback
        self.assertEqual(len(res_parser.get_res_configs(res_id, axml.ARSCResTableConfig.default_config())), 1)
        # With default config but no fallback
        self.assertEqual(len(res_parser.get_res_configs(res_id, axml.ARSCResTableConfig.default_config(), fallback=False)), 0)

        # Also test on resolver:
        self.assertListEqual(list(map(itemgetter(1), res_parser.get_resolved_res_configs(res_id))), ["Jamendo", "Jamendo"])
        self.assertListEqual(list(map(itemgetter(1), res_parser.get_resolved_res_configs(res_id, axml.ARSCResTableConfig.default_config()))), ["Jamendo"])
예제 #5
0
                format=serialization.PrivateFormat.TraditionalOpenSSL,
                encryption_algorithm=serialization.NoEncryption()))


current_dir = os.getcwd()
script_dir = dir_path = os.path.dirname(os.path.realpath(__file__))
if sys.version_info < (3, 6):
    raise RuntimeError("This application requires Python 3.6+")

if not argv[1].endswith(".apk"):
    print("No apk given")
    sys.exit(1)
print("APK loading...")
a = APK(argv[1])
package_name = a.get_package()
resources = a.get_android_resources()  # .get_strings_resources()
client_id = resources.get_string(package_name, "PSA_API_CLIENT_ID_PROD")[1]
client_secret = resources.get_string(package_name,
                                     "PSA_API_CLIENT_SECRET_PROD")[1]
HOST_BRANDID_PROD = resources.get_string(package_name, "HOST_BRANDID_PROD")[1]
pfx_cert = a.get_file("assets/MWPMYMA1.pfx")
REMOTE_REFRESH_TOKEN = None
print("APK loaded !")

client_email = input(f"{BRAND[package_name]['app_name']} email: ")
client_password = getpass(f"{BRAND[package_name]['app_name']} password: "******"What is your country code ? (ex: FR, GB, DE, ES...)\n")

## Get Customer id
site_code = BRAND[package_name]["brand_code"] + "_" + country_code + "_ESP"