{"adoption": {"forks": 82, "observed_at": "2026-08-28T04:03:18.270633+00:00", "stars": 1032}, "canonical_url": "https://ross.abutalabs.com/products/android-unpinner", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Remove Certificate Pinning from APKs", "domain": ["security", "reverse-engineering", "android-tools", "penetration-testing"], "enriched": true, "function": ["reverse-engineering", "security", "cli"], "health_score": 50, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["mitmproxy/android-unpinner"], "name": "mitmproxy/android-unpinner", "platform": ["windows", "cli", "python"], "pushed_at": "2025-10-30T13:00:05+00:00", "repo": "mitmproxy/android-unpinner", "stars": 1032, "tags": ["android", "apk", "certificate-pinning", "frida", "mitm", "mobile-security-testing", "linux", "macos"], "topics": ["android", "reverse-engineering", "mitm", "mitmproxy", "apk", "certificate-pinning", "frida", "jdwp"], "urls": [], "use_cases": ["remove certificate pinning from an apk", "intercept https traffic from an android app without root", "patch an apk to be debuggable and inject frida gadget", "bypass ssl pinning for mobile app testing", "unpin xapk split apks and reinstall via adb", "pull apks from a connected device and unpin them"], "what_it_is": "A Python CLI tool that removes certificate pinning from Android APKs so traffic can be intercepted with mitmproxy, without requiring a rooted device. It patches only AndroidManifest.xml to mark the app debuggable, then injects the Frida Gadget via a custom JDWP implementation over ADB.", "when_to_avoid": ["you need an interactive runtime analysis shell (use objection)", "you cannot run a desktop machine connected during app launch", "you need to hide from root detection on a rooted setup", "you need a general-purpose Frida scripting toolkit"], "when_to_choose": ["you need to MITM an Android app on a non-rooted device", "you want minimal APK modification (classes.dex untouched)", "you want a one-command tool with bundled adb/apksigner dependencies", "you need to handle XAPK split APKs"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/android-unpinner", "repo": "mitmproxy/android-unpinner", "role": "main", "score": 54}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "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:03:18.270633+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:18.270633+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:06:45.509258+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c57621185c69ca31a3b15ea2776b290a2cc5240bc19a3d93167d36a293277214", "fetched_at": "2026-08-28T04:03:18.270633+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mitmproxy/android-unpinner"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 49, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1641, "days_push": 307, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 54, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}