Skip to main content

PFTP - Pentest File Transfer Protocols - CLI Tool

Project description

PFTP - Pentest File Transfer Protocols

A lightweight, multi-protocol file transfer CLI tool for penetration testers, ethical hackers, and CTF players. PFTP manages a dockerized server that runs HTTP, FTP, and SMB simultaneously, making it easy to transfer tools and exfiltrate data during security assessments.

Docker Image: ahmadalawneh3/pftp
GitHub: github.com/AhmadAlawneh3/PFTP

Table of Contents

Features

  • Multi-Protocol Support: HTTP, FTP, and SMB running simultaneously
  • Interactive Setup: Wizard-based installation and configuration
  • Web UI: Download command generation for PowerShell, wget, curl, bitsadmin, and base64
  • File Upload/Exfiltration: Built-in support for receiving files
  • Optional Authentication: Secure access across all protocols
  • Auto Network Detection: Prioritizes VPN/tun interfaces
  • Live Activity Logs: Real-time monitoring via SSE
  • Docker-Powered: Isolated, reproducible environment with configurable restart policies

Installation

Recommended (with pipx):

pipx install pftp

With pip:

pip install pftp

Requirements:

  • Python 3.8+
  • Docker

Usage

Initial Setup

Install and configure PFTP with the interactive wizard:

pftp install

The wizard will guide you through:

  • Directory configuration
  • Protocol selection (HTTP, FTP, SMB)
  • Authentication settings
  • Docker restart policy

Starting the Server

pftp start

Output:

✓ Server started

Server URLs:
  • HTTP:  http://192.168.1.100:1234
  • FTP:   ftp://192.168.1.100:21

Adding Tools

Add single files:

pftp add-tool /path/to/linpeas.sh

Add directories with categorization:

pftp add-tool /path/to/windows-tools/ --recursive --category windows
pftp add-tool /path/to/linux-tools/ --recursive --category linux

Checking Status

pftp status

Shows running status, enabled protocols, URLs, and configuration.

Managing the Server

# Stop the server
pftp stop

# Restart the server
pftp restart

# View live logs
pftp logs

# Reconfigure settings
pftp configure

Commands

Command Description
pftp install Install and configure PFTP (interactive wizard)
pftp start Start the server
pftp stop Stop the server
pftp restart Restart the server
pftp status Show server status and configuration
pftp configure Reconfigure settings (interactive or via flags)
pftp add-tool <path> Add files/directories to tools
pftp logs View server logs (live by default)
pftp update Update to latest version
pftp remove Uninstall PFTP
pftp version Show version information
pftp --help Show help for any command

Common Options

Configuration flags (for non-interactive setup):

pftp install --yes --http-port 8080 --enable-ftp --auth --auth-username admin
pftp configure --disable-smb --http-port 9000

Add-tool options:

pftp add-tool <file> [--category <name>] [--recursive]

Logs options:

pftp logs [--follow] [--lines <n>]

Requirements

  • Python: 3.8 or higher
  • Docker: Running Docker daemon
  • Operating System: Linux, macOS, or Windows with WSL2

License

MIT License - See LICENSE for details


Author: Ahmad Alawneh
Repository: github.com/AhmadAlawneh3/PFTP

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

pftp-2.0.5.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

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

pftp-2.0.5-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file pftp-2.0.5.tar.gz.

File metadata

  • Download URL: pftp-2.0.5.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pftp-2.0.5.tar.gz
Algorithm Hash digest
SHA256 f1ab6da8ff90e39b4119d1bd0a17e76353fca2cdcde5ed0062c05f69c491c63b
MD5 00affc9187dcccbd70153a9fe4ea71fa
BLAKE2b-256 441142f95c9493731c202646e4d79b44936b19cab26447677773296fbbf76162

See more details on using hashes here.

Provenance

The following attestation bundles were made for pftp-2.0.5.tar.gz:

Publisher: pypi-publish.yml on AhmadAlawneh3/PFTP

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

File details

Details for the file pftp-2.0.5-py3-none-any.whl.

File metadata

  • Download URL: pftp-2.0.5-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pftp-2.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f6bad0b2084ca33af021fb34a382ab632d166f451eb3ba53525f96fc96c2bf4f
MD5 c05fc918aff48ff704e5c0ec1f036670
BLAKE2b-256 520f789eab3d2fc956496a99f42df7bb86359ad0123099609cce3b0b2aa79ec5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pftp-2.0.5-py3-none-any.whl:

Publisher: pypi-publish.yml on AhmadAlawneh3/PFTP

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