记一次网络扫描
场景
- 在开发上位机控制PLC时,遇到一个情况,项目负责人说PLC设备已经设置好局域网ip了,但是忘了具体设置的ip地址
解决办法
-
项目负责人说要找人重置设备的时候我拉住了他,重置需要时间,重置后还需要设置一大堆配置,不如先网络扫描一下局域网中有哪些在线的主机,然后拔掉网线,再扫描一遍,基本就能确认PLC设备的ip。
-
至于如何扫描局域网中的所有在线的ip,有两种方式
powershell
和nmap
- powershell一般windows自带,即开即用
nmap
需要额外安装,但是性能快、功能强大,一行命令就可以搞定需求
powershell
1..254 | ForEach-Object {
$ip = "192.168.200.$_"
if (test-connection $ip -count 1 -q -timeoutseconds 1) {
write-host "$ip is up"
}
}
write-host "done"
- 原理使用脚本轮询,判断
192.168.200.1
-192.168.200.254
是否连通 - 但是
test-connection
超时参数最低只能设置1s,如果觉得太慢的话,可以采用ping
的方式
ping -n 1 -w 10 $ip > $null # -w 10 表示超时时间为10ms
if ($?) {
write-host "$ip is up"
}
- 某些特殊的设备,可能开启了ICMP防火墙,让你ping不到它(test-connection也是基于icmp),可以通过更强大的
nmap
命令来探测
nmap命令
- 需要下载 nmap
- 键入命令
nmap -sn 192.168.200.0/24
即可扫描局域网中同ip段的所有设备
扩展
-
如何查看远程机器
1.116.2.191
是否开放了 3001 端口?nmap -p 3001 1.116.2.191
test-netconnection 1.116.2.191 -port 3001
-
如何查看远程机器
1.116.2.191
所有开放的端口?-
nmap 1.116.2.191
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-11 18:18 中国标准时间 Nmap scan report for 1.116.2.191 Host is up (0.0072s latency). Not shown: 979 filtered tcp ports (no-response), 3 filtered tcp ports (host-prohibited) PORT STATE SERVICE 22/tcp open ssh 80/tcp closed http 888/tcp closed accessbuilder 1234/tcp closed hotline 2000/tcp closed cisco-sccp 2001/tcp open dc 3000/tcp closed ppp 3306/tcp open mysql 4000/tcp closed remoteanything 4001/tcp closed newoak 4444/tcp closed krb524 6000/tcp closed X11 8080/tcp open http-proxy 8888/tcp open sun-answerbook 9001/tcp open tor-orport 10000/tcp open snet-sensor-mgmt 10001/tcp closed scp-config 12345/tcp closed netbus
-