{"adoption": {"forks": 254, "observed_at": "2026-08-28T04:05:09.333401+00:00", "stars": 1599}, "canonical_url": "https://ross.abutalabs.com/products/andriller", "card": {"archived": false, "artifact_type": "application", "description": "📱 Andriller - is software utility with a collection of forensic tools for smartphones. It performs read-only, forensically sound, non-destructive acquisition from Android devices.", "domain": ["security", "android-tools", "developer-tools", "privacy"], "enriched": true, "function": ["security", "gui", "parser", "cryptography", "data-science"], "health_score": 20, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["den4uk/andriller"], "name": "den4uk/andriller", "platform": ["python", "windows", "cli"], "pushed_at": "2022-06-27T22:00:44+00:00", "repo": "den4uk/andriller", "stars": 1599, "tags": ["android-forensics", "dfir", "adb", "data-extraction", "lockscreen-cracking", "whatsapp-decryption", "digital-forensics", "linux", "macos", "desktop"], "topics": ["forensics", "python", "android"], "urls": [], "use_cases": ["extract data from an android device for forensic analysis", "crack android lockscreen pattern pin or password", "decode whatsapp message databases from a device backup", "parse android backup ab files and nandroid tarballs", "generate forensic reports from android app databases", "acquire data from a non-rooted android phone", "screen capture an android device display"], "what_it_is": "Andriller CE is a Python-based forensic toolkit for Android smartphones that performs read-only, non-destructive data acquisition from devices. It includes lockscreen cracking, app database decoders (including encrypted WhatsApp databases), and generates HTML/Excel forensic reports via a GUI or CLI.", "when_to_avoid": ["you need iOS or Windows Phone acquisition as the primary target", "you need ongoing updates - the latest release is from 2022 and supports Python 3.6-3.10", "you need remote or network-based acquisition rather than USB/ADB", "you want a modern commercial-grade forensic suite with vendor support"], "when_to_choose": ["you need forensically sound, read-only android data acquisition", "you want automated decoding of android app databases into reports", "you need to crack or recover android lockscreen credentials during an investigation", "you work in DFIR and want a free open-source android forensic tool"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/andriller", "repo": "den4uk/andriller", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:09.333401+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:53:13.271494+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c1e95465b420a3c5a198f5da4b6231ee3a2f907d42cdc965ce6376023912b8e5", "fetched_at": "2026-08-28T04:05:09.333401+00:00", "kind": "readme", "missing": false, "url": "https://github.com/den4uk/andriller"}, {"content_hash": "396e5c8da02634f1405c178ee3750f762c28c3f75dd25378b3c3a215c69b4fb5", "fetched_at": "2026-08-29T11:24:28.634790+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/andriller/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2455, "days_push": 1528, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}