zoukankan      html  css  js  c++  java
  • nc用法小记

    By francis_hao    Jun 30,2017

     

    ncat:连接和重定向套接字

    概要

    ncat [OPTIONS...] [hostname] [port]

     

    描述

    ncat 是一个集成的网络工具包,从命令行通过网络读写数据。它被设计成一个提供即时连接到其他应用和用户的可靠性后端工具,ncat不仅仅工作于IPv4和IPv6,它提供给用户一个近乎无限数量的潜在用途。

    ncat提供了以下特性:重定向TCP、UDP和SCTP端口到其他站点,支持SSL,通过SOCKS4或HTTP的代理连接等。

    ncat 操作处于两种模式中的一种:连接模式和监听模式。其他模式,像HTTP代理服务器,处于这两种模式的特殊情形。在连接模式,ncat类似一个客户端,在监听模式,ncat类似一个服务器。

    在连接模式下,hostnameport参数指明应该连接到哪,hostname是需要的,它可能是一个域名或ip地址。如果有port,它一定是一个十进制的端口号。如果省略,默认是31337。

    在监听模式下,hostnameport指定服务器要绑定的地址。这两个参数都是可选的,如果省略了hostname,默认监听所有可获取的IPv4和IPv6地址。如果省略了port,默认为31337。

     

    选项

    选项

    说明

    协议选项

     

    -4

    仅使用IPv4

    -6

    仅使用IPv6

    -U, --unixsock

    使用Unix domain sockets而不是network sockets(见下文Unix domain sockets描述)

    -u, --udp

    使用UDP连接(默认是TCP)

    --sctp

    使用SCTP连接(默认是TCP)

    连接模式选项

     

    -g hop1[,hop2,…]

    为IPv4设置宽松源路由的下一跳,你可以使用一个-g带以逗号分隔的路由表,或者使用多个-g,每个-g带一个路由。或者这两者混合使用,hop可以是域名或者ip地址。

    -G ptr

    Set source routing pointer

    -p port, --source-port port

    设置要绑定的端口号

    -s host, --source host

    设置要绑定的地址

    监听模式选项

     

    -l, --listen

    进入监听模式

    -m numconns,

    --max-conns numconns

    ncat接受的最大的同时连接数。默认是100

    -k, --keep-open

    通常监听服务器只接收一个连接然后当连接关闭时退出。此选项可以使它同时接收多个连接,并且在这些连接关闭后继续监听其他连接。

    此选项必须和-l同时使用。

    在此模式下,ncat没办法知道网络输入什么时候终止,因此它会保持运行直到被打断,这也意味着它不会关闭它的输出流,因此任何读取ncat并等待EOF的程序都将会挂起。

    --broker

    允许多个分布的客户端连接到ncat服务器,并且和彼此通讯,ncat可以在不能直接连接(例如NAT下)的系统中进行中继通讯。

    此选项和-l选项同时使用,使监听端口使能中继功能。

    --chat

    使能对话功能,可以在多个用户间交换数据。此模式下,中继功能被打开。

    ncat 在每条消息前加上唯一的ID,以区分不同的客户端发送的不同的内容。

    另外,不可打印字符(例如控制字符)被避开,以防影响终端

    此选项的用法:

    服务器:nc -l –chat

    客户端1:nc server_ip

    客户端2:nc server_ip

    其中,服务器发消息时,客户端1、2均能收到,客户端1发消息时只有客户端2能收到,服务器不接收消息。

    SSL选项

     

    --ssl

    在连接模式,此选项显式的和SSL服务器协商会话以加密连接,这对和使能了SSL的HTTP服务器传输提供了便利。

    在服务器模式,此选项监听连入的SSL连接,而不是看起来乱糟糟的数据。

    --ssl-verify

    在客户端模式,--ssl-verify类似--ssl,但是它还需要验证服务器的证书。

    ncat带有一个默认的信任证书列表,在文件ca-bundle.crt里。--ssl-trustfile可以用以指定自定义的信任列表,使用-v一次或多次了解验证失败详情。

    ncat不验证吊销的证书。

    此选项对于服务器模式无意义。

    --ssl-cert certfile.pem

    此选项指定一个PEM编码的证书文件,用于认证服务器(监听模式)或客户端(连接模式)。一般和--ssl-key结合使用

    --ssl-key keyfile.pem

    指定用--ssl-cert指定的证书文件对应的私钥

    --ssl-trustfile cert.pem

    此选项设置一系列受信任的证书,若不指定--ssl-verify,则此选项无效,PEM文件里包含了受信任的证书,使用此选项后,ncat就不会使用默认的证书。

    代理选项

     

    --proxy host[:port]

    通过host:port指定请求的代理,使用的协议由--proxy-type指定

    如果没有指定的端口号,那么代理协议的众所周知端口将被使用(SOCKS的1080和HTTP的3128)。但是,当使用IP地址而不是主机名指定IPv6的HTTP代理服务时,端口号必须同时被指定,如果代理需要认证,那么使用--proxy-auth选项。

    --proxy-type proto

    在连接模式,这个选项使用协议proto连接到用—proxy指定的主机,在监听模式,用此指定的协议用作代理服务器。

    连接模式当前可使用的协议是http(CONNECT)和socks4(SOCKSv4)。作为服务器当前仅支持http。如果此项未使用,默认的协议是http

    --proxy-auth user[:pass]

    在连接模式,指定在连接服务器时会用到的身份验证信息。

    在监听模式,指定客户端在连接时需要提供的身份验证信息。

    若使用--proxy-type http,验证信息应该是user:pass,若使用--proxy-type socks4,验证信息只需要提供username。

    命令执行选项

     

    -e command,

    --exec command

    当连接已建立时执行指定的命令,命令必须以全路径名被指定,远端客户端所有的输入将被发送给该应用,并且回应会通过套接字返回给远端客户端,因此,让你的命令行应用通过套接字可交互。

    结合--keep-open选项,Ncat可以同时处理多个连接到你指定的端口/应用。

    Ncat只接受一个可定义的最大同时连接数(通过-m指定),默认这被设置未100。

    -c command,

    --sh-exec command

    类似-e,但是它会尝试通过/bin/sh执行命令,这意味着你不必为命令指定全路径,而且,shell相关的因子,例如环境变量是可获取的。

    --lua-exec file

    当连接建立时运行指定的作为lua脚本的文件,脚本的标准输入和标准输出都被重定向到连接的数据流。

    权限控制选项

     

    --allow host[,host,...]

    只允许指定的host列表连接到Ncat程序,所有其余的连接都会被拒绝。

    为防止--allow和--deny指定的host产生冲突,使用--allow选项优先。

    --allowfile file

    类似--allow,只不过被允许的host列表放在了以回车分割的文件里。

    --deny host[,host,...]

    拒绝主机列表

    --denyfile file

    主角主机列表文件

    时间选项

     

    -d time, --delay time

    设置发送行的延时间隔,这对特定时间段内发送数据量有作用,可用于低带宽的站点。

    默认时间单位是s,但是也可以显式的指明时间单位,例如ms,s,m和h。

    -i time,

    --idle-timeout time

    设置空闲超时时间,如果空闲超时时间到了,连接会被终止。

    -w time, --wait time

    设置尝试连接的超时时间

    输出选项

     

    -o file, --output file

    转储会话数据到文件

    -x file, --hex-dump file

    转储会话数据作为十六进制到文件

    --append-output

    当使用-o或-x选项并指定-append-ouput选项时,它将追加结果到文件而不是截短所指定的输出文件

    -v, --verbose

    进入"啰嗦模式",这将会显示很多有用的信息。使用多个(-vv,-vvv…)进入更"啰嗦"的模式。

    杂项

     

    -C, --crlf

    此选项使Ncat在和标准输入会话时,转换LF(Line-Feed,换行)到CRLF(Carriage-Return& Line-Feed,回车换行),这对一些严格的服务器来说很有用,因为它们只接受CRLF作为行尾。

    -h, --help

    显示帮助信息并退出

    --recv-only

    若指定此选项,Ncat将只接收数据而不会尝试去发送任何数据。

    --send-only

    只发送数据并忽略所有接收到的数据,此选项也会使得从标准输入接收到EOF时关闭连接并终止。

    -t, --telnet

    处理Telnet协商DO/DONT WILL/WONT,这使得Telnet会话脚本化。

    --version

    显示Ncat版本并退出。

     

    UNIX域套接字

    Unix域套接字作为文件系统项,你必须给要连接或监听的套接字指定一个名字。例如,准备一个连接:

    ncat -U ~/unixsock

    监听一个套接字

    ncat -l -U ~/unixsock

    如果套接字不存在,监听模式将会创建一个套接字。套接字将会继续存在,即使程序已结束。

     

    示例

    Connect to example.org on TCP port 8080.
    ncat example.org 8080

     

    Listen for connections on TCP port 8080.
    ncat -l 8080

     

    Redirect TCP port 8080 on the local machine to host on port 80.
    ncat --sh-exec "ncat example.org 80" -l 8080 --keep-open

     

    Bind to TCP port 8081 and attach /bin/bash for the world to access freely.
    ncat --exec "/bin/bash" -l 8081 --keep-open

     

    Bind a shell to TCP port 8081, limit access to hosts on a local network, and limit the maximum number of simultaneous connections to 3.
    ncat --exec "/bin/bash" --max-conns 3 --allow 192.168.0.0/24 -l 8081 --keep-open

     

    Connect to smtphost:25 through a SOCKS4 server on port 1080.
    ncat --proxy socks4host --proxy-type socks4 --proxy-auth user smtphost 25

     

    Create an HTTP proxy server on localhost port 8888.
    ncat -l --proxy-type http localhost 8888

     

    Send a file over TCP port 9899 from host2 (client) to host1 (server).
    HOST1$ ncat -l 9899 > outputfile
    HOST2$ ncat HOST1 9899 < inputfile

     

    Transfer in the other direction, turning Ncat into a "one file" server.
    HOST1$ ncat -l 9899 < inputfile
    HOST2$ ncat HOST1 9899 > outputfile

     

     


    本文由 刘英皓 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
    转载自: http://www.cnblogs.com/yinghao1991/p/7100663.html

     

    参考

    【1】 man nc

  • 相关阅读:
    Java启动工程时,加载固定数据到Map中(不用每次访问数据库)
    Java删除文件夹和其子文件、文件的拷贝和剪切
    EasyExcel导入工具(SpringMVC下使用)
    web工程启动时,在一个类中延迟加载Bean,因为该Bean类可能还没被JVM加载
    ECharts访问后台,JSON格式返回数据实例
    Java 实现缓存,一个线程存,一个线程取
    IE浏览器使用VLC实时显示视频(海康、大华)
    Windows和Linux下 Java开发ping工具类
    Quartz定时器+Spring + @Autowired注入 空指针异常
    ubuntu 安装mysql
  • 原文地址:https://www.cnblogs.com/yinghao-liu/p/7100663.html
Copyright © 2011-2022 走看看