|
HUNRYBECKY
银牌会员
积分 1179
发帖 442
注册 2006-9-9
状态 离线
|
『楼 主』:
[原创]通过内网主机IP或主机名求MAC
无聊之际,发个东西出来玩玩,有个小软件叫远程开机,那个小软件不仅可以实现通过输入的IP来获取对应主机的MAC地址,而且还可以通过MAC来远程开机。
至于如何使用MAC来远程开机,我想使用批出来很难实现(能实现的跟贴),但是如何根据IP或主机名求出对方的MAC则可以通过下面的代码实现:
@ECHO OFF
REM 通过IP或主机名来查询局域网主机的MAC地址
REM 本程序由小不点(秋语)制作,QQ:9399100
:G
CLS
SET /P IP=请你输入要查询的主机名称或其IP:
PING %IP% -n 1|FIND /I "could not"
IF "%ERRORLEVEL%"=="0" GOTO :G
FOR /F "TOKENS=2 DELIMS=[]" %%A IN ('PING %IP% -n 1^|FIND /I "["') DO SET IP=%%A
FOR /F "TOKENS=1-10" %%I IN ('ARP -A^|FIND "%IP%"') DO SET MAC=%%J
ECHO 你要查询主机%IP%的MAC是:%MAC%
PAUSE
|
|
2007-2-2 00:56 |
|
|
HUNRYBECKY
银牌会员
积分 1179
发帖 442
注册 2006-9-9
状态 离线
|
『第
2 楼』:
再修改下代码,修正不能获取本机MAC的错误,增加获取所有或指定IP段的MAC功能,再增加了MAC-IP绑定和解除绑定的功能。
另外由于获取所有的MAC比较慢,我开始使用PING命令发现慢的出奇怪,最后改为TRACERT命令速度快了一倍,但是扫描整个还是要1分种左右,如果有更好的方法希望跟贴
@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 [ Last edited by HUNRYBECKY on 2007-2-3 at 06:04 AM ]
|
|
2007-2-2 06:01 |
|
|
dj0733
初级用户
积分 138
发帖 55
注册 2007-2-2
状态 离线
|
『第
3 楼』:
支持楼上。。
最好还能这样“
Choice 是否输出到IP-MAC到TXT ?
呵呵。建议一下!
|
|
2007-2-2 08:28 |
|
|
bosskof
初级用户
积分 22
发帖 11
注册 2006-5-11
状态 离线
|
|
2007-2-2 09:35 |
|
|
PPdos
高级用户
积分 783
发帖 268
注册 2006-12-26
状态 离线
|
『第
5 楼』:
再给个查询厂商的批处理…^^
Mac厂商信息查询批处理
|
菩提本无树,明镜亦非台,本来无一物,何处惹尘埃. |
|
2007-2-2 12:19 |
|
|
bbq123bbq
初级用户
积分 197
发帖 77
注册 2006-9-19
状态 离线
|
|
2007-2-2 14:12 |
|
|
HUNRYBECKY
银牌会员
积分 1179
发帖 442
注册 2006-9-9
状态 离线
|
『第
7 楼』:
谢谢兄提供的查询,但是好象这个没有多大的用途,在无盘系统中应该还可以用到,用来获取厂商代码。能不能说下该程序有什么用途没有?这个好象是不能查询到完整MAC地址的,所以在我的程序上是用不上的。
|
|
2007-2-2 21:18 |
|
|
HUNRYBECKY
银牌会员
积分 1179
发帖 442
注册 2006-9-9
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by bosskof at 2007-2-2 09:35:
getmac /s |
|
这个命令用于获取本地真实物理MAC比较好,但是要获取外部MAC好象比较麻烦,毕竟要提供用户名和密码。
|
|
2007-2-3 02:17 |
|
|
electronixtar
铂金会员
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
9 楼』:
这是因为getmac实际上是通过 WMI 操作的
|
C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2007-2-3 04:50 |
|
|
fbwolf
初级用户
积分 56
发帖 22
注册 2006-12-13
状态 离线
|
|
2007-2-4 00:42 |
|