{"id":51012960,"url":"https://github.com/thelicato/parsex","last_synced_at":"2026-06-21T05:31:25.712Z","repository":{"id":356714377,"uuid":"747450099","full_name":"thelicato/parsex","owner":"thelicato","description":"Parse and extract key data across multiple security tools","archived":false,"fork":false,"pushed_at":"2026-05-14T22:59:48.000Z","size":338,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-01T10:33:57.361Z","etag":null,"topics":["golang","hacking","hacktoberfest","parser","pentest","tools"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thelicato.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-24T00:21:08.000Z","updated_at":"2026-05-14T19:38:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/thelicato/parsex","commit_stats":null,"previous_names":["thelicato/parsex"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thelicato/parsex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fparsex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fparsex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fparsex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fparsex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thelicato","download_url":"https://codeload.github.com/thelicato/parsex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thelicato%2Fparsex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34596046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","hacking","hacktoberfest","parser","pentest","tools"],"created_at":"2026-06-21T05:31:25.646Z","updated_at":"2026-06-21T05:31:25.703Z","avatar_url":"https://github.com/thelicato.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\t\u003cimg src=\"./logo.svg?raw=true\" width=\"200\"\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eParse and extract key data across multiple security tools\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#-usage\"\u003eUsage\u003c/a\u003e •\n  \u003ca href=\"#-installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#-license\"\u003eLicense\u003c/a\u003e •\n\u003c/p\u003e\n\n---\n\n`parsex` is a powerful command-line tool designed to streamline the process of parsing and extracting data from various security tools' outputs. It simplifies the complex task of data analysis in cybersecurity by providing a unified solution for interpreting and organizing data from multiple sources.\n\nWith `parsex`, you can efficiently process and extract essential information from different security tool outputs, enabling faster and more informed decision-making in your cybersecurity operations.\n\nThe goal is to obtain a tool that meets the requirements of the community, therefore suggestions and PRs are very welcome!\n\n## ⚡ Features\n\n- Unified parsing\n- Streamlined workflow\n- CLI and library modes\n- Sample Files\n\nThis is the current list of compatible tools:\n\n- nmap (`nmap-standard`, `nmap-xml`, `nmap-grepable`)\n- nuclei (`nuclei-standard`, `nuclei-json` for JSON and JSONL output)\n- ffuf (`ffuf-standard`, `ffuf-json` for JSON and JSONL output)\n\n## 📚 Usage\n\n### CLI mode\n\n```\nparsex -h\n```\n\nThis will display the help for the tool\n\n```\nParse and extract key data across multiple security tools\n\nUsage:\n  parsex [flags]\n\nFlags:\n  -h, --help            help for parsex\n  -i, --input string    Input to parse\n  -p, --parser string   Parser to use\n  -v, --version         version for parsex\n```\n\nParse a tool output file:\n\n```\nparsex -i samples/nmap7\n```\n\nSelect a specific parser when more than one parser is compatible:\n\n```\nparsex -i samples/nmap7 --parser nmap-standard\n```\n\nCLI mode prints indented JSON. `parser` is the parser selected for the result, while `compatible_parsers` lists every parser that matched the input. If more than one parser matches, parsex uses the first parser in the configured parser order unless `--parser` selects one of the compatible parsers. Parser names are matched case-insensitively, and spaces, dashes, and underscores are equivalent. Parser names are emitted as lowercase dash-separated identifiers. If the selected parser is not compatible with the input, parsex returns an error.\n\n### Library mode\n\n```go\npackage main\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\n\t\"github.com/thelicato/parsex\"\n)\n\nfunc main() {\n\tresult, err := parsex.ParseFile(\"samples/nmap7\", parsex.WithParserName(\"nmap-standard\"))\n\tif errors.Is(err, parsex.ErrNoCompatibleParser) {\n\t\tfmt.Println(\"unsupported input\")\n\t\treturn\n\t}\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tfmt.Printf(\"parser=%s data=%#v\\n\", result.Parser, result.Data)\n}\n```\n\n## Parser Validation\n\nGenerated parser samples can be validated locally with:\n\n```\nscripts/validate-generated-samples.sh\n```\n\nThe GitHub workflow runs the same script on every push. The script requires\n`nmap`, `ffuf`, and `nuclei` to generate fresh tool samples.\n\n## 🚀 Installation\n\nRun the following command to install the latest version:\n\n```\ngo install github.com/thelicato/parsex/cmd/parsex@latest\n```\n\nOr you can simply grab an executable from the [Releases](./releases) page.\n\n## 🪪 License\n\n_parsex_ is made with 🖤 and released under the [GPL3 LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthelicato%2Fparsex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthelicato%2Fparsex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthelicato%2Fparsex/lists"}