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)
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")
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"])
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"])
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"