Skip to main content

Serve local payload directories and generate transfer-ready HTTP or SMB targets.

Project description

payload-server

payload-server is a CLI for serving a local payload directory over HTTP or SMB and generating copyable transfer targets during pentest and red-team workflow.

It is designed to pair cleanly with artifact-locker pull:

artifact-locker pull
payload-server linux
payload-server windows 8000 443

By default it serves ~/tools/payloads:

~/tools/payloads/
├── linux/
│   └── pspy64
└── windows/
    ├── Invoke-ConPtyShell.ps1
    ├── PowerView.ps1
    ├── Rubeus.exe
    ├── RunasCs.exe
    └── nc.exe

Install

Preferred:

pipx install payload-server

Upgrade:

pipx upgrade payload-server

Uninstall:

pipx uninstall payload-server

For local development:

python3 -m venv .venv
. .venv/bin/activate
python3 -m pip install -e .

Usage

Use payload-server when you want to:

  • serve a local payload directory over HTTP
  • optionally expose the same directory over SMB
  • save the active serving context for follow-on commands
  • select a currently served file and copy its HTTP URL, SMB path, or local path

Serve Linux payloads over HTTP:

payload-server linux

Serve Windows payloads and write stage.ps1 into the Windows payload root:

payload-server windows 8000 443

Use SMB instead of HTTP:

payload-server windows --smb

Reuse the active serving context:

payload-server status
payload-server pick http
payload-server pick smb   # requires an active state started with --smb
payload-server pick local
payload-server pick ask

Behavior

  • Detects tun0, tun1, wg0, tap0, then eth0 for LHOST
  • Writes serving state to ~/.local/state/payload-server/state.json
  • Uses a fuzzy built-in HTTP server by default
  • Supports --updog and --plain-http as alternate HTTP backends
  • Uses impacket-smbserver or smbserver.py when --smb is enabled

Optional Runtime Tools

Some features depend on tools that are discovered at runtime instead of being hard install requirements:

  • rofi for interactive picking
  • wl-copy, xclip, or xsel for clipboard copy
  • tree for compact directory previews
  • updog for the alternate upload-capable HTTP backend
  • impacket-smbserver or smbserver.py for SMB serving
  • ip for interface and route based LHOST detection

If those tools are absent, the related feature fails with a direct error message while the rest of the CLI remains usable.

Relationship To artifact-locker

payload-server does not ship payloads. It serves a user-managed local directory. The intended workflow is:

  1. Curate and publish with artifact-locker
  2. Pull the approved mirror locally with artifact-locker pull
  3. Serve the synced directory with payload-server

Current artifact-locker builds keep the local payload tree flat (/windows/winpeas.exe, /windows/PowerView.ps1). payload-server now treats that flat tree as the primary layout. The fuzzy server still understands older caches that used nested directories, so short paths continue to work during migration.

Tests

./scripts/test.sh

Release

./scripts/release.sh patch

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

payload_server-0.1.5.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

payload_server-0.1.5-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file payload_server-0.1.5.tar.gz.

File metadata

  • Download URL: payload_server-0.1.5.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for payload_server-0.1.5.tar.gz
Algorithm Hash digest
SHA256 23f3cf79786c671c3b7132b3d01a71a638c1f156cd41a489b6ff54a204f99b9d
MD5 4c6bc64215fc077da235c7d6a27a68d4
BLAKE2b-256 49ec13e2a0289feccd0344377df2f3e52e0f83dd338dbe0b0f6512c30ba1877d

See more details on using hashes here.

Provenance

The following attestation bundles were made for payload_server-0.1.5.tar.gz:

Publisher: publish-pypi.yml on CameronCandau/Payload-Server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file payload_server-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: payload_server-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for payload_server-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 6a63ce809237a525eb76ef3595d7b0c44c962ce66dbc4a558e6eb204e6376289
MD5 71566b77a7595238238e08553c2c8e81
BLAKE2b-256 a7e04608a5aa612b478fd76339c636be25d4512779c0305ae77f2f95b4477cd8

See more details on using hashes here.

Provenance

The following attestation bundles were made for payload_server-0.1.5-py3-none-any.whl:

Publisher: publish-pypi.yml on CameronCandau/Payload-Server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page