一、什么是NetCat?
NetCat,简称nc,在网络工具中有”瑞士军刀“之称,它能够建立并接受传输控制协议(TCP)和用户数据报协议(UDP)的连接,Netcat可在这些连接上读写数据,直到连接关闭为止。它可以通过手工或者脚本与应用层的网络应用程序或服务进行交互。从技术上来讲,NetCat并不能产生UDP连接,因为UDP是一种无连接的协议。
nc测试连接并读取数据有点类似telnet,但却比telnet更好用。
NetCat在绝大多数linux发行版下已经内置,但自带的nc一般不支持非常强大的-e选项,同时还支持windows平台。
二、NetCat的基本使用:
2.1 测试主机端口连通性:
用法: nc [options] host ports
如:
[root@localhost ~]# nc 192.168.8.100 22
SSH-2.0-OpenSSH_4.3
看到了吧,连版本号都显示出来了!!
2.2 在本地建立监听等待远程连接:
[root@localhost ~]# nc -l 8000
……处于等待连接状态……
查看进程信息:
[root@localhost ~]# ps -ef |grep nc
root 3939 3557 0 07:31 pts/1 00:00:00 nc -l 8000
root 3943 3800 0 07:33 pts/2 00:00:00 grep nc
在远程主机上测试连接nc监听的端口:
[root@localhost ~]# nc -v 192.168.8.100 8000 #-v参数用于显示详细信息,加的v越多信息越详细
Connection to 192.168.8.100 8000 port [tcp/irdmi] succeeded!
三、常见用法及参数说明:
3.1 监听一个端口,并捕获数据到一个文件:
[root@localhost ~]# nc -l 8000 > filename.out
客户端连接后输入一些数据:
[root@localhost ~]#
[root@localhost ~]# nc 192.168.8.100 8000
test
this is client input[root@localhost ~]#
查看filename.out
[root@localhost ~]# cat filename.out
test
this is client input
3.2 将文件内容传送至nc监听的机器
在第一台服务器上使用nc开启监听:
[root@localhost ~]# nc -l 8000
在第二台机器上传送一个文件内容至第一台服务器:
[root@localhost ~]# nc 192.168.8.100 8000 < /etc/issue
查看第一台查看:
[root@localhost ~]# nc -l 8000
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
Kernel \r on an \m[root@localhost ~]#
可以看到第二台机器上的文件内容已经被传送过来了。这个结果还可以用上面的方法输出至一个文件。
3.3 端口扫描
如下扫描目标主机20至25的端口
[root@localhost ~]# nc -z -v -v 192.168.8.100 20-25
nc: connect to 192.168.8.100 port 20 (tcp) failed: Connection refused
Connection to 192.168.8.100 21 port [tcp/ftp] succeeded!
Connection to 192.168.8.100 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.8.100 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.8.100 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.8.100 port 25 (tcp) failed: Connection refused
3.5 nc的其他参数:
-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
nc的作用看似简单,但其能发挥的作用是超出我们的想象的!
另外需要注意的是,发行版自带的nc功能上都有所精简,要安装完整版可访问http://sourceforge.net/projects/netcat/files/netcat/下载相应版本,这里不做讨论。