我有一个设备,这个设备是支持adb的。每次运行会自动连接到一个wifi热点上面。
但是,不同热点dhcp分配的ip是不一样的。所以当我需要调试时,就必须要知道这个设备的ip地址。然后使用adb。
所以我需要知道,如何去获取当期局域网内的所有IP地址。以此来判断设备可能是哪个IP
在linux和mac上,有一个非常强大的工具,nmap
。他可以进行端口和ip的扫描, 功能十分强大
nmap的扫描方式有很多,不同的方式,功能和速度也不一样:
- 使用主机是否存在的方式扫描。(是否可以ping通)这个方式是比较快的,但是如果ICMP被禁用了。是扫描不到对方主机的。比如一些开了防火墙的windows系统
1
nmap -sP 192.168.1.0/24
- 使用TCP的Syn进行扫描。通过Tcp握手的一次Syn来判断,不会完全建立连接。这种方式速度也比较快,因为没有完全建立链接。并且可以扫描到屏蔽了ICMP的windows系统
1
nmap -sS 192.168.1.0/24
除了可以扫描局域网IP.还可以看某个IP的端口是否被监听。这样我们调试一些程序时,会更方便:
1 | nmap -p 7382 192.168.154.1 |
查看7382端口是否被监听,目前处于什么状态。
PS:
- nmap在某些扫描方式下, 需要root权限。
- 经过我wirshark抓包,发现一种扫描方式,会使用多种方法并行。比如我现在不管使用什么方法,开始都会用arp扫描。