记一次网络扫描

场景

  • 在开发上位机控制PLC时,遇到一个情况,项目负责人说PLC设备已经设置好局域网ip了,但是忘了具体设置的ip地址

解决办法

  • 项目负责人说要找人重置设备的时候我拉住了他,重置需要时间,重置后还需要设置一大堆配置,不如先网络扫描一下局域网中有哪些在线的主机,然后拔掉网线,再扫描一遍,基本就能确认PLC设备的ip。

  • 至于如何扫描局域网中的所有在线的ip,有两种方式 powershellnmap

    • 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
      
posted on 2025-03-11 18:34  baby-jie  阅读(24)  评论(0)    收藏  举报