BandsalatThe versatile web hacker toolkit
Bandsalat helps web penetration testers and bug bounty hunters untangle the Web
Bandsalat helps web penetration testers and bug bounty hunters untangle the Web
Filter host, path or content-type with wildcards and bodies with CSS selectors.
Instantly get deep insights into parameters, cookies, certificates, referers, EXIF and more.
Select two rows to instantly compare requests, reponses, parameters, cookies, etc.
Select more than two rows to see aggregated data to understand what you're working with.
Have you ever used a messaging app? Then you already know how to use the WebSocket editor. It's literally a chat window (*ahem* on steroids).
Mom, can we have WebSockets?
No.
There is WebSockets at Home.
At home:
+-----------+---+------+------+
| Literally | a | huge | dump |
+-----------+---+------+------+
HTTP headers are multiline text that you can edit/copy/paste.
Conditions use a very simple DSL and no weirdly nested AND/OR/NOT UI elements.
Project scope is just multiline wildcard text with a simple exclude-operator.
Fuzzer uses literal Liquid templates with the full power of filters and conditions.
You get the point. Bandsalat does not force everything into clunky UI elements.
Use SQL to query HTML/XML bodies, JSON bodies, HTTP headers and whatnot. Scraping has never been easier.
Examples:
SELECT dom_attributes.value FROM bodies, dom_attributes(text, 'script[src]', 'src')
SELECT search_params.name, search_params.value FROM requests, search_params(search)
SELECT * FROM full_http WHERE exif(response_body, 'Name') IN ('Canon', 'Potato')
script-src directivesSELECT csp.value FROM response_headers AS h, csp(h.value) WHERE h.name_lower IN ( 'content-security-policy', 'content-security-policy-report-only', 'x-content-security-policy', 'x-webkit-csp' ) AND csp.name = 'script-src'
<form> with a hidden
<input>
that contains Base64 encoded JSON data where the
name
key has a value of
Bandsalat
SELECT * FROM full_http, dom_attributes( response_body_text, 'form input[hidden]', 'value' ) WHERE json_extract( base64_decode( dom_attributes.value ), '$.name' ) = 'Bandsalat'
With Digester you create pipelines that process data. Chain operations like URL encoding, HTML entities, JSON strings, Base64, Hex, Gzip, Brotli, sha256 and even custom scripts. Everything updates instantly.
Never type
Content-Type
or
application/json; charset=utf-8
ever again. There's
autocomplete for headers, pathnames
and more.
{add, remove, edit, fake, pause, drop, fork, tag, script} × {requests, responses,
headers, bodies, messages}.
Hours of automation could safe you minutes of work 🤯
Open anything in a new window. No matter if it's a whole module or just a single HTML body.
All windows and state (selected items, scroll position etc.) are restored when you open your project the next day.
A *.bandsalat project file is literally a SQLite file. With a vanilla SQLite client
you can always access and share
your
raw (but tidily normalized) proxy data. Even when you don't have a Bandsalat license anymore. No vendor lock-in.
Ready to find your first vulnerability?