From c1803dfd5b9137a512bd0ac0b533808d4d8620b2 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sun, 11 Sep 2022 23:11:39 +0100 Subject: Extract more details about the certificate --- karton/android/android.py | 22 ++++++++++++++++++++-- setup.py | 4 +--- tests/test_android.py | 45 ++++++++++++++++++++++++++++++++++++++------- 3 files changed, 59 insertions(+), 12 deletions(-) diff --git a/karton/android/android.py b/karton/android/android.py index 7eb8790..79035e4 100644 --- a/karton/android/android.py +++ b/karton/android/android.py @@ -24,18 +24,36 @@ class Android(Karton): return metadata = { - "package": [a.package], "activities": sorted(a.get_activities()), "main_activity": [a.get_main_activity()], + "package": [a.package.strip()], "permissions": sorted(a.get_permissions()), } + app_name = a.get_app_name().strip() + if app_name: + metadata["app_name"] = [app_name] + if a.is_signed() or a.is_signed_v3(): certs = a.get_certificates() if len(certs): cert = certs[0] sha1_cert = cert.sha1_fingerprint.replace(" ", "") - metadata["certificate"] = [sha1_cert] + cert_validity = cert["tbs_certificate"]["validity"] + not_before_raw = cert_validity["not_before"] + not_before = not_before_raw.native.strftime("%b %-d %X %Y %Z") + not_after_raw = cert_validity["not_after"] + not_after = not_after_raw.native.strftime("%b %-d %X %Y %Z") + metadata.update( + { + "certificate": [sha1_cert], + "certificate_issuer": [cert.issuer.human_friendly], + "certificate_not_after": [not_after], + "certificate_not_before": [not_before], + "certificate_serial": [cert.serial_number], + "certificate_subject": [cert.subject.human_friendly], + } + ) self.send_task( Task( diff --git a/setup.py b/setup.py index 56423ab..7334e05 100644 --- a/setup.py +++ b/setup.py @@ -25,9 +25,7 @@ setup( include_package_data=True, install_requires=open("requirements.txt").read().splitlines(), entry_points={ - 'console_scripts': [ - 'karton-android=karton.android:Android.main' - ], + "console_scripts": ["karton-android=karton.android:Android.main"], }, classifiers=[ "Programming Language :: Python", diff --git a/tests/test_android.py b/tests/test_android.py index fa98426..c299d12 100644 --- a/tests/test_android.py +++ b/tests/test_android.py @@ -23,13 +23,44 @@ class AndroidMagicTestCase(KartonTestCase): }, payload={ "sample": sample, - 'attributes': { - "certificate": ["61ED377E85D386A8DFEE6B864BD85B0BFAA5AF81"], - "main_activity": ["com.example.android.contactmanager..ContactManager"], - "package": ["com.example.android.contactmanager"], - "activities": ["com.example.android.contactmanager..ContactManager", "com.example.android.contactmanager.ContactAdder"], - "permissions": ["android.permission.GET_ACCOUNTS", "android.permission.READ_CONTACTS", "android.permission.WRITE_CONTACTS"], - } + "attributes": { + "certificate": ["61ED377E85D386A8DFEE6B864BD85B0BFAA5AF81"], + "main_activity": [ + "com.example.android.contactmanager..ContactManager" + ], + "package": ["com.example.android.contactmanager"], + "activities": [ + "com.example.android.contactmanager..ContactManager", + "com.example.android.contactmanager.ContactAdder", + ], + "permissions": [ + "android.permission.GET_ACCOUNTS", + "android.permission.READ_CONTACTS", + "android.permission.WRITE_CONTACTS", + ], + "certificate_not_after": ["Jul 17 01:33:46 2035 UTC"], + "certificate_serial": [10623618503190643167], + "certificate_subject": [ + "Email Address: android@android.com," + " Common Name: Android," + " Organizational Unit: Android," + " Organization: Android," + " Locality: Mountain View," + " State/Province: California," + " Country: US" + ], + "certificate_not_before": ["Feb 29 01:33:46 2008 UTC"], + "certificate_issuer": [ + "Email Address: android@android.com," + " Common Name: Android," + " Organizational Unit: Android," + " Organization: Android," + " Locality: Mountain View," + " State/Province: California," + " Country: US" + ], + "app_name": ["Contact Manager"], + }, }, ) task = Task( -- cgit v1.3