这是 nc.openbsd 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
nc — 任意 TCP 和 UDP 连接和侦听
概要
nc [-46bCDdhklnrStUuvZz[-I 长度[-i 间隔[-O 长度[-P 代理用户名]
[-p 源端口[-q 秒[-s 资源[-T 关键字[-V 表格[-w 超时]
[-X 代理协议[-x 代理地址[:端口]][目的地[端口]
商品描述
这个 nc (或 netcat的) 实用程序几乎用于任何涉及 TCP、UDP、
或 UNIX 域套接字。 它可以打开 TCP 连接,发送 UDP 数据包,监听任意
TCP和UDP端口,做端口扫描,同时处理IPv4和IPv6。 不像 远程登录(1) nc
脚本很好,并将错误消息分离到标准错误而不是将它们发送到
标准输出,如 远程登录(1) 做一些。
常见用途包括:
· 简单的 TCP 代理
· 基于 shell 脚本的 HTTP 客户端和服务器
· 网络守护进程测试
· SOCKS 或 HTTP ProxyCommand 用于 SSH(1)
· 还有更多
选项如下:
-4 部队 nc 仅使用 IPv4 地址。
-6 部队 nc 仅使用 IPv6 地址。
-b 允许广播。
-C 发送 CRLF 作为行尾。
-D 在套接字上启用调试。
-d 不要尝试从标准输入读取。
-h 打印出来 nc 帮助。
-I 长度
指定 TCP 接收缓冲区的大小。
-i 间隔
指定发送和接收的文本行之间的延迟时间间隔。 还
导致连接到多个端口之间的延迟时间。
-k 部队 nc 在当前连接结束后继续侦听另一个连接
完全的。 使用此选项而没有 -l 选项。
-l 用于指定 nc 应该监听传入的连接而不是
启动到远程主机的连接。 在以下情况下使用此选项是错误的
与 -p, -s或 -z 选项。 此外,指定的任何超时
与 -w 选项被忽略。
-n 不要对任何指定的地址、主机名或端口进行任何 DNS 或服务查找。
-O 长度
指定 TCP 发送缓冲区的大小。
-P 代理用户名
指定要提供给需要身份验证的代理服务器的用户名。 如果
未指定用户名,则不会尝试进行身份验证。 代理
目前仅 HTTP CONNECT 代理支持身份验证。
-p 源端口
指定源端口 nc 应该使用,受特权限制和
可用性。
-q 秒
在 stdin 上的 EOF 之后,等待指定的秒数,然后退出。 如果 秒
是否定的,永远等待。
-r 指定应随机选择源和/或目标端口而不是
在一个范围内或按照系统分配的顺序。
-S 启用 RFC 2385 TCP MD5 签名选项。
-s 资源
指定用于发送数据包的接口的 IP。 为了
UNIX 域数据报套接字,指定要创建的本地临时套接字文件
并使用以便可以接收数据报。 在以下情况下使用此选项是错误的
与 -l 选项。
-T 关键字
更改 IPv4 TOS 值。 关键字 可能是其中之一 危急, 网络控制, 低成本,
低延迟, 网络控制, 吞吐量, 可靠性,或 DiffServ 代码点之一:
ef, af11 ... af43, cs0 ... cs7; 或十六进制或十进制的数字。
-t 原因 nc 发送 RFC 854 DON'T 和 WON'T 对 RFC 854 DO 和 WILL 请求的响应。
这使得可以使用 nc 编写 telnet 会话脚本。
-U 指定使用 UNIX 域套接字。
-u 使用 UDP 而不是 TCP 的默认选项。 对于 UNIX 域套接字,请使用
数据报套接字而不是流套接字。 如果使用 UNIX 域套接字,则
临时接收套接字创建于 / tmp目录 除非 -s 标志给出。
-V 表格
设置要使用的路由表。 默认值为 0。
-v 有 nc 给出更详细的输出。
-w 超时
无法建立或空闲超时后的连接 超时 秒。
这个 -w 标志对 -l 选项,即 nc 会永远听一个
连接,有或没有 -w 旗帜。 默认是没有超时。
-X 代理协议
要求 nc 与代理服务器交谈时应使用指定的协议。
支持的协议有“4”(SOCKS v.4)、“5”(SOCKS v.5)和“connect”(HTTPS)
代理)。 如果未指定协议,则使用 SOCKS 版本 5。
-x 代理地址[:端口]
要求 nc 应该连接到 目的地 使用代理在 代理地址 和
端口。 如果 端口 未指定,使用代理协议的知名端口
(SOCKS 为 1080,HTTPS 为 3128)。
-Z DCP 模式。
-z 规定 nc 应该只扫描监听守护进程,而不发送任何数据
给他们。 将此选项与 -l 选项。
目的地 可以是数字 IP 地址或符号主机名(除非 -n 选项是
给)。 通常,必须指定目的地,除非 -l 给出了选项(在
在这种情况下使用本地主机)。 对于 UNIX 域套接字,需要一个目的地并且
是要连接到的套接字路径(或侦听,如果 -l 选项已给出)。
端口 可以是单个整数或端口范围。 范围的格式为 nn-mm。 在
通常,必须指定目标端口,除非 -U 给出了选项。
客户端服务器 型号
使用以下命令构建一个非常基本的客户端/服务器模型非常简单 nc. 在一个控制台上,
开始 nc 侦听特定端口以进行连接。 例如:
$ 数控 -l 1234
nc 现在正在侦听端口 1234 以进行连接。 在第二个控制台(或第二个
机器),连接到被监听的机器和端口:
$ 数控 127.0.0.1 1234
现在端口之间应该有连接。 在第二个控制台输入的任何内容
将连接到第一个,反之亦然。 建立连接后, nc
并不真正关心哪一边被用作“服务器”,哪一边被用作
一个客户'。 可以使用 EOF ('^D') 终止连接。
没有 -c or -e 此 netcat 中的选项,但您仍然可以在之后执行命令
通过重定向文件描述符建立连接。 这里要小心,因为
打开一个端口并让任何连接的人在您的站点上执行任意命令是危险的。
如果你真的需要这样做,这里有一个例子:
在“服务器”端:
$ rm -f /tmp/f; mkfifo /tmp/f
$ 猫 /tmp/f | / bin / sh的 -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
在“客户端”方面:
$ nc 主机.example.com 1234
$(来自 host.example.com 的 shell 提示)
通过这样做,您在 /tmp/f 处创建了一个 fifo 并使 nc 监听地址的 1234 端口
“服务器”端的 127.0.0.1,当“客户端”成功建立到该连接时
港口, / bin / sh的 在“服务器”端执行,并将 shell 提示提供给“客户端”端。
当连接终止时, nc 也退出。 用 -k 如果你想让它继续听,但是
如果命令退出此选项不会重新启动它或保留 nc 跑步。 也不要忘记
一旦不再需要文件描述符,请删除它:
$ rm -f /tmp/f
数据 TRANSFER
可以扩展上一节中的示例来构建基本的数据传输模型。
任何输入到连接一端的信息都会输出到另一端,并且
可以轻松捕获输入和输出以模拟文件传输。
开始使用 nc 侦听特定端口,并将输出捕获到文件中:
$ nc -l 1234 > 文件名.out
使用第二台机器,连接到监听 nc 处理,将文件提供给它
被转移:
$ nc host.example.com 1234 < 文件名.in
文件传输完毕后,连接将自动关闭。
说 TO 处理器
有时“手动”而不是通过用户界面与服务器对话很有用。
当可能需要验证服务器是什么数据时,它可以帮助进行故障排除
发送响应客户端发出的命令。 例如,找回家
一个网站的页面:
$ printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80
请注意,这还会显示 Web 服务器发送的标头。 他们可以过滤,
使用诸如 口渴(1),如有必要。
当用户知道请求的格式时,可以构建更复杂的示例
服务器需要。 再举一个例子,一封电子邮件可能会被提交到一个 SMTP 服务器
使用:
$ nc [-C] 本地主机 25 << EOF
HELO 主机.example.com
发件人:[email protected]>
RCPT 至:[email protected]>
数据
电子邮件正文。
.
放弃
EOF
PORT 扫描
了解哪些端口是开放的并在目标机器上运行服务可能很有用。 这
-z 标志可以用来告诉 nc 报告打开的端口,而不是启动连接。
通常通过结合使用此选项来打开详细输出到 stderr 很有用
- -v 选项。
例如:
$ nc -zv 主机.example.com 20-30
连接到 host.example.com 22 端口 [tcp/ssh] 成功!
连接到 host.example.com 25 端口 [tcp/smtp] 成功!
指定端口范围以将搜索限制为端口 20 - 30,并由
递增顺序。
您还可以指定要扫描的端口列表,例如:
$ nc -zv 主机.example.com 80 20 22
nc: 连接到 host.example.com 80 (tcp) 失败:连接被拒绝
nc: 连接到 host.example.com 20 (tcp) 失败:连接被拒绝
连接到 host.example.com 端口 [tcp/ssh] 成功!
端口按您提供的顺序进行扫描。
或者,了解正在运行的服务器软件以及哪些服务器软件可能很有用
版本。 此信息通常包含在问候横幅中。 为了
找回这些,要先建立连接,再断开连接
当横幅被检索时。 这可以通过指定一个小的超时来完成
与 -w 标志,或者可能通过向服务器发出“退出”命令:
$ echo "退出" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2
协议不匹配。
220 host.example.com IMS SMTP 接收器版本 0.84 就绪
示例
打开一个到host.example.com 42端口的TCP连接,使用31337端口作为源端口,
超时为 5 秒:
$ nc -p 31337 -w 5 主机.example.com 42
打开到 host.example.com 的 53 端口的 UDP 连接:
$ nc -u 主机.example.com 53
使用 42 作为本地 IP 打开到 host.example.com 的端口 10.1.2.3 的 TCP 连接
连接结束:
$ nc -s 10.1.2.3 主机.example.com 42
创建并侦听 UNIX 域流套接字:
$ nc -lU /var/tmp/dsocket
通过 42 端口 10.2.3.4 处的 HTTP 代理连接到 host.example.com 的端口 8080。这
示例也可以由 SSH(1); 见 代理命令 指令在 ssh_配置(5)
更多信息。
$ nc -x10.2.3.4:8080 -Xconnect host.example.com 42
同样的例子,这次使用用户名“ruser”启用代理身份验证,如果
代理需要它:
$ nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42
使用onworks.net服务在线使用nc.openbsd