為方便區域網管理,以及預防病毒攻擊,我們經常會需要製作區域網裝置MAC地址表來比對、核查。今天,小編就給大家介紹一下,如何利用DOS命令來實現區域網所有電腦MAC地址獲取。
一、所涉及DOS命令講解
set ip=192.168.1
set為設定環境變數命令。
該命令將IP設定為值為“192.168.1"的引數,其中“192.168.1"為區域網網段,請根據區域網實際值修改。
for /l %j in (1,1,10) do echo %i
for命令是DOS命令中一個功能十分強大的命令,在這裡用到/L引數,功能是以一個增量數字集進行迴圈(start,step,end),即變數j初值start為1,每迴圈一次加增量step1,直到大於end10停止迴圈,每次迴圈執行do後面的命令。
該命令功能對變數進行每次加1,並用echo命令顯示在螢幕上。
ping 192.168.1.1 -n 1 -w 1000
ping命令主要用於測試IP的連通性,-n 表示每一次ping過程傳送的資料包數,-w表示每個資料包發出後等待回執的時間閥值。
該命令表示對192.168.1.1的電腦進行ping測試,發1個包,回執時間超過1秒視為超時不通。
如果IP地址能ping通,程式能夠從應答資料包中獲取該IP裝置的mac地址,並存放到記憶體arp地址表中。
arp -a 192.168.1.18
arp命令主要用於顯示或修改arp地址表。-a表示顯示某個或全部arp地址表。
該命令表示顯示IP為192.168.1.18裝置的mac。
echo ssss findstr dynamic
findstr查詢字串命令,一般用於從檔案中查詢含個某個字元的行,這裡用到“|”(管道符),即把上一個命令的輸出作為下一個命令的輸入。
該命令表示在命令“echo ssss”輸出結果中查詢含有“dynamic”字串的行。
二、具體方法
方法1:
set ip=192.168.1 && for /l %j in (1,1,254) do (ping %ip%.%j -n 1 -w 1000 ) && arp -a>1.txt
該方法適合在小IP地址範圍內獲取mac地址,因為如果範圍過大,ping命令執行的時間會比較長,會造成早前arp地址表中獲取的mac超時失效,從而無法獲取區域網內完整的mac地址表。如下圖,分別是上屬命令執行過程中的arp表內容,前、後表對比,很容易看出,部分mac地址已經丟失,而且還存在為全0的非真MAC地址。
方法2:
set ip=192.168.1 && for /l %j in (1,1,254) do ( ping %ip%.%j -n 1 -w 1000 arp -a %ip%.%j findstr dynamic >>2.txt )
相對方法1,該方法應該是比較完美的。在ping執行後,即時將獲取的真實mac地址儲存了下來。