v1.0 — stable release

DIREC
TORY BASHER

A blazing-fast web directory scanner written in C++. HTTP/2, multi-threading, connection pooling. Faster than Gobuster.

Windows · Linux · macOS  ·  C++  ·  libcurl
bash — basher
$ basher -u https://target.com -w dirs.txt -T 50 -x php,html

____ _
| _ \ __ _ ___| |__ ___ _ __
| |_) |/ _` / __| '_ \ / _ \ '__|
| _ <| (_| \__ \ | | | __/ |
|_| \_\\__,_|___/_| |_|\___|_|

⚡ Threads: 50
⚡ Wordlist: dirs.txt (5842 words)
⚡ Target: https://target.com
⚡ Ext: php, html

Progress: [████████████░░░] 78% | 4556/5842 req/s

[200] /admin.php
[200] /login.html
[301] /dashboard
[200] /backup.php
[404] /etc ...

$
HTTP/2 Protocol
∞ Threads
C++ Built with
v1.0 Current

Built for speed.
Built for pentesters.

⚡
HTTP/2 + Pipelining

Leverages HTTP/2 multiplexing and connection pooling to maximize throughput. Requests fly.

⚙
Multi-threaded

Configurable thread count with auto-calibration. Spin up 100+ threads and let it rip.

🔒
Cookie Auth

Pass session cookies to scan authenticated pages. Supports PHPSESSID, JWT, and any cookie format.

📁
Extension Brute-force

Append extensions like php,html,bak to every wordlist entry in one pass.

💾
Output to File

Save all discovered paths to a file for later analysis and reporting.

📊
Live Progress Bar

Real-time progress bar with req/s counter. Always know where you are.

Up and running
in 30 seconds.

Clone the repo, build with g++ and libcurl, and start scanning. Or grab the Windows binary below.

↓ BASHER.EXE — Windows
BASH # Clone git clone https://github.com/Nullit13/basher.git cd basher
# Build (requires libcurl) g++ main.cpp args.cpp http.cpp basher.cpp \     -o basher -lcurl
# Run ./basher -u https://target.com -w wordlists/common.txt -T 50

Documentation

Basher is a high-performance web directory brute forcer written in C++. It uses HTTP/2, multi-threading, and connection pooling to scan targets faster than tools like Gobuster or Dirb.

⚡ For pentesters
Basher is intended for authorized security testing only. Only scan targets you have permission to test.

Installation

The fastest way to get started on Windows is to download the prebuilt binary from the GitHub releases page.

DOWNLOAD # Windows binary (no build required)
https://github.com/Nullit13/basher/releases/tag/v1.0

For Linux and macOS, build from source (see below).

Building from source

You'll need g++ and libcurl installed.

Prerequisites

On Windows, install MinGW-w64 (includes g++) and download the libcurl dev package.
On Linux/macOS, install via package manager:

# Ubuntu / Debian
sudo apt install g++ libcurl4-openssl-dev

# macOS (Homebrew)
brew install curl

Compile

BASH git clone https://github.com/Nullit13/basher.git
cd basher
g++ main.cpp args.cpp http.cpp basher.cpp -o basher -lcurl

Usage & Syntax

SYNTAX basher -u <url> -w <wordlist> [options]

Two flags are required: -u (target URL) and -w (wordlist path). All others are optional.

Flags

Required

Flag Type Description
-u <url> required
Target URL to brute force. Include the scheme (http:// or https://).
-w <path> required
Path to wordlist file. One entry per line. Included wordlists live in wordlists/.

Optional

Flag Type Description
-T <n> optional
Number of concurrent threads.
Default: 1
-c <cookie> optional
Cookie string to include with every request. Use for authenticated scanning.
Example: "PHPSESSID=abc123"
-o <file> optional
Output file path. Discovered paths are written here, one per line.
Example: results.txt
-x <exts> optional
Comma-separated list of file extensions to append to each wordlist entry.
Example: php,html,bak

Examples

Basic scan

$ basher -u https://example.com -w wordlists/common.txt

High-speed with 50 threads

$ basher -u https://example.com -w dirs.txt -T 50

With extensions and output file

$ basher -u https://example.com -w dirs.txt -T 20 -x php,html,bak -o results.txt

Authenticated scan

$ basher -u https://example.com/admin -w dirs.txt -c "PHPSESSID=abc123def456" -T 30

Cookie Authentication

Use -c to pass a cookie string with every request. This lets you scan areas of a site that require authentication.

Grab your session cookie from your browser's DevTools (F12 → Application → Cookies), then pass it to Basher:

basher -u https://example.com -w dirs.txt -c "PHPSESSID=abc123; auth_token=xyz"
⚠ Note
Wrap the cookie string in quotes to prevent your shell from interpreting special characters.

Extensions

The -x flag appends file extensions to each wordlist entry. For a wordlist entry admin with -x php,html, Basher will try:

https://example.com/admin
https://example.com/admin.php
https://example.com/admin.html

Useful for finding backup files (bak), configuration files (conf), or specific technologies.

Output / Saving Results

Use -o to save all discovered paths to a file. Only paths that return non-404 responses are written.

basher -u https://example.com -w dirs.txt -o found.txt

# found.txt will contain:
[200] /admin.php
[301] /dashboard
[200] /login.html

Built by Adam Abed (Nullit13)  ·  Source on GitHub →