Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TSK | The Skeleton Key

TSK | The Skeleton Key

TSK | The Skeleton Key

DEF CON 34 Edition

A free, open source platform for building and deploying USB / HID payloads. Includes a web UI for payload browsing, device flashing, SnarfSnarf exfil generation, lure building, and phone-home catch.

Modern web rebuild of The Skeleton Key (2018 TUI lineage). GitHub repo: neur0sp1cy/TSK.

By Neur0Sp1cy

Contact: [email protected] - questions, concerns, and comments.

Special thanks to derv82 for early testing and feedback.


Legal and authorized use

TSK is for authorized security testing only - private labs, VMs you control, or environments where you have written permission to deploy payloads and run assessments.

Do not use this project against systems you do not own or lack authorization to test. Misuse, harassment, and illegal activity are not supported and are solely your responsibility.

Full policy: SECURITY.md (authorized use, vulnerability reporting, disclaimer).


Features

  • Web UI - Browse HAK5 payload repos, preview, edit, and flash to supported devices; collapsible categories and package accordions with persisted expand state
  • USB Dropper - Build exfil scripts (PowerShell / Bash), lure packages (LNK, README, .desktop), flash to a plain USB stick
  • SnarfSnarf (SNARF modal) - Visual exfil builder with phone-home or on-stick output; saved scripts appear under EXFILS, lure packages under LURES, hand-authored files under MY PAYLOADS (+ NEW)
  • CATCH - Live receiver for phone-home uploads with preview and ZIP export
  • LAN Turtle - SSH terminal in the browser
  • Themes - Six UI themes (default through flat); theme <name> in command bar
  • Tutorial - In-app missions at /tutorial

Screenshots

Operator console · default theme · authorized lab use only

TSK main UI - device sidebar, HAK5 payload browse, and preview panel

Payload browse - HAK5 libraries, expand/collapse categories, live preview, flash controls


SNARF USB Dropper exfil builder

SNARF - visual exfil builder · targets, format, LHOST/LPORT

CATCH phone-home receiver with snarfed files

CATCH - live phone-home uploads · preview · ZIP export


USB Dropper flash complete - payload on stick with terminal log

USB flash - scan a plain stick, substitute LHOST/LPORT, deploy exfil or lure packages


CONFIG operator settings - LHOST, LPORT, device mounts

CONFIG - LHOST/LPORT, tools, device mount paths

About modal - hardware tags, QR codes, Ko-fi

About - repo, phone-home, and support links


In-app tutorial Mission 01 - initial setup

Tutorial - seven guided missions at /tutorial (or press H → Open Tutorial)


See TESTING.md for lab setup and step-by-step USB test scenarios.

Pre-release checklist: RELEASE_ROADMAP.md (timeline, polish, go-live).

Release notes: CHANGELOG.md

Full feature checklist: TESTING_CHECKLIST.md (pass/fail every feature before release).


Requirements

Requirement Notes
Python 3.8+ 3.10+ recommended
uv Recommended for dependency install
Plain USB flash drive FAT32 or exFAT, writable (not a Bunny/Ducky volume)
Same LAN Required for phone-home; victim must reach LHOST:LPORT (default 1337)
java Rubber Ducky encoding only
ssh LAN Turtle operations only

Dependencies install automatically via uv sync (FastAPI, uvicorn, bcrypt, jinja2, pylnk3, paramiko).


Quick start

curl -LsSf https://astral.sh/uv/install.sh | sh

git clone https://github.com/neur0sp1cy/TSK
cd TSK
uv sync
uv run python server.py

Open http://127.0.0.1:1337 in your browser (or run ./run_web.sh on Linux).

Fun commands (command bar): quote · joke · hack the planet · defcon · play/pause/next (drop tracks in web/static/music/) · present for demo layout. Press H for the full list.

To enable HTTPS (recommended when accessing from other LAN machines):

uv run python server.py --ssl

A self-signed cert is generated once at ssl/tsk.crt and reused on every restart. Your browser will show a security warning on first visit - click Advanced then Proceed to accept it. Phone-home snarf scripts use plain HTTP and are unaffected.

Windows

git clone https://github.com/neur0sp1cy/TSK
cd TSK
uv sync
uv run python server.py
# or: uv run python server.py --ssl

First login

  1. Click NEW on the login screen and register an operator (password min 8 characters).
  2. Open CONFIG (C tile under SYSTEM) and set LHOST to your LAN IP (use the LAN IP helper).
  3. Set LPORT to 1337 unless you changed the server port.
  4. Optional: open /tutorial for Mission 1 walkthrough, or press H and click OPEN TUTORIAL.

Per-operator config: users/<operator>/config.json
Saved USB payloads: users/<operator>/payloads/usb/ (exfil scripts, packages/<slug>/ lure bundles)
Cloned repos: repos/
Phone-home uploads: snarfed/<operator>/ (isolated per operator)

Session auth: register/login required; API uses X-TSK-Token header. Password min 8 characters.


Web UI

Area Purpose
Left nav SYSTEM tiles (About, Help, Config, Repos, Operator) + DEVICES cards
Center Payload list for selected device (expand/collapse categories and packages); USB shows + NEW, SNARF, and LHOST chip in header
Modals CONFIG, REPOS, OPERATOR, SNARF (USB), About, Help
Right panel Preview, USB stick scan, FLASH / EDIT / SAVE
Bottom bar Command line (set lhost, clone ducky, devices, …)
H Help modal (operator guide)
A About modal

Keyboard shortcuts

Key Action
D B U L Jump to device (Ducky, Bunny, USB, Turtle)
C R O A H Config, Repos, Operator, About, Help
S SNARF builder (USB Dropper only)
f / Ctrl+Enter Flash
e Edit payload
Esc Close modals

Supported devices

Device Flash method
USB Dropper Web UI: scripts and lure packages to a plain USB stick
Rubber Ducky (OG) encoder.jar → SD card
Bash Bunny (OG) Mass storage → switch1 / switch2
LAN Turtle (OG) SSH/SCP push
Teensy 3.2 / 4.0 teensy_loader_cli with compiled .hex (sidebar shows when built-in sketch is present; flash needs .hex beside .ino)

Clone HAK5 libraries from the REPOS modal (sidebar R): clone ducky, clone bunny, clone turtle, clone all.


Project structure

TSK/
├── server.py           # Web server (start here)
├── web/index.html      # Web UI
├── web/tutorial.html   # In-app tutorial missions
├── web/static/         # Icons, branding, music drop folder
├── dropper/            # SnarfSnarf, lure builder, receiver
├── flash.py            # Flash engine
├── config.py           # Auth and per-operator config
├── repos.py            # Repo clone and indexing
├── users/              # Operator data
├── repos/              # Cloned payload libraries
├── snarfed/            # Phone-home catches (per-operator subdirs)
├── TESTING.md          # Lab testing guide
├── TESTING_CHECKLIST.md
├── RELEASE_ROADMAP.md
├── SECURITY.md         # Authorized use and disclosure
├── archive/tui/        # Archived TUI notes (removed; web UI only)
└── pyproject.toml

Support TSK

TSK is free and open source. If it helps in the field, a coffee keeps the lights on in Night City.

Buy me a coffee on Ko-fi

Every donation goes back into hardware and development. No paywalls, ever.

Bug reports and support

  • Bugs: GitHub Issues (use the bug report template)
  • Repro help: TESTING_CHECKLIST.md - cite the section you are on
  • Security issues in TSK: see SECURITY.md (responsible disclosure, not public issues for exploit details)
  • Questions / concerns: [email protected]
  • Expectations: best-effort support; be constructive - we squash bugs, not tolerate abuse

Enable Issues: On GitHub, open neur0sp1cy/TSKSettingsGeneralFeatures → enable IssuesSave. New issues will use the bug report template in .github/ISSUE_TEMPLATE/.


Dreamed up under the wet hot neon lights of Las Vegas.

About

TSK | The Skeleton Key - USB Dropper + HAK5 payload manager (Ducky, Bunny, Turtle). Web UI for browse, edit, flash, and phone-home payloads.

Topics

Resources

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages