本文共 1630 字,大约阅读时间需要 5 分钟。
喜欢玩Unix/Linux同学一定对netcat这个工具不陌生,简单讲netcat就是一套操作TCP/UDP的命令行工具集,号称TCP/IP领域的瑞士军刀(官方自称)。
下面我们来讲一下如何使用这个feature繁多体积却很小的工具。
netcat目前分为两个版本:netcat-traditional 和 netcat-openbsd。
- netcat-tranditional是GNU工程版本,基本上每个Linux版本都带这个工具,对应的命令名称为nc.traditional。
- netcat-openbsd是OpenBSD的版本,功能非常强大,对应的命令名称为nc,这个是我们这次真正要用的工具。
在Linux环境下面,如果没有安装netcat-openbsd这个版本的话,我们在terminal打出的nc这个命令,对应的就是nc.traditional这个命令,也就是netcat-traditional这个工具。大家可以使用readlink -f $(which nc)
查看一下。
要使用netcat,首先我们要安装:
sudo apt-get netcat-openbsd
为了写这篇教程,我在Windows10下面的hyper-v上装了一个Debian Buster的虚拟机,然后使用apt这个命令很快就可安装成功。hyper-v这个Windows自带的虚拟机比WSL好用。我个人还是喜欢纯粹的Linux系统,所以没有使用WSL。听说后续的Windows版本带的WSL2是完全使用hyper-v运行Linux内核的,对此我还是很期待的。
安装完成后,我们在终端上输入命令nc -h
,如下图:
刚开始看不懂很正常,工具这种东西慢慢用,用久了也就学会了,我个人不提倡技术领域死记硬背一些自己用不上的技术,抓住主干知识,其他知识到用的时候查查文档就好了。
那么,我们能用netcat干点什么呢?
实现Telnet功能
nc -v baidu.com 80
然后输入GET / HTTP/1.0
,点击两次Enter。
至此,netcat连上了http://zhu.com的80端口,通过发送GET / HTTP/1.0
来模拟出了一次http的请求。
实现简单的Socket服务器
平时我们使用的网站例如知乎都是我们的浏览器访问Web Server,而我们使用的微信,QQ这种即时通讯类软件都是挂着一条长连接到后端服务器,也就是Socket服务器。
通过netcat工具,我们可以通过一行代码建立一个简单的Socket服务器,如下:
nc -l -v 3000
然后我们切换一个标签,通过telnet localhost 3000
连到这个Socket服务器,输入hello world
,则服务器收到hello world这个字符串。
文件传输
机器A cat hello_world.txt | nc -v -l -p 12345
机器B nc localhost 12345 > receive.txt
端口扫描
nc -v -n -z -w 1 192.168.1.2 56-99
简单的web服务器
一般开发中,开启一个简单的web服务都是使用开源框架内置的web服务器,例如rails内置的WEBrick。如果仅仅是想展示一个静态html,使用这个web框架的内置服务器显得过重,有时候我会用一下Python的SimpleHTTPServer:python -m SimpleHTTPServer 8000
。netcat也可以非常简单的完成这个工作,如下代码:
nc -l -p 8000 -q 1 < index.html
不过这个是一次性的web server,可以编辑一个bash脚本文件,实现持久访问,如下:
小结
Netcat有非常多的功能等待挖掘,我后续会写一系列的文章来介绍。
大家对我的文章兴趣可以关注我的公众号:安州涤生的网络日志。
转载地址:https://blog.csdn.net/weixin_33073525/article/details/112539168 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!