add min max target sdk collection

This commit is contained in:
Jean-Marie Mineau 2024-11-14 11:43:42 +01:00
parent cbac24b0f7
commit 0d55851347
3 changed files with 14 additions and 0 deletions

View file

@ -11,6 +11,8 @@ from pathlib import Path
from getpass import getpass
from datetime import datetime
from androguard.core.apk import APK # type: ignore
from .androzoo import download_apk
from .data import ApkData, load_from_directory
@ -146,6 +148,7 @@ def main():
if args.output_dir and (args.output_dir / sha256).exists():
continue
androguard_apk = APK(str(apk_path))
with apk_path.open("rb") as file:
with zipfile.ZipFile(file) as apk:
try:
@ -156,6 +159,7 @@ def main():
json_out = None
entry = analyze(
apk,
androguard_apk,
sha256,
json_out=json_out,
sdk34_dir=args.output_dir_def_sdk34_classes,
@ -220,6 +224,7 @@ def main():
apk_bin = download_apk(sha256, api_key, logfile=logfile)
if apk_bin is None:
continue
androguard_apk = APK(apk_bin)
with zipfile.ZipFile(io.BytesIO(apk_bin)) as apk:
try:
if args.json:
@ -228,6 +233,7 @@ def main():
json_out = None
entry = analyze(
apk,
androguard_apk,
sha256,
json_out=json_out,
sdk34_dir=args.output_dir_def_sdk34_classes,

View file

@ -7,6 +7,7 @@ from pathlib import Path
import androguard.core.dex # type: ignore
from androguard.core.dex import DEX # type: ignore
from androguard.core.apk import APK # type: ignore
# loguru -> logging framework used by androgard
from loguru import logger # type: ignore
@ -198,6 +199,7 @@ def scan_classes(
def analyze(
apk: zipfile.ZipFile,
androguard_apk: APK,
sha256: str,
json_out: dict | None = None,
sdk34_dir: Path | None = None,
@ -283,6 +285,9 @@ def analyze(
has_classes_dex_over_10=any(map(lambda x: x >= 10, dex_numbers)),
has_non_numeric_classes_dex=has_non_numeric_classes_dex,
has_non_consecutive_classes_dex=has_non_consecutive_classes_dex,
min_sdk_version=int(androguard_apk.get_min_sdk_version() or "-1"),
max_sdk_version=int(androguard_apk.get_max_sdk_version() or "-1"),
target_sdk_version=int(androguard_apk.get_target_sdk_version() or "-1"),
)
if json_out is not None:
json_out["entry"] = asdict(entry)

View file

@ -29,6 +29,9 @@ class ApkData:
has_classes_dex_over_10: bool
has_non_numeric_classes_dex: bool
has_non_consecutive_classes_dex: bool
min_sdk_version: int = -1
max_sdk_version: int = -1
target_sdk_version: int = -1
year: int = -1
vt_detection: int = -1