Netcat (nc) 命令详解及示例

发布时间:2019-06-07

Netcat (nc) 命令详解及示例Netcat (nc) 命令详解及示例

Netcat(或nc)是一个命令行实用程序,它使用TCP或UDP协议跨网络连接读取和写入数据。 它是网络和系统管理员工具库中最强大的工具之一,它被认为是瑞士军刀网络工具。

Netcat 是跨平台的,可用于 Linux,macOS,Windows 和 BSD。 您可以使用Netcat来调试和监视网络连接,扫描开放端口,传输数据,作为代理等。 Netcat 软件包预先安装在 macOS 和流行的 Linux发行版上,如 Ubuntu,Debian等。

Netcat 语法

Netcat实用程序的最基本语法采用以下形式:

nc [options] host port

在Ubuntu上,您可以使用netcat或nc。 它们都是opencat版本的Netcat的符号链接。

默认情况下,Netcat将尝试启动到指定主机和端口的TCP连接。 如果要建立UDP连接,请使用-u选项:

nc -u host port

端口扫描

扫描端口是Netcat最常见的用途之一。 您可以扫描单个端口或端口范围。

例如,要扫描20-80范围内的开放端口,您将使用以下命令:

nc -z -v 10.10.8.8 20-80

扫描端口是Netcat最常见的用途之一。 您可以扫描单个端口或端口范围。

例如,要扫描20-80范围内的开放端口,您将使用以下命令:...

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused
...
nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

扫描端口是Netcat最常见的用途之一。 您可以扫描单个端口或端口范围。

例如,要扫描20-80范围内的开放端口,您将使用以下命令:

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

您还可以使用Netcat查找服务器软件及其版本。 例如,如果在默认SSH端口22上向服务器发送“EXIT”命令:

echo "EXIT" | nc 10.10.8.8 22

输出结果类似如下:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
Protocol mismatch.

要扫描UDP端口,只需在命令中添加-u选项,如下所示:

nc -z -v -u 10.10.8.8 20-80

在大多数情况下,对于复杂的端口扫描,Nmap是比Netcat更好的工具。

通过Netcat发送文件

通过创建基本客户端/服务器模型,Netcat可用于将数据从一个主机传输到另一个主机。

这可以通过将Netcat设置为侦听接收主机上的特定端口(使用-l选项),然后从其他主机建立常规TCP连接并通过它发送文件来实现。

在接收运行时,以下命令将打开端口5555以进行传入连接并将输出重定向到文件:

nc -l 5555 > file_name

从发送主机连接到接收主机并发送文件:

nc receiving.host.com 5555 < file_name

要传输目录,可以使用tar存档源主机上的目录,并在目标主机上提取存档。

在接收主机上设置Netcat工具以侦听端口5555上的传入连接。传入的数据通过管道传递给tar命令,该命令将提取存档:

nc -l 5555 | tar xzvf -

在发送主机上打包目录并通过连接到接收主机上的侦听nc进程发送数据:

tar czvf - /path/to/dir | nc receiving.host.com 5555

您可以在两端观看转移进度。 完成后,键入CTRL + C以关闭连接。

创建简单聊天服务器

在两个或多个主机之间创建在线聊天的过程与传输文件时的过程相同。

在第一台主机上启动Netcat进程以侦听端口5555:

nc -l 5555

从第二个主机运行以下命令以连接到侦听端口:

nc first.host.com 5555

现在,如果您键入消息并按ENTER键,它将显示在两台主机上。

要关闭连接,请键入CTRL + C.

执行HTTP请求

虽然有更好的HTTP请求工具,例如curl,但您也可以使用Netcat向远程服务器发送各种请求。

例如,要从OpenBSD网站检索Netcat手册页,您可以键入:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

包含HTTP标头和HTML代码的完整响应将打印在终端中。

写在最后

在本教程中,您学习了如何使用Netcat实用程序来建立和测试TCP和UDP连接。

有关更多信息,请访问Netcat手册页并阅读Netcat命令的所有其他强大选项。

如果您有任何问题或意见,请在下面留言。

标签:#Netcat,#nc

留言(0条)

我要发表看法

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接

若看不清,请点击更换

«- 点击按钮

一周热门