DOS 批處理快速實現 arp 繫結

2021-04-15 14:57:20 字數 2586 閱讀 1866

為了預防 arp 病毒的攻擊,一般都建議 windows 使用者把本機和閘道器實現 ip 與實體地址的繫結。

windows 下的繫結命令格式為: arp -s [ip位址] [mac位址]

儘管命令很簡單,但是對於初級使用者仍然是一件困難的事情,特別是還要通過執行 ipconfig.exe、ping、arp -a 等命令獲取閘道器和本機的 mac 位址就更是一件難事。即使是有經驗的網管,敲這些命令,再獲取資料,再完成繫結,也是一件單調乏味的事情。為了簡化操作、提高效率,有必要發揮程式的作用,寫一段**來完成這項工作。那些 vc++、delphi、c# 之流的大型程式設計自然能完成程式設計任務,但是總給人大動干戈的味道。其實,充分發揮 dos 批處理的威力,只用寫一些「指令碼」就可以完成這些事情了。

只要把以下**儲存成乙個擴充套件名為 .bat 的批處理檔案,需要的時候用滑鼠雙擊一下,一切事情就全部搞定了。

程式的流程如下:

帶引數 /all 執行 ipconfig.exe 程式,執行結果儲存到生成的 ipconfig.txt 文字檔案裡。

執行 find.exe 程式,在 ipconfig.txt 檔案裡搜尋字串 "physical address"。find.exe 程式的執行結果,儲存到生成的文字檔案 phyaddr.txt 裡。在我的機器上,phyaddr.txt 內容為(實際檔案沒有行號):

1,2,---------- ipconfig.txt

3,   physical address. . . . . . . . . : 00-00-e2-89-9e-bd

4,語句 for /f "skip=2 tokens=12" %%m in (phyaddr.txt) do set mac=%%m 是取得本地物理 mac 位址的語句,結果臨時儲存在 %mac% 變數裡。「for ...」語句的意思是,phyaddr.txt 檔案的內容,跳過前面 2 行,餘下的行取第 12 列,每列之間的分隔符為預設的"空格"。注意本行的列包括單詞和所有的「.」字母。這樣 mac=00-00-e2-89-9e-bd,就是本機網絡卡的實體地址了。

下面取本機 ip 位址的道理也類似。繫結命令是 arp -s %ip% %mac%。

再後面獲取閘道器的 mac 和 ip 位址的方法也與前邊類似。注意執行一次 ping %gateip% -n 1 命令,是為了取得閘道器 arp 資訊在本機的快取,確保 arp -a %gateip% 命令能取得閘道器的資訊,否則只能得到文字:no arp entries found。

然後生成 gatemac.txt 檔案,從中取到閘道器的 mac 位址。最終閘道器也獲得了 arp 繫結。

從這裡可以看到,dos 命令列程式,包括批處理檔案,並不是作為擺設存在的,更沒有過時,合理利用,作用還是非常大的。譬如 net、netsh、netasat 等等命令,在網管工作中都是經常用到的,可以完成幾乎所有圖形介面程式能完成的工作,但有時更方便一些。

附:@echo off

:::讀取本機mac位址

if exist ipconfig.txt del ipconfig.txt

ipconfig /all >ipconfig.txt

if exist phyaddr.txt del phyaddr.txt

find "physical address" ipconfig.txt >phyaddr.txt

for /f "skip=2 tokens=12" %%m in (phyaddr.txt) do set mac=%%m

:::讀取本機ip位址

if exist ipaddr.txt del ipaddr.txt

find "ip address" ipconfig.txt >ipaddr.txt

for /f "skip=2 tokens=15" %%i in (ipaddr.txt) do set ip=%%i

:::繫結本機ip位址和mac位址

arp -s %ip% %mac%

:::讀取閘道器位址

if exist gateip.txt del gateip.txt

find "default gateway" ipconfig.txt >gateip.txt

for /f "skip=2 tokens=13" %%g in (gateip.txt) do set gateip=%%g

ping %gateip% -n 1

:::讀取閘道器mac位址

if exist gatemac.txt del gatemac.txt

arp -a %gateip% >gatemac.txt

for /f "skip=3 tokens=2" %%h in (gatemac.txt) do set gatemac=%%h

:::繫結閘道器mac和ip

arp -s %gateip% %gatemac%

:::刪除臨時檔案

del gateip.txt

del gatemac.txt

del ipaddr.txt

del ipconfig.txt

del phyaddr.txt

:::測試繫結結果

arp -a

:::exit

張慶(網眼) 網眼視界:

DOS 批處理實現 arp 繫結

為了預防 arp 病毒的攻擊,一般都建議 windows 使用者把本機和閘道器實現 ip 與實體地址的繫結。windows 下的繫結命令格式為 arp s ip位址 mac位址 儘管命令很簡單,但是對於初級使用者仍然是一件困難的事情,特別是還要通過執行 ipconfig.exe 命令獲取閘道器和本機...

批處理Dos命令

來自vista 有關某個命令的詳細資訊,請鍵入 help 命令名 assoc 顯示或修改副檔名關聯。attrib 顯示或更改檔案屬性。break 設定或清除擴充套件式 ctrl c 檢查。bcdedit 設定啟動資料庫中的屬性以控制啟動載入。cacls 顯示或修改檔案的訪問控制列表 acl call...

DOS批處理檔案

dos下的可執行檔案有三種,分別是exe,com和bat。其中,exe和com檔案都是二進位制形式的,只有bat檔案是文字形式的,可以直接閱讀。因此,bat檔案和以上二進位制可執行檔案相比,內容要簡單的多。這些檔案內包含著dos命令的集合,通常叫作批處理檔案。批處理檔案的組成雖然比較簡單,但其用處非...