如何使用Netcat的实例教程

85 阅读2分钟

Netcat是一个非常有用的Unix命令,我们用它来执行各种网络任务,它对调试也非常有用,还可以了解事物的工作原理。

它可以通过nc 命令使用。

使用这个语法连接到任何网络服务器。

nc DOMAIN PORT

nc localhost 8000

一旦连接到服务器,你可以通过输入它们来发送任何信息,你会看到服务器发回的任何回复。

就像一个简单的1对1的聊天,在此基础上,你可以以协议(HTTP、FTP、SMTP等)的形式研究应用层面的功能。

使用Netcat,你可以模拟所有那些为互联网提供动力的应用级协议。

你可以连接到一个Web服务器并向它发送HTTP协议指令。我可以用nc flaviocopes.com 80 ,连接到我的网站,然后我可以向它发送

GET / HTTP/1.1
Host: flaviocopes.com

(第三行是空行)

而服务器会回复,回复的内容是HTTP/1.1 301 Moved Permanentlyhttps://flaviocopes.com/ ,因为我强制使用HTTPS。

这里有一个简单的例子,与我单独建立的 "回声 "服务器对接,它可以将我们发送给它的东西送回来。

Netcat可以使用TCP(默认协议)或UDP工作。

要使用UDP,请添加-u 标志。

nc -u localhost 8000

你也可以创建一个服务器。使用-l (监听)选项来监听一个特定的端口。

nc -l PORT

并且Netcat将打印收到的每一条命令。

试着在一个终端窗口上用nc -l 8001 运行服务器,在另一个终端上运行客户端nc localhost 8001 ,然后通过在客户端输入信息来向服务器发送信息。

Netcat也可用于网络检查。你可以扫描一个服务器的开放端口,在一个特定的范围内。

nc -v -z localhost 1-10000

提示:与grep 结合起来,过滤噪音。nc -v -z localhost 1-10000 2>&1 | grep succeeded

(如果你想知道哪个进程在使用某个端口,运行lsof -i :PORT)

你可以告诉nc 服务器将一个文件的内容发送给连接的客户端。

nc -l PORT < FILENAME

nc DOMAIN PORT 连接的客户端将得到该文件的内容打印出来,但它可以用nc DOMAIN PORT > FILENAME 将内容保存到一个文件中,从而实现基本的文件传输。

在文件被提供后,服务器将终止。

你可以把这个命令包在一个简单的Bash shell循环中。

while true; do nc -l PORT  < FILENAME; done

这就是最简单的网络服务器的实现。

while true; do nc -l 80  < index.html; done

你可以告诉客户端向服务器发送文件中的指令。

nc DOMAIN PORT < FILENAME