搜索的一个部分就是在局域网中寻找存在的主机。假定你在一台连接至局域网的计算机旁,并且具有一个有效的网络接口,最直接的方法就是ping每一个所在子网的IP地址,并且查看哪个地址有响应。非常遗憾的是,不是所有的ping命令都是平等创建的。作为ICMP的实现,不同的操作系统给出的ping的功能不太一样。该命令在Windows下的实现具有严格的限制,并且不支持对广播地址的ping命令。大部分BSD系统的ping命令有时支持对整个子网进行ping的操作,而有时则不支持。Linux网络包的ping命令通常支持-b选项,该选项允许用户对广播地址的ping操作。
 
由于ping广播地址是一种不确定的事件,甚至不做得调查这种可能性。实际上,如果进行搜索,例如,对来自Unix系统的24位子网掩码网络,在命令行中进行一次简单的bash会效率更高:
[root@mail]# x=1; while [ $x -lt "255" ]; do ping -c 1 192.168.1.$x | grep "bytes from" | awk '{print $4 "up!"}'; let x++; done
192.168.1.1:up!
192.168.1.2:up!
192.168.1.10:up!
192.168.1.11:up!
192.168.1.12:up!
192.168.1.13:up!
192.168.1.14:up!
192.168.1.15:up!
192.168.1.18:up!
192.168.1.30:up!
192.168.1.31:up!
192.168.1.32:up!
192.168.1.40:up!
……
 
如果你在你的环境中运行上面的命令耗费了太多的时间,那么可以通过使用更短的超时来加速这种操作。大部分Unixping版本支持-t选项。如果LAN速度很快,300ms的超时将会很安全。
 
如果怀疑网络易于丢失数据包,请使用两次ping命令来处理数据包丢失的可能性,接着使用sort以劲uniq工龄这些结果。下面是一个范例,在迅速以及有损的网络上运行同样的具有300ms超时的ping-sweep命令:
[root@mail]# x=1; while [ $x –lt “255” ]; do ping –c 2 –t 0.3 192.168.1.$x | grep “bytes from” | awk ‘{print $4 “up!”}’; sort | uniq; let x++; done
 
这几乎是映射局域网的最佳方法,但与更加深奥的工具不同,你能够在所使用的Unix版本的计算机上依靠bashpinggrepawksortuniq。尽管看起来使用的命令很复杂,但牢记这种概念是很容易的。
 
Microsoft Windows计算机上,情况稍微有些不同。再次强调,即使它不是一种进行ping-sweep的最优方式,在命令行窗口中执行该命令来查看哪些主机可用是非常容易的:C:\>for /L %H in (100,1,254) DO ping -w 30 -n 1 192.168.1.%H | find "Reply" >> D:\hostlist.txt
 
C:\>ping -w 30 -n 1 192.168.192.100 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.101 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.102 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.103 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.104 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.105 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.106 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.107 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.108 | find "Reply"  1>>D:\hostlist.txt
C:\>ping -w 30 -n 1 192.168.192.109 | find "Reply"  1>>D:\hostlist.txt
……
C:\>type hostlist.txt
Reply from 192.168.192.100: bytes=32 time<1ms TTL=128
Reply from 192.168.192.101: bytes=32 time=1ms TTL=32
……
 
对于所有的小型局域网,或者如果工作于某个大型局域网当中的一个小型的子网当中,它在使用户知晓哪台主机开启,并且对ICMP有响应上,是比较有效的。
 
使用这些技巧的一个最大问题就是,就将会被注意到。向每一台主机有序发送很多ICMP消息会很引人注意,并且恰恰是正规IDS系统所检测的类型。同时,这种方法假设计算机已经使用正确的TCP/IP设置连接至局域网(这一点倒不用特别担心,很多管理员使用DHCP为客户计算机动态分配IP地址,只要那些计算机拥有正常的物理连接,开机后应该会正常接入网络)。它还假设所试图映射的所有计算机都会响应ICMP回显数据包(目前有很多设备运行在基于主机的防火墙上,并且有人很可能会在他们的安全策略中禁止ICMP响应。中国大陆很多用户所使用的主机杀毒软件都带有桌面防火墙功能)