近兩年來,內(nèi)網(wǎng)的ARP病毒(攻擊)一直是網(wǎng)吧的難題。網(wǎng)絡(luò)管理員現(xiàn)在使用雙重綁定來緩解這個(gè)問題。進(jìn)行雙重綁定時(shí),需要網(wǎng)關(guān)的mac地址。網(wǎng)關(guān)可能是電腦,也可能是路由器或貓,此時(shí)查看它的mac地址不是很方便。部分網(wǎng)吧平臺軟件開發(fā)者推送產(chǎn)品增加了“檢測”網(wǎng)關(guān)mac的功能查詢mac的軟件,如下圖:
今天我們要分析實(shí)現(xiàn)這個(gè)功能的原理和方法,后面會寫完整的代碼。
首先我們通過DOS窗口中的命令-g來嘗試感受一下ARP的另一個(gè)參數(shù)
先ping網(wǎng)關(guān)的IP查詢mac的軟件,確保通暢,這個(gè)過程也有助于將網(wǎng)關(guān)返回的數(shù)據(jù)信號緩存在地址表中
使用ARP -g 獲取對應(yīng)的mac地址。
有興趣的可以試試看能否正確獲取到其他機(jī)器的mac地址。操作是一樣的。
寫一個(gè)網(wǎng)吧的工具,不能調(diào)整DOS命令,這次我還是用7,窗體上放兩個(gè)文本輸入框,兩個(gè)按鈕就夠了。對于ARP操作說明,我們可以調(diào)用微軟的API來實(shí)現(xiàn)。
( ) 是 SDK 中提供的一個(gè)函數(shù),用于獲取目標(biāo)主機(jī) mac 的地址。函數(shù)原型如下:
雙字(
, // 目標(biāo)IP地址
SrcIP, // 源IP地址
, // 返回 mac地址指針
//返回mac地址長度
);
此函數(shù)的返回值為錯(cuò)誤碼
31表示對方?jīng)]有開機(jī),我們的功能檢測不到,
1784 指定函數(shù)的最后一個(gè)參數(shù)的值
1784 為 0,或者你給的值和你給的緩沖區(qū)大小不匹配。
通過它我們可以輕松實(shí)現(xiàn)mac地址檢測。
(:ulong;
臨時(shí):雙字;
:;
:) : 雙字; ; '.dll'名稱'';
.(:);
變量
myip:ulong;
我的mac:array[0..5] 個(gè)字節(jié);
:ulong;
r:;
開始
myip:=(PChar(編輯1.文本));
:=(我的mac);
r:=(myip,0,@mymac,@);
.:=':'+(r);
編輯2.文本:=('%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x',[mymac[0],mymac[1],mymac[2],mymac [3],我的mac[4],我的mac[5]]);
結(jié)束;
.(:);
開始
關(guān)閉;
結(jié)束;
運(yùn)行后的效果如下:
很多網(wǎng)吧平臺軟件都有這個(gè)功能?,F(xiàn)在我們自己去模仿也不是什么難事。開發(fā)側(cè)重于識別需求和清晰的思路,編碼不難。其實(shí)我們在網(wǎng)吧的日常管理上還有很多地方可以拓展,需求也是多種多樣的。比如發(fā)現(xiàn)有異常的IP活動(dòng),需要通過IP找出是哪臺電腦,也可以針對這個(gè)需求自己做一個(gè)工具。
關(guān)注全球網(wǎng)吧微信,了解網(wǎng)吧和網(wǎng)吧的運(yùn)營管理、安裝維護(hù):