{"adoption": {"forks": 960, "observed_at": "2026-08-28T04:09:17.613780+00:00", "stars": 5407}, "canonical_url": "https://ross.abutalabs.com/products/modlishka", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Modlishka. Reverse Proxy.  ", "domain": ["security", "penetration-testing", "networking"], "enriched": true, "function": ["proxy", "penetration-testing", "security", "http-server"], "health_score": 92, "homepage": null, "language": "Go", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["drk1wi/Modlishka"], "name": "drk1wi/Modlishka", "platform": ["windows", "bsd", "go", "cli"], "pushed_at": "2026-08-14T14:29:51+00:00", "repo": "drk1wi/Modlishka", "stars": 5407, "tags": ["mitm", "reverse-proxy", "phishing-simulation", "2fa-bypass", "red-team", "credential-harvesting", "tls", "linux", "macos"], "topics": ["penetration-testing-tools", "mitm", "reverse-proxy", "security-tools", "educational", "poc"], "urls": [], "use_cases": ["set up a reverse proxy for ethical phishing penetration tests", "demonstrate 2FA bypass weaknesses in security assessments", "wrap legacy websites with TLS", "transparently proxy arbitrary domains over HTTPS", "inject JavaScript payloads into proxied web traffic", "harvest credentials during authorized red team engagements"], "what_it_is": "Modlishka is an open-source penetration testing tool written in Go that acts as a transparent man-in-the-middle reverse proxy. It can proxy multi-domain TLS and non-TLS traffic over a single domain without client certificate installation, and was the first public tool demonstrating 2FA bypass via adversary-in-the-middle techniques.", "when_to_avoid": ["you need a general-purpose production reverse proxy like nginx or traefik", "you lack explicit authorization to test target systems", "you need a simple forward proxy or VPN solution", "your use case is defensive monitoring rather than offensive testing"], "when_to_choose": ["you need a transparent AitM reverse proxy for authorized security testing", "you want to demonstrate 2FA weaknesses to clients or stakeholders", "you need to proxy multi-domain TLS traffic through a single domain", "you want a stateless proxy that scales via DNS load balancing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/modlishka", "repo": "drk1wi/Modlishka", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "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:09:17.613780+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:17.613780+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:57:46.843079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f09243e4b6b7742db64542a603f987d146439839ffd82e7a4201ba2c6f11e27c", "fetched_at": "2026-08-28T04:09:17.613780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/drk1wi/Modlishka"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2814, "days_push": 19, "days_rel": 472, "gap_med": null, "n_releases_24m": 1}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}