diff --git a/android_class_shadowing_scanner/__init__.py b/android_class_shadowing_scanner/__init__.py index f4d02ec..3950da7 100644 --- a/android_class_shadowing_scanner/__init__.py +++ b/android_class_shadowing_scanner/__init__.py @@ -6,6 +6,7 @@ import pprint from argparse import ArgumentParser from pathlib import Path from getpass import getpass +from datetime import datetime from .androzoo import download_apk from .data import ApkData, load_from_directory @@ -110,7 +111,16 @@ def main(): print(f"APK: {str(apk_path)}") with apk_path.open("rb") as file: with zipfile.ZipFile(file) as apk: - entry = analyze(apk, sha256, verbose=args.pprint) + try: + entry = analyze(apk, sha256, verbose=args.pprint) + except Exception as e: + log = f"[{datetime.today().strftime('%Y-%m-%d %H:%M:%S')}] Failed to analyzed {sha256}: {e}, abort" + if logfile: + with logfile.open("a") as file: + file.write(f"{log}\n") + else: + print(log) + continue if args.pprint: pprint.pprint(entry) if not args.output_dir: @@ -162,7 +172,17 @@ def main(): if apk_bin is None: continue with zipfile.ZipFile(io.BytesIO(apk_bin)) as apk: - entry = analyze(apk, sha256, verbose=args.pprint) + try: + entry = analyze(apk, sha256, verbose=args.pprint) + except Exception as e: + log = f"[{datetime.today().strftime('%Y-%m-%d %H:%M:%S')}] Failed to analyzed {sha256}: {e}, abort" + if logfile: + with logfile.open("a") as file: + file.write(f"{log}\n") + else: + print(log) + continue + if args.pprint: pprint.pprint(entry) if not args.output_dir: