CODE: [Copy to clipboard]
@ECHO OFF
REM MAC扫描和绑定工具V1.0
REM 修正不能查本机的MAC问题(特殊处理);修正绑定或解除绑定后找不到MAC问题(首加ARP -A);
REM 修正不能获取路由器或猫的MAC问题(FIND精确查找时加如其他识别符号或使用ARP -A IP);
REM 增加IP绑定MAC功能以防止ARP欺骗;增加IP解除MAC绑定功能以临时消除ARP欺骗
REM 本程序由小布点(秋语)制作,欢迎交流 QQ:9399100
TITLE MAC扫描和绑定工具V1.0
FOR /F "TOKENS=15" %%I IN ('IPCONFIG /ALL^|FIND /I "IP Address"') DO SET LIP=%%I
:G
CLS
ARP -A >NUL
SET IP=
SET MAC=
SET /P IP=请你输入要查询的主机名称或其IP(本机直接回车,所有输入ALL):
IF NOT DEFINED IP GOTO :LIP
IF "%IP%"=="%LIP%" GOTO :LIP
IF "%IP%"=="ALL" GOTO :ALLIP
PING %IP% -n 1 >NUL
REM FOR /F "TOKENS=2" %%I IN ('ARP -A^|FIND "%IP% "') DO SET MAC=%%I
FOR /F "TOKENS=2" %%I IN ('ARP -A %IP% ^|FIND "%IP% "') DO SET MAC=%%I
IF NOT DEFINED MAC GOTO :G
GOTO :IPOK
:LIP
SET IP=%LIP%
FOR /F "TOKENS=12" %%I IN ('IPCONFIG /ALL^|FIND /I "Physical Address"') DO SET MAC=%%I
GOTO :IPOK
:ALLIP
CLS
SET STARTIP=
SET ENDIP=
ECHO 查询所有主机的MAC将花费很长时间,你可以设置一个开始段和结束段.
SET /P STARTIP=请你输入扫描的IP开始段(最小为0,最大为254,默认为0):
IF NOT DEFINED STARTIP SET STARTIP=0
SET /P ENDIP=请你输入扫描的IP结束段(最小为0,最大为254,默认为254):
IF NOT DEFINED ENDIP SET ENDIP=254
CLS
FOR /F "TOKENS=1-4 DELIMS=." %%A IN ("%LIP%") DO SET DOMAIN=%%A.%%B.%%C
ECHO 将扫描:%DOMAIN%.%STARTIP%-%DOMAIN%.%ENDIP%所有主机的MAC,请等待.....
FOR /L %%I IN (%STARTIP%,1,%ENDIP%) DO TRACERT -h 1 -w 1 %DOMAIN%.%%I >NUL
GOTO :IPOK
:IPOK
CLS
ECHO ------------------------------------------------------
ECHO 你要查询主机%IP%的MAC是:%MAC%
IF "%IP%"=="ALL" (ARP -A|FINDSTR /I "dynamic static")
ECHO ------------------------------------------------------
ECHO.
ECHO.
ECHO 操作完成,请选择其他操作:
ECHO ******************************************************
ECHO 要继续查询MAC请输入G;要退出查询MAC请输入E;
ECHO 要把该IP绑定到该MAC输入Y;要解除该绑定输入N;
ECHO 要比较完整的解决ARP病毒的攻击请输入Z;
ECHO ******************************************************
SET /P S=请选择并输入要继续的操作:
IF "%S%"=="%S%" GOTO :%S%
:Y
ECHO.
ECHO.
IF "%IP%"=="ALL" (SET /P IP=请从上面的列表中选择并输入一个需要绑定的IP,直接回车则全部绑定:)
IF "%IP%"=="ALL" SET IP=dynamic
FOR /F "TOKENS=1-2" %%I IN ('ARP -A^|FINDSTR /I "%IP%"') DO (ARP -S %%I %%J)
GOTO :G
:N
ECHO.
ECHO.
IF "%IP%"=="ALL" (SET /P IP=请从列表中选择输入需要解除的IP,直接回车则删除所有绑定:)
IF "%IP%"=="ALL" SET IP=*
ARP -D %IP%
GOTO :G
:Z
IF EXIST %WINDIR%\SYSTEM32\NPPTOOLS.DLL REN %WINDIR%\SYSTEM32\NPPTOOLS.DLL NPPTOOLS.DL_ >NUL
ARP -D
PING %IP% -n 1 >NUL
FOR /F "TOKENS=12" %%I IN ('IPCONFIG /ALL^|FIND /I "Physical Address"') DO (ARP -S %LIP% %%I)
FOR /F "TOKENS=13" %%I IN ('IPCONFIG /ALL^|FIND /I "Default Gateway"') DO (SET DG=%%I)
PING %DG% -n 1 >NUL
FOR /F "TOKENS=2" %%I IN ('ARP -A^|FIND "%DG% "') DO (ARP -S %DG% %%I)
GOTO :G
:E
@ECHO OFF
EXIT
[