pync - arbitrary TCP and UDP connections and listens (Netcat for Python).
Unix
pync [-46bCDdhklnruvz] [-c string] [-e filename] [-I length]
[-i interval] [-O length] [-P proxyuser] [-p source_port]
[-q seconds] [-s source] [-T keyword] [-w timeout]
[-X proto] [-x addr[:port]]
[-Y pyfile] [-y pycode] [dest] [port]
Windows
py -m pync [-46bCDdhklnruvz] [-c string] [-e filename] [-I length]
[-i interval] [-O length] [-P proxyuser] [-p source_port]
[-q seconds] [-s source] [-T keyword] [-w timeout]
[-X proto] [-x addr[:port]]
[-Y pyfile] [-y pycode] [dest] [port]
Python
import pync
args = '''[-46bCDdhklnruvz] [-c string] [-e filename] [-I length]
[-i interval] [-O length] [-P proxyuser] [-p source_port]
[-q seconds] [-s source] [-T keyword] [-w timeout]
[-X proto] [-x addr[:port]]
[-Y pyfile] [-y pycode] [dest] [port]'''
pync.run(args, stdin, stdout, stderr)
Inspired by the Black Hat Python book,
the goal of pync is to create an easy to use library that
provides Netcat-like functionality for Python developers.
Common uses include:
- simple TCP proxies
- python-script based HTTP clients and servers
- network daemon testing
- a SOCKS or HTTP ProxyCommand for ssh(1)
pync should work on any system with Python installed (version 2.7 or higher).
Use Python's pip command to install pync straight from github:
Unix
python -m pip install https://github.com/bw0rth/pync/archive/main.zip
Windows
py -m pip install https://github.com/bw0rth/pync/archive/main.zip
- Client/Server Model
- Data Transfer
- Talking to Servers
- Port Scanning
- Remote Command Execution
- Remote Code Execution
- pync For Developers
Option | Description |
---|---|
-4 | Use IPv4 addresses only |
-6 | Use IPv6 addresses only |
-b | Allow broadcast |
-C | Send CRLF as line-ending |
-c string | specify shell commands to exec after connect (use with caution). |
-D | Enable the debug socket option |
-d | Detach from stdin |
-e filename | specify filename to exec after connect (use with caution). |
-h, --help | show available options and exit. |
-I length | TCP receive buffer length |
-i secs | Delay interval for lines sent, ports scanned |
-k | Keep inbound sockets open for multiple connects |
-l | Listen mode, for inbound connects |
-n | Suppress name/port resolutions |
-O length | TCP send buffer length |
-P proxy_username | Username for proxy authentication |
-p source_port | Specify local port for remote connects |
-q seconds | quit after EOF on stdin and delay of seconds |
-r | Randomize remote ports |
-s source | Local source address |
-T toskeyword | Set IP Type of Service |
-u | UDP mode [default: TCP] |
-v | Verbose |
-w secs | Timeout for connects and final net reads |
-X proxy_protocol | Proxy protocol: "4", "5" (SOCKS) or "connect" |
-x proxy_address[:port] | Specify proxy address and port |
-Y pyfile | specify python file to exec after connect (use with caution). |
-y pycode | specify python code to exec after connect (use with caution). |
-z | Zero-I/O mode [used for scanning] |
dest | The destination host name or ip to connect or bind to |
port | The port number to connect or bind to |
Example | Description |
---|---|
chat.py | Simple chat protocol with a custom username |
upload.py | Simple file upload (use with caution). |
download.py | Simple file download (use with caution). |
echo.py | Echo client/server |
proxy.py | Simple TCP proxy server |
pyshell.py | Reverse or bind python interpreter shell (use with caution). |
scan.py | Simple TCP connect port scanner |
shell.py | Reverse or bind remote system shell (use with caution). |
sock.py | Using sockets with pync |
UDP port scans will always succeed (i.e report the port as open), rendering the -uz combination of flags relatively useless.