crowbar-cli 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,287 @@
1
+ Metadata-Version: 2.5
2
+ Name: crowbar-cli
3
+ Version: 0.1.0
4
+ Summary: Retrieve CVEs and index them inside your codebase. One SQLite+FTS5 index, one CLI, one MCP server.
5
+ Project-URL: Homepage, https://github.com/kushvinth/crowbar
6
+ Project-URL: Repository, https://github.com/kushvinth/crowbar
7
+ Project-URL: Issues, https://github.com/kushvinth/crowbar/issues
8
+ Author: kushvinth
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: agent,cve,epss,exploit,kev,mcp,nvd,offline,security,vulnerability
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Information Technology
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Topic :: Security
19
+ Requires-Python: >=3.11
20
+ Description-Content-Type: text/markdown
21
+
22
+ <!-- mcp-name: io.github.kushvinth/crowbar -->
23
+ <div align="center">
24
+
25
+ # crowbar
26
+
27
+ ### Retrieve CVEs and index them inside your codebase.
28
+
29
+ **Point it at a product and version. It pulls the CVEs that apply and indexes them locally, so any tool in your repo can query the answer.**
30
+
31
+ [![npm](https://img.shields.io/badge/npm-crowbar--cli-cb3837?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/crowbar-cli)
32
+ [![PyPI](https://img.shields.io/badge/PyPI-crowbar--cli-0b7285?style=flat-square&logo=pypi&logoColor=white)](https://pypi.org/project/crowbar-cli/)
33
+ [![CI](https://github.com/kushvinth/crowbar/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/kushvinth/crowbar/actions/workflows/ci.yml)
34
+ [![MCP server](https://img.shields.io/badge/MCP-20_tools-5c4ee5?style=flat-square)](#other-agents-cursor-codex-gemini-opencode)
35
+ [![Python](https://img.shields.io/badge/python-%E2%89%A53.11-3776ab?style=flat-square&logo=python&logoColor=white)](#prefer-a-plain-cli)
36
+ [![skills.sh](https://img.shields.io/badge/skills.sh-crowbar-111111?style=flat-square)](https://skills.sh/kushvinth/crowbar/crowbar)
37
+ [![MIT license](https://img.shields.io/badge/license-MIT-f4c430?style=flat-square)](LICENSE)
38
+
39
+ **[Website](https://crowbar.kushvinth.com/) · [Guides](https://crowbar.kushvinth.com/guides/) · [Showcases](https://crowbar.kushvinth.com/showcase/)**
40
+
41
+ [Quick start](#quick-start) · [How crowbar works](#how-crowbar-works) · [What you can answer](#what-you-can-answer) · [Showcases](#showcases) · [FAQ](#faq) · [Documentation](#documentation)
42
+
43
+ <code>npx crowbar-cli setup</code>
44
+
45
+ </div>
46
+
47
+ > [!IMPORTANT]
48
+ > Get crowbar from [kushvinth/crowbar](https://github.com/kushvinth/crowbar),
49
+ > [crowbar.kushvinth.com](https://crowbar.kushvinth.com), or the
50
+ > [crowbar-cli](https://pypi.org/project/crowbar-cli/) package. A similar
51
+ > repository name or copied README does not make a download official.
52
+
53
+ <p align="center">
54
+ <img src="docs/assets/demo.gif" alt="crowbar triaging CVE-2021-44228, matching nginx 1.18.0, and finding the Log4Shell exploit" width="760" />
55
+ </p>
56
+
57
+ ---
58
+
59
+ A codebase with no CVE index inside it makes people guess. crowbar is the
60
+ index: it retrieves NVD, CISA KEV, EPSS, SSVC, the CVE List, Exploit-DB, Nuclei,
61
+ Metasploit, OSV, Debian, MSRC and Apple advisories, and writes them into a local
62
+ SQLite + FTS5 database you query from your terminal, your CI or your agent. It
63
+ is **offline and reproducible** - the same query gives the same answer, no API,
64
+ no rate limits - so a lookup costs milliseconds instead of a guess.
65
+
66
+ No web UI, no daemon, no third-party Python packages. Point it at a product and
67
+ version and it tells you what is actually exploitable, ranks it by real-world
68
+ risk, and links the proof-of-concept.
69
+
70
+ > crowbar indexes public exploit and PoC data **as data**. It never clones,
71
+ > compiles, or runs it. Treat anything it surfaces as hostile code and detonate
72
+ > only in a disposable VM. Use it only against systems you own or may test. See
73
+ > [DISCLAIMER.md](DISCLAIMER.md).
74
+
75
+ ## Quick start
76
+
77
+ ### Set up your agent
78
+
79
+ With Node.js and [uv](https://docs.astral.sh/uv/) installed, run:
80
+
81
+ ```bash
82
+ npx crowbar-cli setup
83
+ ```
84
+
85
+ Setup finds Claude Code, Codex, Cursor, Gemini CLI and opencode on your machine,
86
+ shows exactly which configs it will change, and applies them only after you
87
+ approve. It registers crowbar's MCP server, installs the skill, backs up every
88
+ config file it edits, and offers to build the local index. Restart your agent
89
+ afterward. `--agents claude,cursor` picks agents explicitly; `--yes` skips the
90
+ prompts. `npx crowbar-cli setup --remove` undoes it the same way: it lists what
91
+ it will remove, asks first, and leaves your other servers and the index alone.
92
+
93
+ ### Or install the Claude Code plugin
94
+
95
+ One install drops in a skill *and* an MCP server:
96
+
97
+ ```bash
98
+ claude plugin marketplace add kushvinth/crowbar
99
+ claude plugin install crowbar@crowbar
100
+ ```
101
+
102
+ Your agent now has:
103
+
104
+ - the **skill** - it reaches for crowbar on any "is X vulnerable / what CVEs hit
105
+ this / known exploits for …" question instead of guessing from memory;
106
+ - the **MCP tools** - `cb_cve`, `cb_product`, `cb_search`, `cb_exploit`, … answering
107
+ offline from the local index.
108
+
109
+ **That's the whole setup.** The first time you ask a security question, the
110
+ crowbar skill sets itself up automatically - installs the tool and builds a
111
+ small local index in `~/.crowbar` (~150 MB; a few minutes, since NVD downloads are
112
+ slow), then answers. You never run a CLI command, and the index refreshes itself
113
+ once a day while you use it.
114
+
115
+ ### Other agents (Cursor, Codex, Gemini, opencode)
116
+
117
+ Same MCP server, one line - no heavy install, `uvx` runs it on demand:
118
+
119
+ ```json
120
+ { "command": "uvx", "args": ["--from", "crowbar-cli", "crowbar-mcp"] }
121
+ ```
122
+
123
+ ```bash
124
+ claude mcp add crowbar -- uvx --from crowbar-cli crowbar-mcp # or, manually, in Claude Code
125
+ ```
126
+
127
+ The repo ships `.claude-plugin/`, `.codex-plugin/`, `gemini-extension.json` and a
128
+ host-agnostic `skills/crowbar/SKILL.md`, so most hosts auto-detect it.
129
+
130
+ ### Prefer a plain CLI?
131
+
132
+ Everything the agent can do, you can do in the terminal. Python 3.11+, zero deps.
133
+
134
+ ```bash
135
+ uvx crowbar-cli # run without installing
136
+ uv tool install crowbar-cli # or pipx install crowbar-cli / pip install crowbar-cli
137
+ nix run github:kushvinth/crowbar
138
+ git clone https://github.com/kushvinth/crowbar && cd crowbar && ./bin/crowbar --help
139
+ ```
140
+
141
+ ### Build an index
142
+
143
+ ```bash
144
+ crowbar sync --tier lite # pick lite | medium | heavy | extreme
145
+ crowbar build --tier lite # build the local index
146
+ crowbar doctor # verify it's ready
147
+ ```
148
+
149
+ With `uvx`, prefix each: `uvx crowbar-cli sync --tier lite`. Refresh later with
150
+ `crowbar update` (~10 s) - NVD modified + KEV + EPSS + Exploit-DB, in place.
151
+
152
+ **Size tiers** - each a superset of the one above, so you pick your disk budget:
153
+
154
+ | tier | size | includes |
155
+ |---|---|---|
156
+ | `lite` | ~150 MB | KEV, EPSS, recent CVEs, CWE names |
157
+ | `medium` | ~500 MB | + full NVD history, CAPEC, SSVC, ATT&CK |
158
+ | `heavy` | ~2 GB | + Exploit-DB, Nuclei, Metasploit, OSV, PoC |
159
+ | `extreme` | full | + MSRC, Apple, Debian - every source |
160
+
161
+ ## How crowbar works
162
+
163
+ <img src="docs/assets/flow.svg" alt="agent asks crowbar over MCP, crowbar answers from the local index, the agent gets a grounded answer" width="760" />
164
+
165
+ Your agent asks crowbar about a target over MCP. crowbar answers from the local
166
+ index - never the network - with the KEV/SSVC/EPSS/CVSS verdict, the affected
167
+ version ranges, and links to working PoCs. The agent uses that grounded result
168
+ to explain the risk, decide what to patch, or write and test an exploit under
169
+ authorization. CLI commands use the same read layer.
170
+
171
+ ## What you can answer
172
+
173
+ | Ask | What crowbar returns | Command |
174
+ |---|---|---|
175
+ | What does this CVE mean, and is it serious? | CVSS, EPSS, KEV, SSVC, CWE, CPE ranges, refs, PoCs | `crowbar cve CVE-2021-44228` |
176
+ | We run product X version Y - what's exploitable? | Only CVEs whose CPE range covers Y, with the matched range | `crowbar product nginx --version 1.18.0` |
177
+ | Is it exploited in the wild? | CISA KEV + SSVC `active`/`poc`/`none` | `crowbar kev`, `crowbar cve <id>` |
178
+ | Where's a working exploit or detection? | Exploit-DB, Nuclei templates, Metasploit modules | `crowbar exploit log4j` · `crowbar nuclei <q>` · `crowbar msf <q>` |
179
+ | A public PoC repo for this CVE? | GitHub PoC metadata (stars, language) - never cloned | `crowbar poc --cve <id>` |
180
+ | Is this npm / PyPI / Go package affected? | OSV/GHSA advisories with introduced/fixed ranges | `crowbar advisory --package lodash --ecosystem npm` |
181
+ | Windows / iOS / macOS advisory? | MSRC + Apple advisories, normalized impact (RCE/EoP/…) | `crowbar os --platform windows --impact RCE` |
182
+ | The exploit *code*, not just a title? | Full-text search inside 46k Exploit-DB sources | `crowbar code "jndi lookup ldap"` |
183
+ | A living-off-the-land binary? | GTFOBins / LOLBAS / PayloadsAllTheThings | `crowbar bin certutil` |
184
+ | A technique, weakness class, or model? | ATT&CK / CWE / CAPEC / LLM catalog | `crowbar attack T1059` · `crowbar cwe 79` |
185
+ | Anything, my way | read-only SQL over the whole index | `crowbar sql "select id,epss from cve where kev=1"` |
186
+
187
+ Rank threat by **KEV / SSVC active > EPSS > CVSS** - never CVSS alone. Most read
188
+ commands accept `--json`. See the [full command reference](https://crowbar.kushvinth.com/guides/)
189
+ and [AGENTS.md](AGENTS.md) for the traversal manual.
190
+
191
+ ## Showcases
192
+
193
+ **Triage Log4Shell in one command.** `crowbar cve CVE-2021-44228` returns `CRIT
194
+ 10.0 · KEV · EPSS 1.00 · ssvc=active`, 44 affected CPE ranges, Exploit-DB `50592`
195
+ (RCE), 44 Nuclei templates and 4 Metasploit modules - the whole verdict, offline,
196
+ in ~80 ms.
197
+
198
+ **"What do we run that's exploitable?"** `crowbar product nginx --version 1.18.0`
199
+ tests every NVD CPE range against 1.18.0 and returns only real hits, like
200
+ `CVE-2021-23017 HIGH 7.7 · matched f5:nginx >=0.6.18 <1.20.1` - not every CVE that
201
+ merely mentions "nginx".
202
+
203
+ **Hunt the actively-exploited.** `crowbar search "remote code execution" --kev
204
+ --epss 0.5 --sort epss` surfaces CVE-2021-26855 (Exchange), CVE-2020-0796
205
+ (SMBGhost) and friends, each with `exp×N nuc×N poc×N` counts, ranked by real
206
+ exploitation probability.
207
+
208
+ > Used crowbar on something interesting? Open an issue or PR with the target,
209
+ > your question, and what you found.
210
+
211
+ ## FAQ
212
+
213
+ <details><summary>Which agents can use crowbar?</summary>
214
+
215
+ Any MCP host: Claude Code, Codex, Cursor, Gemini CLI, opencode, and Claude
216
+ Desktop. The launch command is `uvx --from crowbar-cli crowbar-mcp`; this repo
217
+ ships ready manifests for the common ones. You can also use every capability
218
+ from the terminal.
219
+ </details>
220
+
221
+ <details><summary>Does it phone home or need an API key?</summary>
222
+
223
+ No. Every dataset is fetched over plain HTTP at build time with no token; after
224
+ that crowbar is fully offline. The MCP server makes zero network calls, and the
225
+ index opens read-only.
226
+ </details>
227
+
228
+ <details><summary>How big is it, really?</summary>
229
+
230
+ Your choice. A `lite` index is ~150 MB and answers in milliseconds; `extreme` is
231
+ the full corpus (~1.5 GB index over ~3.3 GB of raw data). `crowbar doctor` tells
232
+ you what you built and `crowbar stats` is always authoritative.
233
+ </details>
234
+
235
+ <details><summary>Does crowbar run exploits?</summary>
236
+
237
+ Never. It indexes exploit and PoC data **as data**. `crowbar exploit <id>`
238
+ downloads source for you to inspect; running it is your decision, in a disposable
239
+ VM, under authorization.
240
+ </details>
241
+
242
+ <details><summary>How is this different from vulnx / cve-mcp / CIRCL?</summary>
243
+
244
+ Those query live APIs (network, rate limits, answers that drift). crowbar is a
245
+ local index: offline, reproducible, and it full-text-searches Exploit-DB *source
246
+ code*, which the API wrappers don't.
247
+ </details>
248
+
249
+ ## Documentation
250
+
251
+ - **[crowbar.kushvinth.com](https://crowbar.kushvinth.com)** - quick start, commands, agent setup.
252
+ - [AGENTS.md](AGENTS.md) - the agent traversal manual (schema, recipes, guardrails).
253
+ - [docs/DATASETS.md](docs/DATASETS.md) - per-source shape, license and caveats.
254
+ - [docs/MAP.md](docs/MAP.md) - repo tree, data flow, table map.
255
+ - [CONTRIBUTING.md](CONTRIBUTING.md) · [SECURITY.md](SECURITY.md) · [Releases](https://github.com/kushvinth/crowbar/releases)
256
+
257
+ ## Star history
258
+
259
+ [![Star History Chart](https://api.star-history.com/svg?repos=kushvinth/crowbar&type=Date)](https://star-history.com/#kushvinth/crowbar&Date)
260
+
261
+ ## Disclaimer
262
+
263
+ crowbar is for lawful security research, defense, and analysis of systems you own
264
+ or are authorized to test. See [DISCLAIMER.md](DISCLAIMER.md). KEV/SSVC describe
265
+ exploitation observed elsewhere, EPSS is a model estimate, and a missing row is
266
+ not proof of "not affected" - verify before you act.
267
+
268
+ ## Contributing
269
+
270
+ We'd love your help with crowbar! [Open an issue](https://github.com/kushvinth/crowbar/issues)
271
+ to report a bug, a wrong CVE record or a missing dataset, or
272
+ [send a pull request](https://github.com/kushvinth/crowbar/pulls) to improve the code or docs.
273
+
274
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the dev loop, the add-a-dataset checklist
275
+ and the test suites. crowbar is standard-library only; keep it that way.
276
+
277
+ ## License
278
+
279
+ [MIT](LICENSE)
280
+
281
+ crowbar-authored code is licensed under MIT. The upstream data it indexes keeps its
282
+ own licenses and terms; see [Third-party notices](THIRD_PARTY_NOTICES.md) and
283
+ [docs/DATASETS.md](docs/DATASETS.md) for the source inventory.
284
+
285
+ **Indexed exploit and PoC data is reference material, not permission.** crowbar
286
+ never runs it, and nothing it returns authorizes testing a system. Use it only
287
+ against systems you own or are allowed to test; see [DISCLAIMER.md](DISCLAIMER.md).
@@ -0,0 +1,16 @@
1
+ crowbar/__init__.py,sha256=S8H-PaEf6LnBT2kC3VTFrFVRuzJtj4junYVxydHSG7w,117
2
+ crowbar/catalog.py,sha256=SIPhtzY38TfpJDuh6bfcrQS8aPHTI6ZDq7PX5wwulAc,6881
3
+ crowbar/cli.py,sha256=jWsXXgpjnlKSpr-nsbJy0GBB7uRnueYYRGJyW1FeLK4,57666
4
+ crowbar/datasets.py,sha256=mKPvyAUkax1sDc1ScKfBq6QCoNFhsrtbGBnQB-WFH54,24724
5
+ crowbar/db.py,sha256=C5PUIr93Hw0vUUD4X34c1qKjp5LEQROQKlHf8RqaGJk,1537
6
+ crowbar/indexer.py,sha256=ld8_1JQCLQo7yLFWgec34YjFtV38F_TRrq6-O3ZaxH8,39718
7
+ crowbar/intel.py,sha256=3AauWmYr0rcbGUoso9NDawC4a_zXOmrIKcqCm7HVHTw,23690
8
+ crowbar/loaders.py,sha256=fODl0gH2pMH6Szz_TUR2wMidEbDE17UGQRYJq4jl5Cc,16879
9
+ crowbar/mcp.py,sha256=nsdRIn2SCtqmNDbePPri6ywYm-8fcUfb1JCBGUGNWak,18969
10
+ crowbar/paths.py,sha256=q9jVvY3Cx-4OoUI2JV3KEFv5ztGK61eztQvSzX7pihk,1500
11
+ crowbar/query.py,sha256=MGjtTXnpVjp2oQcm27Pbzqn0jSGhZVuAmH3KiOfkoBY,24124
12
+ crowbar_cli-0.1.0.dist-info/METADATA,sha256=rHPWDuVaP72XfTFVT1QGI4xcN4AYHoDKdIHOd6AJW18,13513
13
+ crowbar_cli-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
14
+ crowbar_cli-0.1.0.dist-info/entry_points.txt,sha256=KSXySxA2dMLVQ101_5MJ_GyX6kXSYUF8yVTWhps_tIE,108
15
+ crowbar_cli-0.1.0.dist-info/licenses/LICENSE,sha256=lwV6kMAtSnnSv9JuRadCs2CN6nyYQTM7Sq6Z7KneldM,1066
16
+ crowbar_cli-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ crowbar = crowbar.cli:main
3
+ crowbar-cli = crowbar.cli:main
4
+ crowbar-mcp = crowbar.mcp:serve
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 kushvinth
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.