# -*- coding: utf-8 -*-
import re
import zipfile
from pathlib import Path

APK = Path(__file__).resolve().parent.parent / "apks" / "maribank_sg_base.apk"
with zipfile.ZipFile(str(APK)) as zf:
    data = b"".join(zf.read(n) for n in zf.namelist() if n.endswith(".dex"))

for needle in [b"dfp is empty", b"getDfp", b"DfpManager", b"DeviceFingerprint"]:
    print("\n===", needle.decode(), "count=", data.count(needle))
    idx = 0
    for _ in range(5):
        idx = data.find(needle, idx)
        if idx < 0:
            break
        ctx = data[max(0, idx - 120) : idx + 200]
        for m in re.finditer(rb"Lcom/[^;\x00]{5,140};", ctx):
            print(" ", m.group().decode()[1:-1].replace("/", "."))
        idx += len(needle)
