Skip to main content

Minimal CLI to send or receive files over HTTP or SMB.

Project description

🔄 Exchanger (exchangertool)

PyPI version License: MIT

Exchanger is a fast, lightweight, and flexible Python Command Line Interface (CLI) utility designed to streamline file transfers, payload delivery, and data exchange between machines.

Whether you are a system administrator moving files or a security professional leveraging LOLBAS/GTFOBins during an engagement, exchangertool provides a seamless way to host and transfer your data.

✨ Features

  • Quick Setup: Spin up a file exchange server in seconds.
  • Cross-Platform Target Support: Easily serves files to Windows (certutil, curl, PowerShell, iwr, bitsadmin) and Linux (wget, curl, bash) targets.
  • Standalone CLI: Runs smoothly from any terminal.
  • Isolated Installation: Perfectly compatible with pipx to avoid polluting your system Python environment.

📦 Installation

The recommended way to install exchangertool is using pipx. This installs the tool globally in an isolated virtual environment.

pipx install exchangertool

Using with sudo

pipx installs the tool in your user directory (e.g. ~/.local/bin). When you run sudo exchanger, the root user does not see that path, so the command may not be found or may run a different binary.

Options:

  • Use the full path so root runs your installed binary:
    sudo "$(which exchanger)" serve --port 80
    
  • Install system-wide when you need to run as root often:
    sudo pip install exchangertool
    
  • Bind to port 80 without sudo (Linux) by giving the binary permission to bind to low ports:
    sudo setcap 'cap_net_bind_service=+ep' "$(which exchanger)"
    
    Then run exchanger serve --port 80 as your normal user.

🚀 Usage

Once installed, you can trigger the tool directly from your command line.

exchanger

🛠️ Help menu

usage: exchanger [-h] {serve,receive} ...

___________             .__                                        
\_   _____/__  ___ ____ |  |__ _____    ____    ____   ___________ 
 |    __)_\  \/  // ___\|  |  \\__  \  /    \  / ___\_/ __ \_  __ \
 |        \>    <\  \___|   Y  \/ __ \|   |  \/ /_/  >  ___/|  | \/
/_______  /__/\_ \\___  >___|  (____  /___|  /\___  / \___  >__|   
        \/      \/    \/     \/     \/     \//_____/      \/       

Serve files or listen to receive (target POSTs to host). Default port 80.

positional arguments:
  {serve,receive}  command (default: serve)
    serve          serve current directory; others can send/receive (default)
    receive        listen for target to POST file to you

options:
  -h, --help       show this help message and exit

examples:
  exchanger                    (same as serve)
  exchanger serve              (target can GET or POST)
  exchanger receive            (host listens; target POSTs file to you)
  exchanger receive --dir /tmp --port 80

🤝 Contributing

Contributions, bug reports, and feature requests are always welcome! Feel free to check out the issues page if you have ideas for new features or find a bug.

📝 License

This project is licensed under the MIT License.

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

exchangertool-0.1.3.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

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

exchangertool-0.1.3-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file exchangertool-0.1.3.tar.gz.

File metadata

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

File hashes

Hashes for exchangertool-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0aba90d2c750907008aba04c7f34630c5f779a957480026c81364aef5b57beb1
MD5 046700da4209ca38f0349d1095fcd6db
BLAKE2b-256 25010b3000aae3314392d5e8cc554c099394b4f408336d708eebd33357ebabd4

See more details on using hashes here.

Provenance

The following attestation bundles were made for exchangertool-0.1.3.tar.gz:

Publisher: publish.yml on didntchooseaname/exchanger

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

File details

Details for the file exchangertool-0.1.3-py3-none-any.whl.

File metadata

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

File hashes

Hashes for exchangertool-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 97adafd019172d227f4610a364cfa26d69c6fa9fe3b8e3fac499dda5ebf09613
MD5 c6615edd23e31e121639b71ebb96b9cf
BLAKE2b-256 82e94b523b953bcb1f6471860bdf88d7397c4a78f2c491b45d406c8da3b51f86

See more details on using hashes here.

Provenance

The following attestation bundles were made for exchangertool-0.1.3-py3-none-any.whl:

Publisher: publish.yml on didntchooseaname/exchanger

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