◇使用场景
在以前文章中里面介绍了:如何测试【单个】端口是否可达。
扩展一下:如果你要测试的不止一个端口,而是某个【范围】的端口。这种行为有个专门的术语叫【端口扫描】。
顺便说一下:
不论是 TCP 还是 UDP,协议规定的【有效】端口号范围都是:1 ~ 65535
◇方法
下面这个命令,用来扫描 IP 地址为 x.x.x.x 的主机,扫描的端口范围从 1 到 1024
nc -znv x.x.x.x 1-1024
选项 -z
意思是:开启“zero-I/O 模式”。该模式指的是:nc 只判断某个监听端口是否能连上,连上后【不】与对端进行数据通讯。
选项 -n
(前面已聊过,参见以前的文章)
选项 -v
-v 选项前面也聊过,这里要特地强调一下。
对 nc 的其它用法,-v 选项是可加可不加滴;但对于“端口扫描”而言,一定要有这个选项——否则你【看不到】扫描结果。
◇补充说明:优化输出
玩“端口扫描”的时候,“-v 选项”会把“成功/失败”的结果统统打印出来。
通常大伙儿关注的都是“扫描成功”的那些端口。因此,可以用如下命令过滤一下,只打印扫出来的端口。
nc -znv x.x.x.x 1-1024 2>&1 | grep succeeded
由于“-v 选项”产生的输出位于【stderr】,上述命令中的 2>&1 用来把【stderr】合并到【stdout】(注:这种写法只适用于 POSIX 系统上的 shell)
grep 命令用来进行【过滤】。对于 Windows 系统,默认【没有】grep 命令,需改用 find 命令过滤。
本文暂时没有评论,来添加一个吧(●'◡'●)