pync - documentation#
Name#
pync - arbitrary TCP and UDP connections and listens (Netcat for Python).
Synopsis#
pync [-46bCDdhklnruvz] [-c string] [-e filename] [-I length]
[-i interval] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source] [-T toskeyword] [-w timeout]
[-X proxy_protocol] [-x proxy_address[:port]]
[-Y pyfile] [-y pycode] [dest] [port]
py -m pync [-46bCDdhklnruvz] [-c string] [-e filename] [-I length]
[-i interval] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source] [-T toskeyword] [-w timeout]
[-X proxy_protocol] [-x proxy_address[:port]]
[-Y pyfile] [-y pycode] [dest] [port]
import pync
args = '''[-46bCDdhklnruvz] [-c string] [-e filename] [-I length]
[-i interval] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source] [-T toskeyword] [-w timeout]
[-X proxy_protocol] [-x proxy_address[:port]]
[-Y pyfile] [-y pycode] [dest] [port]'''
pync.run(args, stdin, stdout, stderr)
Description#
Inspired by the Black Hat Python book, the goal of pync was to create an easy to use library that provides Netcat-like functionality for Python developers.
Common uses include:
Installation#
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:
python -m pip install https://github.com/bw0rth/pync/archive/main.zip
py -m pip install https://github.com/bw0rth/pync/archive/main.zip
Usage#
Options#
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 |
Detach from stdin |
|
-e filename |
specify filename to exec after connect (use with caution). |
show available options and exit. |
|
-I length |
TCP receive buffer length |
-i secs |
Delay interval for lines sent, ports scanned |
Keep inbound sockets open for multiple connects |
|
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 |
UDP mode [default: TCP] |
|
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). |
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 |
API Reference#
Examples#
Example |
Description |
Simple chat protocol with a custom username |
|
Simple file upload (use with caution). |
|
Simple file download (use with caution). |
|
Echo client/server |
|
Simple TCP proxy server |
|
Reverse or bind python interpreter shell (use with caution). |
|
Simple TCP connect port scanner |
|
Reverse or bind remote system shell (use with caution). |
See Also#
Caveats#
UDP port scans will always succeed (i.e report the port as open), rendering the -uz combination of flags relatively useless.