nc 监听数据_nc命令使用解析大全
发布日期:2021-06-24 15:58:37 浏览次数:2 分类:技术文章

本文共 3337 字,大约阅读时间需要 11 分钟。

名称

nc - 任意的TCP和UDp连接与监听工具

概要

nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]

[-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x

proxy_address[:port]] [hostname] [port[s]]

描述

nc(或者netcat)的用途是被用来做关于TCP或者UDP协议的事情。可以打开TCP连接,发送UDP包,监听任意的TCP或者UDP端口,做端口扫描,处理IPv4或者IPv6。它不像telnet(1), nc脚本优美且在标准错误端会有单独的错误提示信息,而不是把这些错误发送给标准输出(telnet就这么干的)

通常这样使用:

.·   简单的TCP代理

.·   基于shell脚本的HTTP客户端和服务端

.·   网络程序测试

.·   ssh的SOCKS或者HTTp代理命令

.·   等等

下面是所有选项:

-4      强制nc只能使用IPv4地址。

-6      强制nc只能使用IPv6地址。

-D      在socket上开启debugging功能

-d      不从标准输入中读取任何消息

-h      帮助选项

-i interval

在文本行之间的发送或接受,指定一个延迟时间间隔。 也会产生多个端口间的连接有延迟时间。

-k

强制nc保持监听其他连接,在它当前的连接完成之后。 如果不和-l选项一起使用,会有错误。

-l

通常用来指定nc监听,而不是创建一个连接到远程主机。 如果不与-p, -s或者-z选项一起使用的话,会有错误。另外,如果用-w指定超时选项的话,会被忽略。

-n

不使用DNS或者服务不做任何地址,主机名或者端口的查询

-p source_port

指定nc使用的源端口,来服从权限约束和授权。与-l选项一起使用会产生错误。

-r

指定源 和/或 目的端口是随机选择的,而不是系统按照一个范围或者顺序分配的。

-S

开启RFC 2385 TCP MD5签名选项。

-s source_ip_address

指定发送包的IP接口,与-l选项使用会有错误。

-T ToS

为连接指定IP的服务类型(ToS)。有效的值是令牌“lowdelay”, “throughput”, “reliability”, 或者以“0x”开头的8位的十六进制值。

-C      发送CRLF做为行尾符

-t

让nc发送RFC 854 不要和将不要响应RFC 854要或者将要的请求。这使得nc可以脚本化telnet会话过程。

-U      使用Unix Domain Sockets

-u      使用UDP替代默认的TCP选项

-v      详细信息输出模式

-w timeout

如果连接和标准输入空闲时间超过了超时时间(单位秒),那么连接就好被静默关闭。-w标志对-l选项没影响,比如nc将要永久监听一个连接,使用或者不使用-w标志都可以。默认是没有超时的。

-X proxy_version

与代理服务器交互时的请求,nc必须使用指定的协议。支持的协议是“4” (SOCKS v.4), “5” (SOCKS v.5)和“connect” (HTTPS proxy)。 如果协议不指定,SOCKS版本5将被使用。

-x proxy_address[:port]

请求时,nc必须连接一个使用代理地址和端口的代理做为主机名。如果端口没有被指定,那么众所周知的端口将为代理协议所使用(1080 for SOCKS, 3128 for HTTPS)

-z

指定nc只是扫描监听进程,不发送任何数据给它们。 与-l选项一起使用会有错误。

主机名可以是IP地址或者字符的主机名(除非使用了-n选项)。通常一个主机名必须被指定的(没有指定主机名的都会使用localhost),除非使用了-l选项。

端口可以是单独一个整数或者一个范围。 范围是nn-mm这种格式。通常一个目的端口必须被指定,除非使用了-U选项(这种情况下是指定了socket了)

客户端/服务端 模式

使用nc来构造一个基本的客户端/服务端 模式是很简单的。

在一个控制台,使用nc监听一个指定端口。

例如:

$ nc -l 1234

nc此刻就监听了1234端口。在第二个控制台(或者第二台机器上),连接到监听的机器和端口上:

$ nc 127.0.0.1 1234

端口间就会有个连接了。第二个控制端上面的任何输入都会传送到第一个上面,反之亦然。

在连接被建立之后,nc是不管哪边是服务端哪边是客户端的。使用EOF(‘^D’)可以中断连接。

数据传输

上面的章结可以扩展来构建一个基本的数据传输模式。 在其中一个连接端的任何信息的输入都可以在另外一端输出,而去输入和输出都可以被轻松的捕捉来模拟文件传输。

使用nc监听一个端口,捕捉到的输出重定向到一个文件中。$ nc -l 1234 > filename.out

第二台机器,连接到nc进程,导入一个文件数据来传输。$ nc host.example.com 1234 

文件传输完成之后,连接会被自动关闭的。

服务交互

有时候手动与服务器交互相比较使用用户接口是比较有用的。在troubleshooting的时候很有帮助。比如,接收web站点的主页时:

$ echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

这也会显示web服务器发送的头部信息。如果需要的话是可以过滤的,使用比如sed这类命令

当用户指定服务器需要的请求格式时,可以构建更加复杂的例子,比如,提交到SMTP服务器的内容:$ nc [-C] localhost 25 <

HELO host.example.com

MAIL FROM: 

RCPT TO: 

DATA

Body of email.

.

QUIT

EOF

端口扫描

可以用来了解目标机器上哪些端口是打开的或者服务在运行。-z标志告诉nc报告打开的端口,而不是初始化一个连接。比如:$ nc -z host.example.com 20-30

Connection to host.example.com 22 port [tcp/ssh] succeeded!

Connection to host.example.com 25 port [tcp/smtp] succeeded!

端口范围被指定限制在20-30端口之间去搜索

可选择的,可以获取到指定服务器有哪些软件在运行,是什么版本。这些信息通常包括在问候条里面。为了获取这些信息,先得建立一个连接,然后在条目信息被获取到的时候关闭这个连接。使用-w可以指定超时,或者可以使用"QUIT"来结束。$ echo "QUIT" | nc host.example.com 20-30

SSH-1.99-OpenSSH_3.6.1p2

Protocol mismatch.

220 host.example.com IMS SMTP Receiver Version 0.84 Ready

例子

打开host.example.com的42端口建立TCP连接,使用端口31337做为源端口,超时5秒$ nc -p 31337 -w 5 host.example.com 42

建立与host.example.com的53端口的UDP连接$ nc -u host.example.com 53

使用本地ip为10.1.2.3与host.example.com的42端口建立连接:$ nc -s 10.1.2.3 host.example.com 42

使用Unix Domain Socket创建和监听:$ nc -lU /var/tmp/dsocket

通过10.2.3.4的8080端口做为HTTP代理,与host.example.com的42端口建立连接。这个例子通常被ssh来使用。$ nc -x10.2.3.4:8080 -Xconnect host.example.com 42

转载地址:https://blog.csdn.net/weixin_33701632/article/details/111976057 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:简述tcp协议三报文握手过程_TCP协议中的三次握手和四次挥手(图解)
下一篇:linux正向连接shell_[经验] Linux 怎么连接 Xshell?

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月19日 04时58分42秒