agentic-bug-hunter 6.0.0__tar.gz
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.
- agentic_bug_hunter-6.0.0/CHANGELOG.md +283 -0
- agentic_bug_hunter-6.0.0/LICENSE +21 -0
- agentic_bug_hunter-6.0.0/MANIFEST.in +4 -0
- agentic_bug_hunter-6.0.0/PKG-INFO +962 -0
- agentic_bug_hunter-6.0.0/README.md +937 -0
- agentic_bug_hunter-6.0.0/agentic_bug_hunter.egg-info/PKG-INFO +962 -0
- agentic_bug_hunter-6.0.0/agentic_bug_hunter.egg-info/SOURCES.txt +190 -0
- agentic_bug_hunter-6.0.0/agentic_bug_hunter.egg-info/dependency_links.txt +1 -0
- agentic_bug_hunter-6.0.0/agentic_bug_hunter.egg-info/entry_points.txt +3 -0
- agentic_bug_hunter-6.0.0/agentic_bug_hunter.egg-info/requires.txt +5 -0
- agentic_bug_hunter-6.0.0/agentic_bug_hunter.egg-info/top_level.txt +1 -0
- agentic_bug_hunter-6.0.0/bughunter/__init__.py +8 -0
- agentic_bug_hunter-6.0.0/bughunter/__main__.py +29 -0
- agentic_bug_hunter-6.0.0/bughunter/agent.py +1874 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/README.md +17 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/autopilot.md +218 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/chain-builder.md +92 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/credential-hunter.md +170 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/recon-agent.md +124 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/recon-ranker.md +93 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/report-writer.md +193 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/token-auditor.md +195 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/validator.md +133 -0
- agentic_bug_hunter-6.0.0/bughunter/agents/web3-auditor.md +174 -0
- agentic_bug_hunter-6.0.0/bughunter/brain.py +2749 -0
- agentic_bug_hunter-6.0.0/bughunter/engine.py +857 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/README.md +19 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/README.md +40 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/__init__.py +3 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/adapters.py +413 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/claude-config.json +11 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/cli.py +102 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/opencode-config.json +12 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/policy/__init__.py +26 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/policy/decisions.py +46 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/policy/engine.py +190 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/policy/tool_meta.py +95 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/redact.py +31 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/bughunter-mcp/server.py +362 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/burp-mcp-client/README.md +101 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/burp-mcp-client/config.json +13 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/burp-mcp-client/opencode-config.json +16 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/caido-mcp-client/README.md +84 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/caido-mcp-client/opencode-config.json +14 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/hackerone-mcp/config.json +10 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/hackerone-mcp/opencode-config.json +10 -0
- agentic_bug_hunter-6.0.0/bughunter/mcp/hackerone-mcp/server.py +336 -0
- agentic_bug_hunter-6.0.0/bughunter/memory/README.md +16 -0
- agentic_bug_hunter-6.0.0/bughunter/memory/__init__.py +48 -0
- agentic_bug_hunter-6.0.0/bughunter/memory/audit_log.py +374 -0
- agentic_bug_hunter-6.0.0/bughunter/memory/hunt_journal.py +69 -0
- agentic_bug_hunter-6.0.0/bughunter/memory/pattern_db.py +169 -0
- agentic_bug_hunter-6.0.0/bughunter/memory/research_case.py +115 -0
- agentic_bug_hunter-6.0.0/bughunter/memory/rotation.py +123 -0
- agentic_bug_hunter-6.0.0/bughunter/memory/schemas.py +560 -0
- agentic_bug_hunter-6.0.0/bughunter/serve.py +17 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/README.md +129 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/__init__.py +6 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/_auth_helper.sh +75 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/_spray_http_form.py +279 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/_spray_oauth.py +216 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/auth_session.py +304 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/banner.py +151 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/banner.sh +105 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/breach_checker.py +240 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/bypass_403.sh +391 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/cicd_scanner.sh +148 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/cloud_recon.sh +112 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/cors_scanner.py +261 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/credential_store.py +92 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/crlf_scanner.py +191 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/cve_scan.sh +108 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/dashboard.py +596 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/dom_xss_harness.py +214 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/eol_check.py +276 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/external_arsenal.sh +170 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/graphql_audit.sh +340 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/h1_idor_scanner.py +595 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/h1_mutation_idor.py +381 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/h1_oauth_tester.py +281 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/h1_race.py +252 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/h1_run.sh +159 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/hai_browser_recon.js +171 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/hai_payload_builder.py +726 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/hai_probe.py +193 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/hunt.py +938 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/intel_engine.py +414 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/jwt_scanner.py +197 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/lead_board.py +436 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/learn.py +474 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/llm_redteam.py +243 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/memory_gc.py +183 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/memory_migrate.py +95 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/mindmap.py +366 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/multipart_mutator.py +275 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/nosqli_scanner.py +209 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/oob_listener.py +210 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/osint_employees.sh +207 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/param_discovery.sh +83 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/poc_bundler.py +644 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/port_scanner.py +218 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/prompt_safety.py +23 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/recon_adapter.py +347 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/recon_engine.sh +729 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/research_log.py +201 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/safe_http.py +99 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/sast_scan.py +171 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/scope_aggregator.sh +212 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/scope_checker.py +267 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/secrets_hunter.sh +129 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/sneaky_bits.py +231 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/spray_orchestrator.sh +242 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/takeover_scanner.sh +91 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/target_selector.py +320 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/token_scanner.py +816 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/validate.py +989 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/visual_triage.py +173 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/vuln_scanner.sh +620 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/waf_encoder.py +230 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/waf_response_analyzer.py +920 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/wordlist_engine.sh +183 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/zendesk_idor_test.py +390 -0
- agentic_bug_hunter-6.0.0/bughunter/tools/zero_day_fuzzer.py +597 -0
- agentic_bug_hunter-6.0.0/bughunter/wordlists/README.md +14 -0
- agentic_bug_hunter-6.0.0/bughunter/wordlists/REFERENCES.md +51 -0
- agentic_bug_hunter-6.0.0/bughunter/wordlists/api-endpoints.txt +298 -0
- agentic_bug_hunter-6.0.0/bughunter/wordlists/common.txt +4751 -0
- agentic_bug_hunter-6.0.0/bughunter/wordlists/params.txt +6453 -0
- agentic_bug_hunter-6.0.0/bughunter/wordlists/raft-medium-dirs.txt +29999 -0
- agentic_bug_hunter-6.0.0/bughunter/wordlists/sensitive-files.txt +109 -0
- agentic_bug_hunter-6.0.0/pyproject.toml +47 -0
- agentic_bug_hunter-6.0.0/requirements.txt +3 -0
- agentic_bug_hunter-6.0.0/setup.cfg +4 -0
- agentic_bug_hunter-6.0.0/tests/test_agent_dispatcher_hardening.py +215 -0
- agentic_bug_hunter-6.0.0/tests/test_agent_dispatcher_scope.py +89 -0
- agentic_bug_hunter-6.0.0/tests/test_agent_time_budget_gate.py +118 -0
- agentic_bug_hunter-6.0.0/tests/test_audit_log.py +216 -0
- agentic_bug_hunter-6.0.0/tests/test_auth_session.py +355 -0
- agentic_bug_hunter-6.0.0/tests/test_autopilot_guard.py +245 -0
- agentic_bug_hunter-6.0.0/tests/test_brain_auto_detect.py +198 -0
- agentic_bug_hunter-6.0.0/tests/test_brain_litellm.py +145 -0
- agentic_bug_hunter-6.0.0/tests/test_breach_checker.py +150 -0
- agentic_bug_hunter-6.0.0/tests/test_bughunter_mcp.py +88 -0
- agentic_bug_hunter-6.0.0/tests/test_bypass_403_review_fixes.py +39 -0
- agentic_bug_hunter-6.0.0/tests/test_config_file_permissions.py +21 -0
- agentic_bug_hunter-6.0.0/tests/test_cookie_redaction.py +44 -0
- agentic_bug_hunter-6.0.0/tests/test_cors_scanner.py +77 -0
- agentic_bug_hunter-6.0.0/tests/test_credential_store.py +129 -0
- agentic_bug_hunter-6.0.0/tests/test_crlf_scanner.py +50 -0
- agentic_bug_hunter-6.0.0/tests/test_dashboard.py +291 -0
- agentic_bug_hunter-6.0.0/tests/test_dom_xss_harness.py +79 -0
- agentic_bug_hunter-6.0.0/tests/test_exploit_command_gate.py +57 -0
- agentic_bug_hunter-6.0.0/tests/test_exploit_loop_budget.py +95 -0
- agentic_bug_hunter-6.0.0/tests/test_false_positives.py +265 -0
- agentic_bug_hunter-6.0.0/tests/test_hackerone_mcp.py +123 -0
- agentic_bug_hunter-6.0.0/tests/test_hackerone_server.py +221 -0
- agentic_bug_hunter-6.0.0/tests/test_hunt_session_dirs.py +140 -0
- agentic_bug_hunter-6.0.0/tests/test_hunt_target_types.py +101 -0
- agentic_bug_hunter-6.0.0/tests/test_install_standalone.py +103 -0
- agentic_bug_hunter-6.0.0/tests/test_intel_engine.py +191 -0
- agentic_bug_hunter-6.0.0/tests/test_jwt_scanner.py +82 -0
- agentic_bug_hunter-6.0.0/tests/test_lead_board.py +70 -0
- agentic_bug_hunter-6.0.0/tests/test_llm_redteam.py +56 -0
- agentic_bug_hunter-6.0.0/tests/test_memory_gc.py +153 -0
- agentic_bug_hunter-6.0.0/tests/test_mindmap.py +141 -0
- agentic_bug_hunter-6.0.0/tests/test_model_selection.py +78 -0
- agentic_bug_hunter-6.0.0/tests/test_nosqli_scanner.py +52 -0
- agentic_bug_hunter-6.0.0/tests/test_oob_listener.py +54 -0
- agentic_bug_hunter-6.0.0/tests/test_opencode_agent_frontmatter.py +47 -0
- agentic_bug_hunter-6.0.0/tests/test_pattern_db.py +221 -0
- agentic_bug_hunter-6.0.0/tests/test_plugin_manifest.py +31 -0
- agentic_bug_hunter-6.0.0/tests/test_poc_bundler.py +279 -0
- agentic_bug_hunter-6.0.0/tests/test_port_scanner.py +72 -0
- agentic_bug_hunter-6.0.0/tests/test_prompt_injection_delimiting.py +134 -0
- agentic_bug_hunter-6.0.0/tests/test_recon_adapter.py +305 -0
- agentic_bug_hunter-6.0.0/tests/test_research_learning.py +118 -0
- agentic_bug_hunter-6.0.0/tests/test_rotation.py +297 -0
- agentic_bug_hunter-6.0.0/tests/test_safe_http_redirects.py +212 -0
- agentic_bug_hunter-6.0.0/tests/test_safe_method_policy.py +92 -0
- agentic_bug_hunter-6.0.0/tests/test_sast_scan.py +65 -0
- agentic_bug_hunter-6.0.0/tests/test_schemas.py +155 -0
- agentic_bug_hunter-6.0.0/tests/test_schemas_session_id.py +170 -0
- agentic_bug_hunter-6.0.0/tests/test_scope_checker.py +236 -0
- agentic_bug_hunter-6.0.0/tests/test_shell_injection_fixes.py +59 -0
- agentic_bug_hunter-6.0.0/tests/test_sneaky_bits.py +155 -0
- agentic_bug_hunter-6.0.0/tests/test_target_selector.py +290 -0
- agentic_bug_hunter-6.0.0/tests/test_tls_verification_default.py +40 -0
- agentic_bug_hunter-6.0.0/tests/test_token_scanner.py +595 -0
- agentic_bug_hunter-6.0.0/tests/test_validation_handoff.py +129 -0
- agentic_bug_hunter-6.0.0/tests/test_visual_triage.py +49 -0
- agentic_bug_hunter-6.0.0/tests/test_vuln_scanner_review_fixes.py +25 -0
- agentic_bug_hunter-6.0.0/tests/test_zendesk_idor_tool.py +17 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **Fluxion AI provider** (`fluxion`) for standalone `bughunter` / `brain.py` — optional OpenAI-compatible gateway at `https://fluxionai.world/v1` via `FLUXION_API_KEY`. Not the default; choose option 9 in `bughunter setup`, `BRAIN_PROVIDER=fluxion`, or `--provider fluxion`. README partner placement + setup docs link [docs](https://docs.fluxionai.world/user-guide/help-center) and [Model Plaza](https://fluxionai.world/model-plaza).
|
|
7
|
+
- **Claude Code plugin manifest** (`.claude-plugin/plugin.json`) — declares skills, commands, agents, and hooks so the repo passes Claude Code / marketplace plugin validation.
|
|
8
|
+
- **LiteLLM provider** (`litellm`) for standalone `bughunter` / `brain.py` — one gateway reaches 100+ LLM backends (OpenAI, Anthropic, Gemini, Bedrock, Vertex, Groq, …), routed by the `provider/model` prefix using each provider's own key, or via a LiteLLM proxy (`LITELLM_API_KEY` / `LITELLM_API_BASE`). Choose option 9 in `bughunter setup` or set `BRAIN_PROVIDER=litellm`. Uses `drop_params=True` for cross-provider compatibility, omits blank creds so each provider's own env var is honored, and lists models via live discovery (proxy `/models`, or `get_valid_models()` in SDK mode) — no hardcoded list. Opt-in in auto-detect so it never preempts an already-configured provider.
|
|
9
|
+
- **DOM XSS confirmation harness** (`/domxss`, `tools/dom_xss_harness.py`) — drives headless Chromium via Playwright, injects uniquely-tagged canary payloads into every query + URL-fragment parameter, and reports `[CONFIRMED]` **only when the browser actually executes** the payload (dialog / hooked sink / console), vs `[POSSIBLE]` for reflected-but-neutralized. Turns the toolkit's biggest "confirmation-poor" gap (client-side/JS-execution bugs) into proven findings, and captures a screenshot for the report. Payload generation, URL injection, and verdict classification are pure and unit-tested; Playwright is lazy-imported so the suite needs no browser. Playwright registered in `external_arsenal.sh`.
|
|
10
|
+
- **Continuous integration** — `.github/workflows/tests.yml` runs the full `pytest` suite on every push to `main` and every pull request, across Python 3.10 / 3.11 / 3.12. A status badge is shown in the README.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **Minimum Python is now stated as 3.10** (was advertised as 3.9). The codebase uses PEP 604 `X | None` unions at runtime (e.g. `memory/schemas.py`), which raise `TypeError` on 3.9 — CI confirmed 3.9 never actually worked. README badge updated to match.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- **Go / Dependency Graph package identity** — add `go.mod` declaring `module github.com/awarexone/Agentic-Bug-Hunter` (matches GitHub `go-import`). Pre-rename tags were indexed by the Go proxy as `github.com/shuvonsec/claude-bug-bounty` `+incompatible`, which is why Insights → Dependents showed that path. Old requires still resolve via the repo redirect.
|
|
17
|
+
- **`tests/test_bypass_403_review_fixes.py`** re-pointed at the current WAF-aware bypass verdict pipeline (block-baseline sampling + `_is_real_bypass` signature/length gating + confirmed-vs-uncertain output split). It was still asserting the pre-#40 `_normalize_body` internals that the rewrite removed, so it failed on every run once CI was added.
|
|
18
|
+
- **Port/service scanning** (`/portscan`, `tools/port_scanner.py`) — wraps `naabu` with an `smap` passive fallback and flags the non-web services the HTTP-only recon pipeline can't see (Redis, Docker API, exposed DBs, RDP, SMB). Parsing + service classification are pure and unit-tested. Closes a `[registered-not-wired]` gap.
|
|
19
|
+
- **Visual triage / PoC screenshots** (`/screenshot`, `tools/visual_triage.py`) — screenshots live hosts via `eyewitness`/`aquatone`/`httpx -screenshot` into a self-contained HTML gallery that doubles as report evidence. Tool selection, command build, and gallery rendering are unit-tested. Closes a `[registered-not-wired]` gap and the "no automatic PoC capture" gap.
|
|
20
|
+
- **SAST source audit** (`/sast`, `tools/sast_scan.py`) — runs Semgrep security packs over fetched JS/source and normalizes results into the toolkit's severity + `POSSIBLE` confidence model (SAST is a lead, not proof — `/validate` still requires a runtime PoC). Result parsing is unit-tested. Closes a `[registered-not-wired]` gap.
|
|
21
|
+
- **AwareXone sponsorship & branding** — README now leads with an "Open for Sponsorship" callout and a "Powered by AwareXone.com" credit (hero badge + footer). Same credit added to the project site footer, plus a `.github/FUNDING.yml` so the repo shows a Sponsor button.
|
|
22
|
+
- **OpenRouter provider** (`openrouter`) for standalone `bughunter` / `brain.py` — set `OPENROUTER_API_KEY`, choose option 7 in `bughunter setup`, or `BRAIN_PROVIDER=openrouter`. OpenAI-compatible gateway with default model `anthropic/claude-sonnet-4.6` and a short curated model list (same pattern as other cloud providers).
|
|
23
|
+
- **OrcaRouter provider** (`orcarouter`) for standalone `bughunter` / `brain.py` — set `ORCAROUTER_API_KEY`, choose option 8 in `bughunter setup`, or `BRAIN_PROVIDER=orcarouter`. OpenAI-compatible gateway with default model `openai/gpt-4o` and a short curated model list (same pattern as other cloud providers).
|
|
24
|
+
- **Explicit Ollama model selection** — `bughunter setup` now lists installed local models and persists the selected provider/model pair; `bughunter setup --provider ollama --model <name>` supports non-interactive configuration. `--model` / `BRAIN_MODEL` provide one-off overrides, and explicit choices no longer silently fall back to or race a different model.
|
|
25
|
+
- **Standalone installer updates** — rerunning `install.sh --agent standalone` now refreshes the active managed `bughunter` path instead of allowing an older system installation to shadow a newer user-local link, and verifies the updated symlink target.
|
|
26
|
+
- **SDK-free Ollama fallback** — standalone provider setup and chat now use Ollama's local HTTP API when the Python `ollama` package is unavailable; dependency installation failures are reported instead of silently ignored.
|
|
27
|
+
- **Expanded uninstaller** — `uninstall.sh` now covers standalone and every supported agent harness, with managed-file checks, confirmation, configuration preservation by default, explicit `--purge-config` support, and compatibility with its previous `--claude` / `--opencode` / `--both` flags.
|
|
28
|
+
|
|
29
|
+
## v4.3.2 — AI Hunt Playbook (Jun 2026)
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- AI-assisted hunt guidance in `skills/bb-methodology/SKILL.md` and `skills/bug-bounty/SKILL.md`: use the model for feature decomposition, sibling-endpoint diffing, role matrices, and chain planning, while keeping proof requirements anchored to live requests and cross-account deltas.
|
|
33
|
+
- AI-assisted planning signals in `tools/mindmap.py` so generated hunt checklists now surface hypothesis expansion and validation-gate reminders alongside the traditional vuln-class checklist.
|
|
34
|
+
|
|
35
|
+
## v4.3.1 — Bug Fixes + Hardening (Jun 2026)
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
- **`tools/vuln_scanner.sh` parse failure** — removed the broken duplicate XSS merge block and restored a single dalfox path against `urls/with_params.txt`.
|
|
39
|
+
- **macOS bash 3.2 auth crashes** — replaced empty-array auth splats with the bash 3.2-safe form across recon/scanning scripts so anonymous runs no longer abort under `set -u`.
|
|
40
|
+
- **`tools/scope_checker.py` CLI gap** — added a real deterministic CLI with asset checks, URL filtering, JSON output, and clean missing-file errors.
|
|
41
|
+
- **`tools/hai_probe.py` / `tools/zendesk_idor_test.py` help-path crashes** — both tools now handle missing `requests` gracefully and print useful `--help` output without importing the dependency first.
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
- `requirements.txt` for the Python helper tools and test runner.
|
|
45
|
+
- `tests/test_scope_checker.py` coverage for the new deterministic scope checker CLI.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
- `install.sh` now supports Claude Code, OpenCode, Pi Agent, Codex-style installs, shared Agent Skills, and project-local installs.
|
|
49
|
+
- `install_tools.sh` attempts to install Python dependencies after the binary tool pass.
|
|
50
|
+
- `tools/validate.py` persists `submission-notes.md` and `validation.json` beside each report skeleton.
|
|
51
|
+
- `tools/vuln_scanner.sh` now writes `summary.json` so validation can ingest the scanner confidence and tier counts directly.
|
|
52
|
+
- `tools/validate.py` now accepts `--scanner-summary` and records the scanner handoff in `validation.json` and the report skeleton.
|
|
53
|
+
- `tools/bypass_403.sh` now compares normalized response bodies before marking a bypass confirmed.
|
|
54
|
+
- Added regression coverage for the scanner handoff, bypass normalization, and false-positive classes that commonly come back N/A.
|
|
55
|
+
|
|
56
|
+
## v4.2.3 — Auto-rotation Stop Hook (May 2026)
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
- **`.claude/settings.json`** with a `Stop` hook that runs `python3 -m tools.memory_gc --rotate` (quietly, non-blocking via `async: true`) whenever a Claude Code session ends. Long-running hunts that never trigger an inline write-time rotation now still get GC'd at session end. Hook is a no-op if `tools/memory_gc.py` is missing or the working dir isn't the repo root, so it is safe to ship in the project file.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## v4.2.2 — Restore ReconAdapter (May 2026)
|
|
64
|
+
|
|
65
|
+
### Fixed
|
|
66
|
+
- **`tools/recon_adapter.py`** was missing the `ReconAdapter` class that `tests/test_recon_adapter.py` imports — the test file had been silently uncollectable since the rename in 0db9640. Added the class with read accessors for the subdir-nested layout that `recon_engine.sh` writes (`subdomains/all.txt`, `live/urls.txt`, `urls/with_params.txt`, `js/potential_secrets.txt`, etc.), graphql extraction, fallback path resolution, summary counts, and a `normalize()` method that creates the derived files brain.py expects (`priority/`, `api_specs/`, `urls/graphql.txt`, `subdomains/resolved.txt`).
|
|
67
|
+
|
|
68
|
+
### Tests
|
|
69
|
+
- 31 previously-uncollectable tests in `tests/test_recon_adapter.py` now run and pass. Suite total: **215 passing** (was 184).
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## v4.2.1 — PatternDB Perf Fix (May 2026)
|
|
74
|
+
|
|
75
|
+
### Fixed
|
|
76
|
+
- **`PatternDB.save()` was O(n²)** — every save re-read the entire JSONL file to dedup. At 10k entries this pegged CPU for 5+ minutes per insert pass. Replaced with an in-memory dedup index of `(target, vuln_class, technique)` tuples, populated lazily on first save and updated per write. 10k saves now complete in ~2 seconds instead of 5+ minutes.
|
|
77
|
+
|
|
78
|
+
### Added
|
|
79
|
+
- `tests/test_pattern_db.py::TestPatternPerformance`: 4 new tests covering the perf bound, dedup correctness at 10k entries, lazy-load via reopen, and corrupted-line resilience.
|
|
80
|
+
|
|
81
|
+
### Resolved
|
|
82
|
+
- **TODO-8 (final item)** — `PatternDB.save()` performance test at 10,000 entries.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## v4.2.0 — Memory Rotation (Apr 2026)
|
|
87
|
+
|
|
88
|
+
### Added
|
|
89
|
+
- `memory/rotation.py`: size-based JSONL rotator under `fcntl.LOCK_EX`. Default cap 10 MB, keep 3 backups.
|
|
90
|
+
- `tools/memory_gc.py` + `/memory-gc` slash command: scan, rotate, or purge backups across the hunt-memory tree.
|
|
91
|
+
- `tests/test_rotation.py`: 22 tests covering rotation primitives, auto-rotation in `AuditLog`/`PatternDB`, multi-process concurrent writes (with and without rotation), and disk-full OSError propagation.
|
|
92
|
+
|
|
93
|
+
### Changed
|
|
94
|
+
- `memory/audit_log.py` `AuditLog.log()`: calls `rotate_if_needed` before each append.
|
|
95
|
+
- `memory/pattern_db.py` `PatternDB.save()`: calls `rotate_if_needed` before each append.
|
|
96
|
+
- `memory/__init__.py`: exports rotation helpers.
|
|
97
|
+
|
|
98
|
+
### Resolved
|
|
99
|
+
- **TODO-7** — memory GC / rotation policy.
|
|
100
|
+
- **TODO-8** (partial) — concurrent-write stress test + disk-full OSError propagation test.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## v4.1.0 — Patch: Bug Fixes + Assets (Apr 2026)
|
|
105
|
+
|
|
106
|
+
### Fixed
|
|
107
|
+
- **TODO-4 resolved**: `hunt.py` BASE_DIR path resolution — `hunt.py` was relocated to `tools/` so `TOOLS_DIR`/`BASE_DIR`/`RECON_DIR`/`FINDINGS_DIR` now resolve correctly. All 5 open TODOs are now closed.
|
|
108
|
+
|
|
109
|
+
### Added
|
|
110
|
+
- `logo-banner.svg` and `logo-icon.svg` — SVG vector assets for banner and icon variants
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## v4.0.0 — Meme Coin Security Module (Apr 2026)
|
|
115
|
+
|
|
116
|
+
### Added — New Skill Domain
|
|
117
|
+
- `skills/meme-coin-audit/SKILL.md`: **Meme coin rug pull detection + 8 token bug classes**
|
|
118
|
+
- Mint authority / freeze authority checks
|
|
119
|
+
- Bonding curve exploit patterns
|
|
120
|
+
- LP lock verification
|
|
121
|
+
- Honeypot detection
|
|
122
|
+
- Token metadata tampering
|
|
123
|
+
- Solana-specific audit path (SPL token checks)
|
|
124
|
+
- Pre-dive kill signals for obvious rugs
|
|
125
|
+
|
|
126
|
+
### Added — Tool
|
|
127
|
+
- `tools/token_scanner.py`: automated token red flag scanner supporting EVM + Solana
|
|
128
|
+
- EVM: ABI analysis, ownership checks, hidden mint functions, transfer tax detection
|
|
129
|
+
- Solana: SPL token account authority checks, metadata validation
|
|
130
|
+
|
|
131
|
+
### Changed
|
|
132
|
+
- `CLAUDE.md`: Skills count 8 → 9, added `meme-coin-audit` to skill table; Commands 13 → 14, added `/token-scan`
|
|
133
|
+
- `README.md`: Updated skill domain count
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## v3.1.1 — CI/CD GitHub Actions Security Expansion (Mar 2026)
|
|
138
|
+
|
|
139
|
+
### Changed — Existing Skill Enhancement
|
|
140
|
+
- `SKILL.md` CI/CD Pipeline section: **5 checklist items → 6 categories, 30+ checks, PoC templates, hunting workflow, and GHSA reference table**
|
|
141
|
+
- **Category 1: Code Injection & Expression Safety** — expression injection, envvar/envpath/output clobbering, argument injection, SSRF via workflow, taint source catalog, fix patterns (env var extraction, heredoc delimiters, end-of-options markers)
|
|
142
|
+
- **Category 2: Pipeline Poisoning & Untrusted Checkout** — untrusted checkout on `pull_request_target`/`workflow_run`, TOCTOU with label-gated approvals, reusable workflow taint, cache poisoning, artifact poisoning, artipacked credential leakage
|
|
143
|
+
- **Category 3: Supply Chain & Dependency Security** — unpinned actions (tag → SHA), impostor commits from fork network, ref confusion, known vulnerable actions, archived actions, unpinned container images
|
|
144
|
+
- **Category 4: Credential & Secret Protection** — secret exfiltration, secrets in artifacts, unmasked `fromJson()` bypass, excessive `secrets: inherit`, hardcoded credentials
|
|
145
|
+
- **Category 5: Triggers & Access Control** — dangerous triggers without/with partial mitigation, label-based approval bypass, bot condition spoofing, excessive GITHUB_TOKEN permissions, self-hosted runners in public repos, OIDC token theft
|
|
146
|
+
- **Category 6: AI Agent Security** — unrestricted AI triggers, excessive tool grants to AI agents, prompt injection via workflow context
|
|
147
|
+
- **Hunting workflow** — 6-step recon→scan→triage→verify→PoC→prove pipeline
|
|
148
|
+
- **Expression injection PoC template** — ready-to-use `gh issue create` payload
|
|
149
|
+
- **10 real-world GHSAs** — proven Critical/High advisories with affected actions
|
|
150
|
+
- **A→B signal chains** — 7 CI/CD-specific escalation paths
|
|
151
|
+
- **Tooling**: integrated [sisakulint](https://sisaku-security.github.io/lint/) — 52 rules, taint propagation, 81.6% GHSA coverage
|
|
152
|
+
- **Deep-dive guide**: Decision tree for verifying sisakulint findings based on 36 real-world paid reports (Bazel $13K, Flank $7.5K, PyTorch $5.5K, GitHub $20K, DEF CON $250K+)
|
|
153
|
+
|
|
154
|
+
### Added — Tool Integration
|
|
155
|
+
- `tools/cicd_scanner.sh`: standalone sisakulint wrapper — org/repo scanning, recursive reusable workflow analysis, parsed summary output with per-rule breakdown
|
|
156
|
+
- `install_tools.sh`: sisakulint binary auto-download with OS/arch detection (v0.2.11, linux/darwin, amd64/arm64/armv6), cicd_scanner install now optional (`--with-cicd-scanner`)
|
|
157
|
+
- `tools/recon_engine.sh` Phase 8: auto-detects GitHub orgs from recon data (httpx, JS endpoints, URLs), invokes `cicd_scanner.sh` per org
|
|
158
|
+
- `tools/hunt.py`: surfaces CI/CD findings between recon and vuln scan stages via `check_cicd_results()`
|
|
159
|
+
- `tests/test_cicd_scanner.sh`: shell tests for cicd_scanner (syntax check + CLI behavior)
|
|
160
|
+
|
|
161
|
+
## v3.1.0 — Hunting Methodology Skill (Mar 2026)
|
|
162
|
+
|
|
163
|
+
### Added — New Skill Domain
|
|
164
|
+
- `skills/bb-methodology/SKILL.md`: **Hunting mindset + 5-phase non-linear workflow** — the "HOW to think" layer that was missing from the toolkit
|
|
165
|
+
- **Part 1: Mindset** — Define/Select/Execute discipline, 4 thinking domains (critical, multi-perspective, tactical, strategic), developer psychology reverse-engineering, Amateur vs Pro 7-phase comparison, Feature-based vs Vuln-based route selection, anti-patterns
|
|
166
|
+
- **Part 2: Workflow** — 5-phase non-linear flow (Recon → Map → Find → Prove → Report) with decision trees per phase, input-type → vuln-class routing, Error vs Blind detection cascade, escalation decision trees per vuln class
|
|
167
|
+
- **Part 3: Navigation & Timing** — "I'm stuck because..." quick reference table, 20-minute rotation clock, tool routing by phase with rationale, session start/end checklists
|
|
168
|
+
|
|
169
|
+
### Changed
|
|
170
|
+
- `CLAUDE.md`: Skills count 7 → 8, added `bb-methodology` to skill table
|
|
171
|
+
- `README.md`: Updated skill domain count to 8
|
|
172
|
+
- `SKILL.md`: Added cross-reference to `bb-methodology` after CRITICAL RULES section
|
|
173
|
+
|
|
174
|
+
## v3.1.0 — CVSS 4.0 + TODO Fixes (Mar 2026)
|
|
175
|
+
|
|
176
|
+
### Changed — CVSS 3.1 → 4.0
|
|
177
|
+
- `tools/validate.py`: Full CVSS 4.0 interactive scorer. Replaces 8-metric CVSS 3.1 with 11-metric CVSS 4.0. New metrics: AT (Attack Requirements), VC/VI/VA (Vulnerable System), SC/SI/SA (Subsequent System, incl. Safety). Scope metric removed. UI now has three values (None / Passive / Active). Score verified via FIRST.org calculator link in output.
|
|
178
|
+
- `agents/report-writer.md`: Updated CVSS section to 4.0. New metric descriptions, updated common-pattern examples, verification link.
|
|
179
|
+
|
|
180
|
+
### Fixed — TODOs resolved
|
|
181
|
+
- `agents/autopilot.md` already implemented TODO-2 (safe HTTP methods) and TODO-3 (circuit breaker) — marked resolved in TODOS.md
|
|
182
|
+
- `tools/hunt.py` BASE_DIR path resolution was already correct (TODO-4 was based on wrong assumption about file location) — marked resolved
|
|
183
|
+
- `tools/recon_adapter.py` created (TODO-5): auto-detects nested vs flat recon format, returns unified `ReconData`. `normalize_to_nested()` migrates legacy flat output. CLI: `python3 tools/recon_adapter.py example.com --migrate`
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## v2.1.0 — 20 Vuln Classes + Payload Expansion (Mar 2026)
|
|
188
|
+
|
|
189
|
+
### Config
|
|
190
|
+
- Recon commands now read the Chaos API key from the `$CHAOS_API_KEY` environment variable for cleaner setup across different environments.
|
|
191
|
+
|
|
192
|
+
### Added — New Vuln Classes
|
|
193
|
+
- `web2-vuln-classes`: **MFA/2FA Bypass** (class 19) — 7 bypass patterns: rate limit, OTP reuse, response manipulation, workflow skip, race, backup codes, device trust escalation
|
|
194
|
+
- `web2-vuln-classes`: **SAML/SSO Attacks** (class 20) — XML signature wrapping (XSW), comment injection, signature stripping, XXE in assertion, NameID manipulation + SAMLRaider workflow
|
|
195
|
+
|
|
196
|
+
### Added — security-arsenal Payloads
|
|
197
|
+
- **NoSQL injection**: MongoDB `$ne`/`$gt`/`$regex`/`$where` operators, URL-encoded GET parameter injection
|
|
198
|
+
- **Command injection**: Basic probes, blind OOB (curl/nslookup), space/keyword bypass techniques, Windows payloads, filename injection context
|
|
199
|
+
- **SSTI detection**: Universal probe for all 6 engines (Jinja2, Twig, Freemarker, ERB, Spring, EJS) + RCE payloads for each
|
|
200
|
+
- **HTTP smuggling payloads**: CL.TE, TE.CL, TE.TE obfuscation variants, H2.CL
|
|
201
|
+
- **WebSocket testing**: IDOR/auth bypass messages, CSWSH PoC, Origin validation test, injection via messages
|
|
202
|
+
- **MFA bypass payloads**: OTP brute force (ffuf), race async script, response manipulation, device trust cookie test
|
|
203
|
+
- **SAML attack payloads**: XSW XML templates, comment injection, signature stripping workflow, XXE payload, SAMLRaider CLI
|
|
204
|
+
|
|
205
|
+
### Added — web2-recon Skill
|
|
206
|
+
- **Setup section**: `$CHAOS_API_KEY` export instructions, subfinder config.yaml with 5 API sources, nuclei-templates update command
|
|
207
|
+
- **crt.sh** passive subdomain source (no API key needed) added as Step 0
|
|
208
|
+
- **Port scanning**: naabu command for non-standard ports (8080/8443/3000/9200/6379/etc.)
|
|
209
|
+
- **Secret scanning**: trufflehog + SecretFinder JS bundle scan, grep patterns
|
|
210
|
+
- **GitHub dorking**: `gh search code` commands, GitDorker integration for org-wide secret search
|
|
211
|
+
|
|
212
|
+
### Added — report-writing Skill
|
|
213
|
+
- **Intigriti template**: Full format with platform-specific notes (video PoC preference, safe harbor stance)
|
|
214
|
+
- **CVSS 4.0 quick reference**: Key differences from CVSS 3.1, score examples for common findings, calculator link
|
|
215
|
+
|
|
216
|
+
### Added — rules/hunting.md
|
|
217
|
+
- **Rule 18**: Mobile = different attack surface (APK decompile workflow, key targets)
|
|
218
|
+
- **Rule 19**: CI/CD is attack surface (GitHub Actions expression injection, dangerous workflow patterns)
|
|
219
|
+
- **Rule 20**: SAML/SSO = highest auth bug density (test checklist)
|
|
220
|
+
|
|
221
|
+
### Updated
|
|
222
|
+
- README: CHAOS_API_KEY setup section with free key instructions and optional subfinder API keys
|
|
223
|
+
- README: Updated vuln class count from 18 → 20, updated skill descriptions
|
|
224
|
+
- `web2-vuln-classes` description updated to reflect 20 classes and new additions
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## v2.0.0 — ECC-Style Plugin Architecture (Mar 2026)
|
|
229
|
+
|
|
230
|
+
Major restructure into a full Claude Code plugin with multi-component architecture.
|
|
231
|
+
|
|
232
|
+
### Added
|
|
233
|
+
- `skills/` directory with 7 focused skill domains (split from monolithic SKILL.md)
|
|
234
|
+
- `skills/bug-bounty/` — master workflow (unchanged from v1)
|
|
235
|
+
- `skills/web2-recon/` — recon pipeline, subdomain enum, 5-minute rule
|
|
236
|
+
- `skills/web2-vuln-classes/` — 18 bug classes with bypass tables
|
|
237
|
+
- `skills/security-arsenal/` — payloads, bypass tables, never-submit list
|
|
238
|
+
- `skills/web3-audit/` — 10 smart contract bug classes, Foundry template
|
|
239
|
+
- `skills/report-writing/` — H1/Bugcrowd/Intigriti/Immunefi templates
|
|
240
|
+
- `skills/triage-validation/` — 7-Question Gate, 4 gates, always-rejected list
|
|
241
|
+
- `commands/` directory with 8 slash commands
|
|
242
|
+
- `/recon` — full recon pipeline
|
|
243
|
+
- `/hunt` — start hunting a target
|
|
244
|
+
- `/validate` — 4-gate finding validation
|
|
245
|
+
- `/report` — submission-ready report generator
|
|
246
|
+
- `/chain` — A→B→C exploit chain builder
|
|
247
|
+
- `/scope` — asset scope verification
|
|
248
|
+
- `/triage` — quick 7-Question Gate
|
|
249
|
+
- `/web3-audit` — smart contract audit
|
|
250
|
+
- `agents/` directory with 5 specialized agents
|
|
251
|
+
- `recon-agent` — runs recon pipeline, uses claude-haiku-4-5 for speed
|
|
252
|
+
- `report-writer` — generates reports, uses claude-opus-4-6 for quality
|
|
253
|
+
- `validator` — validates findings, uses claude-sonnet-4-6
|
|
254
|
+
- `web3-auditor` — audits contracts, uses claude-sonnet-4-6
|
|
255
|
+
- `chain-builder` — builds exploit chains, uses claude-sonnet-4-6
|
|
256
|
+
- `hooks/hooks.json` — session start/stop hooks with hunt reminders
|
|
257
|
+
- `rules/hunting.md` — 17 critical hunting rules (always active)
|
|
258
|
+
- `rules/reporting.md` — 12 report quality rules (always active)
|
|
259
|
+
- `CLAUDE.md` — plugin overview and quick-start guide
|
|
260
|
+
- `install.sh` — one-command skill installation
|
|
261
|
+
|
|
262
|
+
### Content Added to Skills
|
|
263
|
+
- SSRF IP bypass table: 11 techniques (decimal, octal, hex, IPv6, redirect chain, DNS rebinding)
|
|
264
|
+
- Open redirect bypass table: 11 techniques for OAuth chaining
|
|
265
|
+
- File upload bypass table: 10 techniques + magic bytes reference
|
|
266
|
+
- Agentic AI ASI01-ASI10 table: OWASP 2026 agentic AI security framework
|
|
267
|
+
- Pre-dive kill signals for web3: TVL formula, audit check, line-count heuristic
|
|
268
|
+
- Conditionally valid with chain table: 12 entries
|
|
269
|
+
- Report escalation language for payout downgrade defense
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## v1.0.0 — Initial Release (Early 2026)
|
|
274
|
+
|
|
275
|
+
- Monolithic SKILL.md (1,200+ lines) covering full web2+web3 workflow
|
|
276
|
+
- Python tools: `hunt.py`, `learn.py`, `validate.py`, `report_generator.py`, `mindmap.py`
|
|
277
|
+
- Vulnerability scanners: `h1_idor_scanner.py`, `h1_mutation_idor.py`, `h1_oauth_tester.py`, `h1_race.py`
|
|
278
|
+
- AI/LLM testing: `hai_probe.py`, `hai_payload_builder.py`, `hai_browser_recon.js`
|
|
279
|
+
- Shell tools: `recon_engine.sh`, `vuln_scanner.sh`
|
|
280
|
+
- Utilities: `sneaky_bits.py`, `target_selector.py`, `zero_day_fuzzer.py`, `cve_hunter.py`
|
|
281
|
+
- Web3 skill chain: 10 files in `web3/` directory
|
|
282
|
+
- Wordlists: 5 wordlists in `wordlists/` directory
|
|
283
|
+
- Docs: `docs/payloads.md`, `docs/advanced-techniques.md`, `docs/smart-contract-audit.md`
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Claude Bug Bounty Hunter Contributors
|
|
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.
|