{"adoption": {"forks": 1007, "observed_at": "2026-08-28T04:06:08.494470+00:00", "stars": 2040}, "canonical_url": "https://ross.abutalabs.com/products/wszf-androrat", "card": {"archived": false, "artifact_type": "application", "description": "androrat", "domain": ["security", "penetration-testing", "android-tools"], "enriched": true, "function": ["security", "penetration-testing"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["wszf/androrat"], "name": "wszf/androrat", "platform": ["cross-platform"], "pushed_at": "2023-04-12T11:57:05+00:00", "repo": "wszf/androrat", "stars": 2040, "tags": ["remote-access-tool", "rat", "remote-administration", "surveillance", "client-server", "java-swing", "android-client", "android", "desktop"], "topics": [], "urls": [], "use_cases": ["remotely administer an android device from a desktop console", "monitor sms messages and call logs on an android phone remotely", "retrieve gps location of an android device", "demonstrate android remote access trojan behavior in security training", "study how an android rat client/server is implemented in java", "test android device security against remote administration tools", "access android camera and microphone streams remotely for research"], "what_it_is": "AndroRAT is a remote administration tool (RAT) for Android built as a client/server pair: an Android client that runs as a boot-started background service and a Java/Swing desktop server that manages all connected devices. It can remotely retrieve contacts, messages, call logs and GPS location, and can trigger camera captures, microphone audio streaming, SMS sending, calls and other device actions.", "when_to_avoid": ["You need a maintained, licensed tool with modern Android version support - this is an old university-project codebase published without a license", "You need legitimate enterprise mobile device management with auditing, compliance and vendor support", "You intend to use it on devices without the owner's consent - it is surveillance software and misuse is illegal in most jurisdictions"], "when_to_choose": ["You are a security researcher or educator who needs an open-source Android RAT for demonstration or study", "You want to remotely administer Android devices you own from a Java/Swing desktop application", "You want readable Java source code to learn how Android remote access tools and their C2 protocol are built"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/wszf-androrat", "repo": "wszf/androrat", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "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:06:08.494470+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.494470+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:59:10.945529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c949463037b5e4642d9394a326e12c96557d23ed7e2785ee251360338fb29f46", "fetched_at": "2026-08-28T04:06:08.494470+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wszf/androrat"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+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": 4582, "days_push": 1239, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}