DOS 批处理实现 arp 绑定

简介:

    为了预防 ARP 病毒的攻击,一般都建议 Windows 用户把本机和网关实现 IP 与物理地址的绑定。Windows 下的绑定命令格式为:

    ARP -s [IP地址] [MAC地址]

    尽管命令很简单,但是对于初级用户仍然是一件困难的事情,特别是还要通过运行 ipconfig.exe 命令获取网关和本机的 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 绑定。

    注意以冒号“:”开头的语句是批处理文件的注释语句。批处理脚本的语句(例如 for 语句)的更多信息,请在网上搜索相关资料。

    从这里可以看到,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











本文转自网眼51CTO博客,原文链接:http://blog.51cto.com/itwatch/286597,如需转载请自行联系原作者

相关文章
|
Windows
DOS - 批处理之 for /f 中的 delims 和 tokens
DOS - 批处理之 for /f 中的 delims 和 tokens
968 0
DOS - 批处理之 for /f 中的 delims 和 tokens
|
26天前
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
119 56
|
2天前
|
Windows
DOS 批处理 setlocal命令、endlocal命令详解
setlocal这是一个命令,它开始局部化环境更改,通常在批处理文件中使用,以确保在脚本中所做的任何环境更改(例如设置或修改环境变量)不会影响到调用此批处理的上下文或其他批处理文件
|
缓存 网络协议
通过ARP协议实验,设置错误的IP和MAC地址的静态绑定项目,会使得两台主机之间无法通信,而删除该项目后可恢复通信,分析其原因。
通过ARP协议实验,设置错误的IP和MAC地址的静态绑定项目,会使得两台主机之间无法通信,而删除该项目后可恢复通信,分析其原因。
239 0
|
网络协议 网络安全 数据安全/隐私保护