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类似一个服务器。
在连接模式下,hostname和port参数指明应该连接到哪,hostname是需要的,它可能是一个域名或ip地址。如果有port,它一定是一个十进制的端口号。如果省略,默认是31337。
在监听模式下,hostname和port指定服务器要绑定的地址。这两个参数都是可选的,如果省略了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
nc用法小记的更多相关文章
- [转]HttpClient的超时用法小记
HttpClient的超时用法小记 HttpClient在使用中有两个超时时间,是一直接触和使用的,由于上次工作中使用httpClient造成了系统悲剧的情况,特地对它的两个超时时间进行了小小的测试, ...
- Matlab norm 用法小记
Matlab norm 用法小记 matlab norm (a) 用法以及实例 norm(A,p)当A是向量时norm(A,p) Returns sum(abs(A).^p)^(1/p), for ...
- linux expect, spawn用法小记
linux expect, spawn用法小记_IT民工_百度空间 linux expect, spawn用法小记 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://sys ...
- [转载]expect spawn、linux expect 用法小记
原文地址:expect spawn.linux expect 用法小记作者:悟世 使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写 ...
- Shell常见用法小记
shell的简单使用 最近发现shell脚本在平常工作中简直算一把瑞士军刀,很多场景下用shell脚本能实现常用的简单需求,而之前都没怎么学习过shell,就趁机把shell相关的语法和常见用法总结了 ...
- linux监控命令nc用法
一.nc命令检测端口的用法 # nc -v -w 10 %IP% -z %PORT% -v 显示指令执行过程. -w <超时秒数> 设置等待连线的时间. -u 表示使用UDP协议 -z 使 ...
- nc用法【转】
linux nc命令使用详解 功能说明:功能强大的网络工具 语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o& ...
- Linq用法小记
一.什么是Linq? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. ...
- ss命令用法小记
By francis_hao Nov 4,2017 ss是一个查看socket的实用工具 概要 ss [options] [ FILTER ] 描述 ss可以查看socket的统计信息, ...
随机推荐
- (数据科学学习手札18)二次判别分析的原理简介&Python与R实现
上一篇我们介绍了Fisher线性判别分析的原理及实现,而在判别分析中还有一个很重要的分支叫做二次判别,本文就对二次判别进行介绍: 二次判别属于距离判别法中的内容,以两总体距离判别法为例,对总体G1,, ...
- react中事件冒泡之填坑
今天在写个组件,大致代码是这样的: class Switch extends React.Component { handlerChange = (e) => { const {onChange ...
- HTML5 + JS 调取摄像头拍照下载
<video id="video" width="640" height="480" autoplay></video&g ...
- 20145202 2016-2017-2 《Java程序设计》第一周学习总结
20145202 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 java是SUN公司推出的面相网络的编程语言. 特点:完全面向对象,与平台无关,跨平台性(例 ...
- js字符串操作函数
js字符串函数 JS自带函数 concat 将两个或多个字符的文本组合起来,返回一个新的字符串. var a = "hello"; var b = ",world&quo ...
- ORB-SLAM 代码笔记(三)tracking原理
ORB视觉里程计主体在tracking线程中
- 步骤:asp.net core中使用identifyserver4颁发令牌
使用IdentityServer4颁发令牌基本步骤如下: 在 Startup.Configure 方法调用 app.UseIdentityServer ,添加IdentityServer4到应用的 H ...
- Chrome也疯狂之Vimium插件
Chrome也疯狂之安装Vimium插件 由于最近换上了Mac,深感外设的累赘,脱离了外接鼠标以及键盘之后发现操作更加的流畅了(可怜我入手不到一年的机械键盘).当然脱离鼠标用触摸板来操作浏览器有时候还 ...
- zabbix 通过key(键值)获取信息
在agent端进行修改264行,例如: UserParameter=get.os.type,head -1 /etc/issue 保存重启agent 验证 zabbix_get -s IP -k ge ...
- Python全栈 MongoDB 数据库(数据的修改)
修改操作符的使用 $set 修改一个域的值,增加一个域 阿哲年龄修改为33 db.class1.update({name:'阿哲'},{$set:{age:33}}) 如果sex域不存在则 ...