如何仅对运行服务器的端口进行在线端口扫描?
答案1
:: uses gnuwin32 sort, grep, sed, cut. You could rename windows sort.exe(could make a copy of sort.exe to windowssort.exe and unlocker lets you delete windows's sort.exe), and use gnuwin32 sort.exe instead.
@ECHO OFF
netstat -aon -p tcp | grep "LISTENING" | grep -o ":[^: ]*" | grep -P ":[0-9]+$" | grep -v "^:0$" | uniq | tr -d '\r' | tr -d '\n' | sed "s/:/,/g" | cut -b 2- | sed "s/,/\r\n/g" | sort -n | tr -d '\r' | tr -s '\n' ','
生成逗号分隔的列表,例如
29,35,85,115,145,155,163,170
(要了解它是如何做到的,你需要了解一些正则表达式,了解那些使用的命令,然后一次尝试每个部分,例如先尝试netstat -aon -p tcp
然后添加| grep "LISTENING"
等)。如果 sed 可以在新行上找到,那么它会稍微短一些,但 sed 不能,如果 tr 更强大,那么它会更简单一些,但 tr 不是。
你可以把逗号分隔的端口列表放入在线端口扫描器中
例如
http://www.t1shopper.com/tools/port-scan/
如果列表太长,这些端口的在线端口扫描就需要花费太长时间,那么您可以在局域网中的另一台计算机上使用该列表执行 nmap,如果有任何端口打开,则只需对这些端口进行在线端口扫描。
对所有 65535 个端口进行在线端口扫描毫无意义,这会花费太长时间,而且当你知道其中只有一小部分甚至运行服务器并且你确切知道它们是什么时,这样做毫无意义。当你确切知道在哪些端口上运行服务器时,只扫描“常用端口”也是毫无意义的,因此需要测试哪些端口。