Reverse-shell handler & post-exploitation console — the eights to wraith's aces.
Project description
hickok
A reverse-shell handler and post-exploitation console. Catch shells on multiple listeners, run commands, upgrade to a full PTY, and generate reverse-shell one-liners — from one dependency-free CLI.
It's the other half of a hand: wraith holds the aces — it does the recon and proves the way in; hickok brings the eights — it acts on what wraith caught. Aces and eights, the dead man's hand.
Install
pipx install hickok
Or from a clone: pip install -e . — or run it with no install at all:
PYTHONPATH=src python3 -m hickok.
Usage
The listener is the default command, so a bare hickok starts catching shells:
hickok # listen on :9001, drop into the console
hickok -l 9001,9002 --lhost 10.10.14.7 # multiple listeners, fixed LHOST
hickok payloads 10.10.14.7 9001 # print reverse-shell one-liners
hickok hand # act on wraith's latest run (found on its own)
hickok hand path/to/findings.json # ...or a specific one
hickok sql -u 'http://host/p?id=1' -p id # walk a SQL-injectable parameter
Inside the console:
hickok>
sessions list connected shells
payloads reverse-shell one-liners for your LHOST
cmd 1 id run a command on session 1
upgrade 1 turn a dumb shell into a PTY
interact 1 attach (detach with Ctrl-])
kill 1 drop a session
SQL injection — hickok sql
Walk a database through a boolean-blind injection — a small sqlmap. hickok calibrates a TRUE/FALSE oracle, fingerprints the DBMS (SQLite / MySQL / MSSQL / PostgreSQL), then reads anything out one bit at a time:
hickok sql -u 'http://host/db?id=1' -p id # or just `hickok sql` to read it
# from wraith's latest SQLi finding
hickok(sql)>
banner DBMS version user / db current user / database
tables list tables columns <t> a table's columns
dump <table> dump its rows query "<SELECT>" extract one value
hickok(sql)> dump users
id | username | password
---+----------+-----------
1 | admin | s3cr3t!
2 | alice | wonderland
Boolean-blind is slow by nature (each character is binary-searched over many requests) — it prints the request count as it goes.
Evasion / OPSEC:
hickok sql -u '...' -p id \
--random-agent \ # a random real browser User-Agent
--tor \ # route via Tor, verified (see below)
--cookie 'sid=…' -H 'X-Api: …' \ # authenticated injection
--delay 0.3 -v 2 \ # throttle; print every payload
--dump users # non-interactive: run one action and exit
--tor is zero-dependency, leak-aware and fail-closed: hickok speaks SOCKS5
itself (stdlib), auto-detects the Tor port (9050 / 9150), resolves the target
hostname through Tor (no DNS leak), and verifies the exit is a Tor node
before sending any attack traffic — if it can't confirm, it aborts rather than
deanonymising you. You only need Tor running (sudo systemctl start tor). Check
your setup first with hickok sql --check-tor --tor. --proxy http://host:port
and --proxy socks5://host:port work too.
The bridge — hickok hand
hickok hand picks up wraith's latest run on its own — wraith writes to a fixed
per-user dir (~/.local/share/wraith/runs/, or wherever WRAITH_RUNS points)
that both tools agree on, so it works from any directory. It reads the table,
lists what wraith found, and flags every finding that means code execution
(command injection, SSTI, …) — those are the doors to a shell.
hickok hand # wraith's latest run, wherever you are
hickok hand path/to/findings.json # ...or a specific one
[Critical] Command Injection in 'host' http://target/ping ⮕ shell
[High] SSTI in 'name' http://target/render ⮕ shell
[High] Reflected XSS in 'q' http://target/search
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
│ A♠ │ │ A♣ │ │ 8♠ │ │ 8♣ │
└─────┘ └─────┘ └─────┘ └─────┘
aces and eights — the dead man's hand.
wraith deals the aces; hickok brings the eights. The hand is complete.
Disclaimer
Built for authorized security testing and research — point it where you're meant to. What anyone does with it from there is theirs alone; the author takes no responsibility for misuse.
License
MIT.
in memory of J.B. Hickok — shot holding aces and eights, Deadwood, 1876.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hickok-0.5.0.tar.gz.
File metadata
- Download URL: hickok-0.5.0.tar.gz
- Upload date:
- Size: 25.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53c626c9df767c69e4c24458f9ae5fefe4c7f02a0d1d759eeed407e8ed4dbf8d
|
|
| MD5 |
4ed20c47b6160c630b16e6c401a9d1f1
|
|
| BLAKE2b-256 |
9a2764d38de51d0cf595bc85061ee295ab0aa339df053c307e04b10545acaad6
|
Provenance
The following attestation bundles were made for hickok-0.5.0.tar.gz:
Publisher:
release.yml on gusta-ve/hickok
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hickok-0.5.0.tar.gz -
Subject digest:
53c626c9df767c69e4c24458f9ae5fefe4c7f02a0d1d759eeed407e8ed4dbf8d - Sigstore transparency entry: 1796450401
- Sigstore integration time:
-
Permalink:
gusta-ve/hickok@4fdeab2d3d7610b6655936aab41e6a1bb482006f -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/gusta-ve
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4fdeab2d3d7610b6655936aab41e6a1bb482006f -
Trigger Event:
push
-
Statement type:
File details
Details for the file hickok-0.5.0-py3-none-any.whl.
File metadata
- Download URL: hickok-0.5.0-py3-none-any.whl
- Upload date:
- Size: 24.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8064f7f44748b73b33f665223201d07a1fd12a1409041fdf8339e7324d4ccf26
|
|
| MD5 |
1b2cdb1aeca6e4b5be65ac7667e344a0
|
|
| BLAKE2b-256 |
e6b2e93eabf49fb319afd59a77c3f2c9cff11d43d3f39bb97abad2638ff0583c
|
Provenance
The following attestation bundles were made for hickok-0.5.0-py3-none-any.whl:
Publisher:
release.yml on gusta-ve/hickok
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hickok-0.5.0-py3-none-any.whl -
Subject digest:
8064f7f44748b73b33f665223201d07a1fd12a1409041fdf8339e7324d4ccf26 - Sigstore transparency entry: 1796450547
- Sigstore integration time:
-
Permalink:
gusta-ve/hickok@4fdeab2d3d7610b6655936aab41e6a1bb482006f -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/gusta-ve
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4fdeab2d3d7610b6655936aab41e6a1bb482006f -
Trigger Event:
push
-
Statement type: