映射局域網

搜索的一個部分就是在局域網中尋找存在的主機。假定你在一臺鏈接至局域網的計算機旁,而且具備一個有效的網絡接口,最直接的方法就是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響應。中國大陸不少用戶所使用的主機殺毒軟件都帶有桌面防火牆功能)
相關文章
相關標籤/搜索