Netcat(nc)命令教程

Netcat是一种用于创建、连接网络连接的计算机网络工具。Netcat也缩写为nc。Netcat工具支持TCP和UDP协议。即使它并不复杂,它也是系统管理员、网络管理员和安全专业人员使用的非常强大的工具。netcat工具是一个跨平台的工具,它在Linux、macOS、Windows、BSD等平台上得到支持和提供。

null

安装Netcat/nc

Netcat是与大多数Linux发行版一起预装的。但有时,如果netcat已卸载或默认情况下未安装,则可能需要安装netcat。

安装Ubuntu、Debian、Mint、Kali:

sudo apt install netcat

安装Fedora、CentOS、RHEL:

sudo yum install netcat

显示帮助信息

Netcat命令作为nc执行。有关Netcat工具的帮助信息可以使用 -小时 选项。

nc -h

帮助输出包含选项及其描述。

OpenBSD netcat (Debian patchlevel 1.217-2ubuntu1) usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]       [-m minttl] [-O length] [-P proxy_username] [-p source_port]       [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit]       [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]]       [destination] [port]     Command Summary:         -4      Use IPv4         -6      Use IPv6         -b      Allow broadcast         -C      Send CRLF as line-ending         -D      Enable the debug socket option         -d      Detach from stdin         -F      Pass socket fd         -h      This help text         -I length   TCP receive buffer length         -i interval Delay interval for lines sent, ports scanned         -k      Keep inbound sockets open for multiple connects         -l      Listen mode, for inbound connects         -M ttl      Outgoing TTL / Hop Limit         -m minttl   Minimum incoming TTL / Hop Limit         -N      Shutdown the network socket after EOF on stdin         -n      Suppress name/port resolutions         -O length   TCP send buffer length         -P proxyuser    Username for proxy authentication         -p port     Specify local port for remote connects         -q secs     quit after EOF on stdin and delay of secs         -r      Randomize remote ports         -S      Enable the TCP MD5 signature option         -s sourceaddr   Local source address         -T keyword  TOS value         -t      Answer TELNET negotiation         -U      Use UNIX domain socket         -u      UDP mode         -V rtable   Specify alternate routing table         -v      Verbose         -W recvlimit    Terminate after receiving a number of packets         -w timeout  Timeout for connects and final net reads         -X proto    Proxy protocol: "4", "5" (SOCKS) or "connect"         -x addr[:port]  Specify proxy address and port         -Z      DCCP mode         -z      Zero-I/O mode [used for scanning]     Port numbers can be individual or ranges: lo-hi [inclusive]

或者,Linux和BSD系统提供netcat工具的手册页,其中包含以下命令。手册页提供了有关nc命令的更多详细信息和说明。

man nc

Netcat/nc命令语法

netcat工具或nc命令的语法非常简单。作为一种基于网络的工具,它主要用于主机和端口信息。

nc OPTIONS HOST PORT
  • 选项 用于提供不同的选项。这是可选的。
  • 主持人 用于指定IP地址。一般用于连接远程系统。这是可选的。
  • 港口 用于指定本地或远程端口。这是必需的。

相关文章: 如何在HTTPS中使用Curl命令?

扫描TCP端口

netcat命令最有趣和流行的特性之一是网络或端口扫描。但是正如您所期望的那样,netcat没有提供与nmap类似的体验。netcat命令只扫描一个主机,这个主机是用它的IP地址和我们要扫描的端口范围指定的。在下面的示例中,我们将扫描远程主机192.168.252.134。

nc -z -v 192.168.253.134 20-800

这个端口扫描创建了很多输出,每个端口的结果都被打印到终端上,如下所示。

...nc: connect to 192.168.253.134 port 73 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 74 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 75 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 76 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 77 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 78 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 79 (tcp) failed: Connection refusedConnection to 192.168.253.134 80 port [tcp/http] succeeded!nc: connect to 192.168.253.134 port 81 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 82 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 83 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 84 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 85 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 86 (tcp) failed: Connection refusednc: connect to 192.168.253.134 port 87 (tcp) failed: Connection refused...

默认情况下,无论端口结果是打开还是关闭,netcat工具都会打印所有端口结果。我们可以通过只打印opne端口来提高输出的可读性。使用grep命令只能列出打开的端口。我们将只过滤包含“succeeded”的行,这意味着端口已打开。

nc -z -v 192.168.253.134 20-800 2>&1 | grep succeeded

只有开放的端口如下所示,因为我们可以看到只有2个端口是开放的。

Connection to 192.168.253.134 22 port [tcp/ssh] succeeded!Connection to 192.168.253.134 80 port [tcp/http] succeeded!

扫描UDP端口

即使不像TCP那样流行,netcat也可以用类似于TCP扫描的方式来扫描UDP端口。为了扫描UDP端口,nc命令提供了-u选项。其他选项与提供主机名和端口范围的TCP扫描相同。在下面的示例中,我们将扫描192.168.253.134中的UDP端口范围100-200。

nc -z -u -v 192.168.253.134 100-200

向远程主机发送数据/文本

作为一个简单的工具,netcat可以用于简单的操作,比如向远程系统发送一些数据。也可以将一些文本发送到远程系统指定的端口。在下面的示例中,我们将数据或消息“HELO”发送到远程端口25,默认情况下,该端口是SMTP端口。

echo "HELO" | nc 192.168.10.10 25

将文件发送到远程主机

netcat工具的另一个有用特性是能够通过网络将文件发送到远程系统。只需将提供的文件像简单的二进制拷贝和粘贴一样传输到远程主机。由于有两个部分,远程系统应该列出一个端口,以便从本地主机接收数据。使用以下命令,远程系统开始监听3333端口,并将所有传入的数据写入myfile。

nc -l 3333  myfile

现在远程系统正在侦听3333端口。在本地系统中,我们将读取要传输的文件,并使用nc命令将其传输到远程系统。远程系统IP地址为192.168.1.10。我们将把名为myfile的本地文件重定向到nc命令中,如下所示。

nc 192.168.1.10 3333 < myfile

创建聊天服务器

有趣的是,nc命令可以用来创建聊天服务器,多个用户可以在其中连接和发送消息。创建聊天服务器的方法与文件传输相同。在这种情况下,简单文本在本地和远程系统之间传输。首先,我们将创建一个侦听端口,在本例中为4444。

nc -l 4444

另一方面,我们将通过提供聊天服务器的IP地址和端口号(4444)来连接聊天服务器。

nc 192.168.253.134 4444
图片[1]-Netcat(nc)命令教程-yiteyi-C++库
创建聊天服务器

发出HTTP请求

nc命令可用于向远程web服务器发出HTTP请求。甚至还有更有用的工具nc提供了关于发出HTTP请求的基本用法。HTTP请求文本被重定向到nc命令中,其中nc命令使用指定的远程web服务器IP地址/主机名和端口号。

printf "GET / HTTP/1.1" | nc google.com 80

或者,HTTP请求的多行可以使用“行尾。

printf "GET / HTTP/1.1
Host:google.com

" | nc google.com 80
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享