设为首页 | 收藏本页
登陆您的帐号 | 免费注册帐号
全部栏目 > 计算机 > 软件 > 人工智能
下一篇上一篇 首页图文展示(无图)

ARP防御之双绑批处理+++集合

发布人:hy58
发布日期:2015-06-06 09:01:24
刷新日期:2015-06-06 09:01:24
回复或评论:0
阅览:287
一:此批处理有缺陷,有时不能实现真正意义的双绑!   
    以下是代码片段:   
    @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   
    ::读取网关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%   
    arp -s 网关IP 网关MAC   
    exit   
 
    这个批处理要查询本机的ARP 缓存表,看里面是不是有网关的IP和MAC,有则能成功   
    绑定,但是没有的话就绑不定了!!!不过可以改进一下,达到双绑的目的,比如   
    加上arp -s 网关IP 网关MAC一行就可以了。。。   
    二、这个也不能实现真正意义的双绑,只能绑定本机IP和MAC   
    以下是代码片段:   
    @echo off   
    for /f "delims=: tokens=2" %%a in ('ipconfig /all^|find "Physical Address"') do set local_mac=%%a   
    for /f "delims=: tokens=2" %%a in ('ipconfig /all^|find "IP Address"') do set local_ip=%%a   
    for /f "delims=: tokens=2" %%a in ('ipconfig /all^|find "Default Gateway"') do set gate_ip=%%a   
    fo* /* %%* in ('getmac /nh /s %local_ip%') do set gate_mac=%%a   
    arp -s %local_ip% %local_mac%   
    arp -s %gate_ip% %gate_mac% (这个地方有问题,改进中……)   
 
    经测试,此批处理不能绑定网关IP和MAC,只能绑定本机IP和MAC   
    三、这个还不是很清楚,我要测试才行的,目前所知也能绑定本机IP和MAC   
    以下是代码片段:   
    @ECHO OFF   
    SETLOCAL ENABLEDELAYEDEXPANSION   
    for /f "tokens=2 delims=[]=" %%i in ('nbtstat -a %COMPUTERNAME%') do call set local=!local!%%i   
    for /f "tokens=3" %%i in ('netstat -r^|find " 0.0.0.0"') do set gm=%%i   
    for /f "tokens=1,2" %%i in ('arp -a %gm%^|find /i /v "inter"') do set gate=%%i %%j   
    arp -s %gate%   
    arp -s %local%   
 
    arp -s 网关IP 网关MAC   
    这个批处理可以绑定网关IP和MAC,但是还是有缺陷,要依赖于本机上存在的ARP缓存!   
    改进方法为在最后加一个arp -s 网关IP和MAC!   
    四、原理和第一个一样,只是改进了一点点!   
    这个P通过ping网关三次得到了网关的MAC其实以上的批都可以通过这个来搞定网关的IP和MAC,   
    但是如果开机的时候正在发生ARP欺骗的话 这样你绑的IP和MAC就是错的,不能上网了。不过这种情况很少,发过来试一下先吧!   
    以下是代码片段:   
    @echo off   
    :::::::::::::清除所有的ARP缓存   
    arp -d   
    :::::::::::::读取本地连接配置   
    ipconfig /all>ipconfig.txt   
    :::::::::::::读取内网网关的IP   
    for /f "tokens=13" %%I in ('find "Default Gateway" ipconfig.txt') do set GatewayIP=%%I   
    :::::::::::::PING三次内网网关   
    ping %GatewayIP% -n 3   
    :::::::::::::读取与网关arp缓存   
    arp -a|find "%GatewayIP%">arp.txt   
    :::::::::::::读取网关MAC并绑定   
    for /f "tokens=1,2" %%I in ('find "%GatewayIP%" arp.txt') do if %%I==%GatewayIP% arp -s %%I %%J   
    :::::::::::::读取本机的 IP+MAC   
    for /f "tokens=15" %%i in ('find "IP Address" ipconfig.txt') do set ip=%%i   
    for /f "tokens=12" %%i in ('find "Physical Address" ipconfig.txt') do set mac=%%i   
    :::::::::::::绑定本机的 IP+MAC   
    arp -s %ip% %mac%   
    :::::::::::::删除所有的临时文件   
    del ipconfig.txt   
    del arp.txt   
    exit   
    以上P可以配合路由上对客户机的IP和MAC进行绑定实现完全防ARP,只是单绑下面机和网关IP及MAC   
    没有多大用处,关于路由上面的,因为大家用的路由不一样,所以这个就不写了!
评论(0) 暂无回帖


打印 收藏 关闭窗口 下一篇上一篇