identicon 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]
from pync 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(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:

  • simple TCP proxies

  • shell-script based HTTP clients and servers

  • network daemon testing

  • a SOCKS or HTTP ProxyCommand for ssh(1)

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/brenw0rth/pync/archive/main.zip
py -m pip install https://github.com/brenw0rth/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

-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

API Reference#

Examples#

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).

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).

See Also#

Caveats#

UDP port scans will always succeed (i.e report the port as open), rendering the -uz combination of flags relatively useless.