{"adoption": {"forks": 179, "observed_at": "2026-08-28T04:04:33.768840+00:00", "stars": 1379}, "canonical_url": "https://ross.abutalabs.com/products/trevorspray", "card": {"archived": false, "artifact_type": "cli-tool", "description": "TREVORspray is a modular password sprayer with threading, clever proxying, loot modules, and more!", "domain": ["security", "penetration-testing"], "enriched": true, "function": ["security", "penetration-testing", "cli", "http-client"], "health_score": 70, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["blacklanternsecurity/TREVORspray"], "name": "blacklanternsecurity/TREVORspray", "platform": ["python", "cli", "windows", "cross-platform"], "pushed_at": "2026-05-21T23:45:37+00:00", "repo": "blacklanternsecurity/TREVORspray", "stars": 1379, "tags": ["password-spraying", "credential-stuffing", "office365", "oauth", "proxy-rotation", "red-team", "mfa-bypass", "user-enumeration", "linux", "macos"], "topics": ["password", "spraying", "security", "hacking", "microsoft", "passwords", "office", "365", "exchange", "oauth", "autodiscover", "email", "socks", "proxy", "python", "spray", "trevor"], "urls": [], "use_cases": ["spray passwords against office 365 accounts", "test for weak passwords across a user list", "rotate source IPs through ssh proxies while spraying", "enumerate valid users in an azure tenant", "check if accounts have mfa enabled or are locked", "bypass o365 mfa via imap or smtp", "recon a domain's mx records and federation config"], "what_it_is": "TREVORspray is a modular password spraying tool with threading, SSH/subnet proxy rotation, and loot modules targeting identity providers like Office 365, ADFS, OWA, Okta, and Cisco AnyConnect. It also performs domain recon and user enumeration, and can attempt MFA bypass via legacy protocols like IMAP and SMTP.", "when_to_avoid": ["you need a general-purpose brute-forcer for arbitrary web login forms", "you lack authorization to test the target systems", "you need a GUI-based credential testing tool", "the target uses an identity provider without a supported module and you cannot write one"], "when_to_choose": ["you need a threaded password sprayer with proxy rotation for cloud identity providers", "you want automatic resume of interrupted sprays and lockout-delay handling", "you need recon and user enumeration alongside credential spraying", "you want to test legacy protocol MFA bypasses on compromised accounts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/trevorspray", "repo": "blacklanternsecurity/TREVORspray", "role": "main", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/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:04:33.768840+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:33.768840+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:40:18.395624+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6e8cf5939de78c43843ab4a7c29ccfab5cde712b771718b62f547cc47658dd57", "fetched_at": "2026-08-28T04:04:33.768840+00:00", "kind": "readme", "missing": false, "url": "https://github.com/blacklanternsecurity/TREVORspray"}, {"content_hash": "7ae80db539a2883fb87539165d828c669d513cec8e7fe8e516a52a29e35ca238", "fetched_at": "2026-08-29T11:56:19.449921+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/trevorspray/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 83, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2187, "days_push": 104, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 70, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}