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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1ab6da8ff90e39b4119d1bd0a17e76353fca2cdcde5ed0062c05f69c491c63b
|
|
| MD5 |
00affc9187dcccbd70153a9fe4ea71fa
|
|
| BLAKE2b-256 |
441142f95c9493731c202646e4d79b44936b19cab26447677773296fbbf76162
|
Provenance
The following attestation bundles were made for pftp-2.0.5.tar.gz:
Publisher:
pypi-publish.yml on AhmadAlawneh3/PFTP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pftp-2.0.5.tar.gz -
Subject digest:
f1ab6da8ff90e39b4119d1bd0a17e76353fca2cdcde5ed0062c05f69c491c63b - Sigstore transparency entry: 952858403
- Sigstore integration time:
-
Permalink:
AhmadAlawneh3/PFTP@4fc6e30f20e18b92d9e4d96ee288fe86ea9f3a0b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AhmadAlawneh3
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@4fc6e30f20e18b92d9e4d96ee288fe86ea9f3a0b -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6bad0b2084ca33af021fb34a382ab632d166f451eb3ba53525f96fc96c2bf4f
|
|
| MD5 |
c05fc918aff48ff704e5c0ec1f036670
|
|
| BLAKE2b-256 |
520f789eab3d2fc956496a99f42df7bb86359ad0123099609cce3b0b2aa79ec5
|
Provenance
The following attestation bundles were made for pftp-2.0.5-py3-none-any.whl:
Publisher:
pypi-publish.yml on AhmadAlawneh3/PFTP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pftp-2.0.5-py3-none-any.whl -
Subject digest:
f6bad0b2084ca33af021fb34a382ab632d166f451eb3ba53525f96fc96c2bf4f - Sigstore transparency entry: 952858484
- Sigstore integration time:
-
Permalink:
AhmadAlawneh3/PFTP@4fc6e30f20e18b92d9e4d96ee288fe86ea9f3a0b -
Branch / Tag:
refs/heads/main - Owner: https://github.com/AhmadAlawneh3
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@4fc6e30f20e18b92d9e4d96ee288fe86ea9f3a0b -
Trigger Event:
push
-
Statement type: