{"adoption": {"forks": 451, "observed_at": "2026-08-28T04:06:25.213408+00:00", "stars": 2196}, "canonical_url": "https://ross.abutalabs.com/products/reconnoitre", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A security tool for multithreaded information gathering and service enumeration whilst building directory structures to store results, along with writing out recommendations for further testing.", "domain": ["security", "penetration-testing", "networking"], "enriched": true, "function": ["security", "penetration-testing", "networking", "cli"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["codingo/Reconnoitre"], "name": "codingo/Reconnoitre", "platform": ["python", "cli"], "pushed_at": "2022-12-11T16:37:10+00:00", "repo": "codingo/Reconnoitre", "stars": 2196, "tags": ["reconnaissance", "nmap", "service-enumeration", "oscp", "vhost-discovery", "offensive-security", "command-line", "linux"], "topics": ["oscp", "penetration-testing", "scanner", "security", "security-audit", "security-tools", "security-scanner", "offensive-security", "nmap", "enumeration", "scanning", "kali-linux", "service-enumeration", "services-discovered", "discover-services", "range", "snmp", "hacking", "hacking-tool", "virtual-hosts"], "urls": [], "use_cases": ["enumerate services on a target network during a pentest", "run a ping sweep and discover live hosts in a range", "automate nmap scanning across multiple hosts with saved output", "discover virtual hosts on a web server", "organize recon findings and exploits into per-host directories", "get recommended next-step commands for enumerated services", "prepare structured recon notes for OSCP lab machines"], "what_it_is": "Reconnoitre is a Python CLI tool for multithreaded information gathering and service enumeration of target hosts and ranges, built originally for OSCP lab work. It creates organized directory structures for results and loot, and writes out recommended follow-up commands for further testing.", "when_to_avoid": ["you need actively developed tooling - the maintainer recommends building enumeration workflows with Interlace instead", "you need a GUI or non-command-line interface", "you need vulnerability exploitation rather than reconnaissance and enumeration"], "when_to_choose": ["you want an automated, multithreaded recon and enumeration workflow for pentest targets", "you need consistent directory structures and recommendations per host during OSCP-style labs", "you want a quick nmap-driven service discovery wrapper with vhost scanning"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/reconnoitre", "repo": "codingo/Reconnoitre", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "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:25.213408+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.213408+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:47:12.999778+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "763cd4d57544f6557e4a1a5720ce9761e124a272bc319d9d16336bb25e126181", "fetched_at": "2026-08-28T04:06:25.213408+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codingo/Reconnoitre"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "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": 3418, "days_push": 1361, "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}}