{"adoption": {"forks": 160, "observed_at": "2026-08-28T04:03:39.205783+00:00", "stars": 1118}, "canonical_url": "https://ross.abutalabs.com/products/camxploit", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Security reconnaissance and assessment tool for identifying potentially exposed IP cameras by analyzing open ports, service configurations, and common misconfigurations.", "domain": ["security", "penetration-testing", "networking", "iot"], "enriched": true, "function": ["security", "penetration-testing", "networking", "developer-tools"], "health_score": 57, "homepage": null, "language": "Python", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["spyboy-productions/CamXploit"], "name": "spyboy-productions/CamXploit", "platform": ["python", "cli", "windows", "cross-platform"], "pushed_at": "2026-01-06T20:08:27+00:00", "repo": "spyboy-productions/CamXploit", "stars": 1118, "tags": ["cctv", "ip-camera", "rtsp", "reconnaissance", "surveillance-security", "camera-detection", "dvr", "nvr", "linux", "macos"], "topics": ["cctv-cameras", "cctv-detection", "cctv-hacking", "cctv-surveillance", "ip-camera", "ip-camera-feed", "cctv", "dvr", "nvr", "rtsp"], "urls": [], "use_cases": ["check if an IP address has an exposed IP camera", "detect RTSP streams on non-standard ports", "test default credentials on CCTV systems", "audit my own camera infrastructure for misconfigurations", "find publicly accessible web interfaces on camera devices", "identify open ports on DVR and NVR devices"], "what_it_is": "CamXploit is a Python-based security reconnaissance tool that checks whether an IP address hosts a potentially exposed IP camera or CCTV service. It scans common camera ports, detects RTSP services, tests default credentials, and highlights misconfigurations for authorized security assessment.", "when_to_avoid": ["you need a full-scale network vulnerability scanner rather than camera-focused checks", "you lack explicit authorization to test the target systems", "you need passive continuous monitoring instead of on-demand scanning"], "when_to_choose": ["you need a quick non-intrusive check for exposed camera services on IPs you own or are authorized to test", "you want RTSP detection and default-credential testing in a single Python tool", "you want to run reconnaissance without installation via Google Colab"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/camxploit", "repo": "spyboy-productions/CamXploit", "role": "main", "score": 48}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "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:39.205783+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.205783+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:41:50.409633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "47ceac17911d2a0b6978ede15b682f1eb19394834259a5f058abfd3ae02c69a1", "fetched_at": "2026-08-28T04:03:39.205783+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spyboy-productions/CamXploit"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 61, "longevity": 39, "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": 553, "days_push": 239, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 48, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}