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.2.tar.gz (11.1 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.2-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: exchangertool-0.1.2.tar.gz
  • Upload date:
  • Size: 11.1 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.2.tar.gz
Algorithm Hash digest
SHA256 2e02e9f3136c83819838f7a95af9482d27a7dc89209f842c3b913b0a0df42bbc
MD5 6c8e358ba6d7f120d47c13341ff0fe01
BLAKE2b-256 984ff49c1b5088f706528b2f02ce182ce8fe33699662907971845127cc07578e

See more details on using hashes here.

Provenance

The following attestation bundles were made for exchangertool-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: exchangertool-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 11.3 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 718ce30f0992defbcc8affee7619531a2bdd4befa9366a7d73b09489fae7f897
MD5 c49d1ad1efe9d0c5cf6304c489ab60ea
BLAKE2b-256 7af55379970bbaeb2ad94bbceb2e5c0a2c3d139516033d0787be3006eca8f11e

See more details on using hashes here.

Provenance

The following attestation bundles were made for exchangertool-0.1.2-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