背景
制造业的小伙伴们经常遇到一个问题,就是拿到一台待调试的设备,没有显示器、键鼠等交互接口,也没有串口可供连接,有网口但不知道设备的IP,所以没法ssh登上去操控,咋办?
思路:wireshark抓包
情况1 设备有静态IP地址
首先要找来一台PC机,将设备跟该PC机直连,这样就避免了办公室或实验室局域网的干扰,PC机侧收到的网络包只可能来自设备和自身。
然后在PC机上启动抓包软件wireshark,抓取目标设备发送的查询网关MAC地址
的ARP包,如果设备配了静态IP,就会在ARP包的相应协议字段里显示的。
wireshark选择监听跟设备直连的那个网口,然后找到ARP包:
这里能看出有台网络打印机HewlettP(目标设备)在广播询问网关192.168.26.1的MAC地址,并附上自己的IP 192.168.26.78,这样我们就知道打印机的IP了。
最后在ARP包的info列找到设备IP
情况2 设备没有静态IP,但支持DHCP
- 在PC机上安装TFTPd等DHCP服务器软件,启动该服务器
- 启动wireshark,然后同样抓取直连目标设备的网口
- 目标设备开机,从抓取的包里找到DHCP包,里面就有目标设备获取的IP
情况3 设备没有静态IP,也不会自动发起DHCP
这种情况比较复杂,可能是消费电子类设备,支持RDP(ICMP Router Discovery Protocol)协议,它们上电后会先广播router solicitation
包(附带自己的MAC地址),路由器会响应该报文,并进入DHCP配置阶段,但TFTPd等软件并不会响应该包,因此也就无法触发TFTPd的DHCP服务。
此时我们就要:
- PC直连设备并根据抓到的
router solicitation
包获得其MAC地址 - 找来一台闲置的路由器,将PC机和目标设备都连接到闲置路由器上
- 抓包过滤器这样配置eth.addr == fe:87:dd:7c:d2:81,这样就能看到目标设备跟路由器的交互过程了
- 交互信息里有一条查询网关MAC地址的请求包,里面就有目标设备的IP
上面截图第一条消息就是RDP包,即DHCP服务器发现协议,里面附带了设备的MAC地址,这条消息是直连PC时也会发的,但第5、6条消息必须是设备收到路由器的Neighbor Solicitation
应答包(第3条消息)后才会发出的,所以必须将设备和PC都接到路由器才行。
如果你实在找不到闲置路由器,PC上装个connectify等虚拟路由器
应该也能发出上述第3条消息,但我没试过,因为这个软件收费😂
贴士
很多人觉得用抓包软件太兴师动众了,直接arp -a
不就能看到局域网内所有设备的IP和MAC了吗?
其实arp只能显示本机的arp缓存,而IP写入缓存的前提是两台主机发生过传输,现在我们都不知道设备的IP,根本无法建立传输,设备IP自然不会出现在arp缓存里了。