{"adoption": {"forks": 341, "observed_at": "2026-08-28T04:06:35.377550+00:00", "stars": 2300}, "canonical_url": "https://ross.abutalabs.com/products/javasec", "card": {"archived": false, "artifact_type": "learning-resource", "description": "a rep for documenting my study, may be from 0 to 0.1", "domain": ["security", "penetration-testing", "tutorials"], "enriched": true, "function": ["security", "penetration-testing", "reverse-engineering", "developer-tools"], "health_score": 64, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["Y4tacker/JavaSec"], "name": "Y4tacker/JavaSec", "platform": ["jvm", "cross-platform"], "pushed_at": "2026-03-25T14:40:56+00:00", "repo": "Y4tacker/JavaSec", "stars": 2300, "tags": ["java-security", "deserialization", "jndi-injection", "xxe", "memory-webshell", "code-audit", "study-notes", "vulnerability-analysis"], "topics": [], "urls": [], "use_cases": ["learn java deserialization vulnerabilities", "study jndi injection attack chains", "understand java reflection and dynamic proxies for exploitation", "prepare for java code audit interviews", "learn how memory webshells work in tomcat", "find java security learning resources and references", "study xxe and fast vulnerabilities"], "what_it_is": "A personal study repository documenting the author's Java security learning journey, from fundamentals like reflection and dynamic proxies to advanced topics like JNDI injection, deserialization, and memory webshells. It is a collection of informal notes with curated links to authoritative references rather than a structured tutorial.", "when_to_avoid": ["you need a structured, polished course with consistent depth", "you want runnable exploit tooling rather than notes and links", "you need production security libraries or scanners"], "when_to_choose": ["you are learning Java security from scratch and want a curated path with references", "you want Chinese-language notes on Java deserialization and JNDI injection", "you need a study index linking to JVM specs, OWASP cheat sheets, and gadget chain writeups"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/javasec", "repo": "Y4tacker/JavaSec", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "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:35.377550+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:35.377550+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:40:13.115909+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d488c0907ce75f3cb9d4c1e8c9dfc0ec13435d7b7d2756a599758ab71c3ac57b", "fetched_at": "2026-08-28T04:06:35.377550+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Y4tacker/JavaSec"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 74, "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": 1781, "days_push": 161, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}