只需知道MAC地址即可获取IP

时间:2016-06-28 12:39:13

标签: windows batch-file networking

我正在尝试写一个批处理文件,它给了我一个IP回来,但我只知道MAC地址

arp -a

不会为我工作,因为我以前从未ping过那个IP。我想在网络中搜索它,只需知道MAC地址。

  

信息:IP是静态的。

5 个答案:

答案 0 :(得分:2)

编辑:刚刚意识到你在Windows上的位置。遗憾的是,没有本地方法可以使用Windows对braodcast地址执行ping操作,但您可以使用this answerFOR /L %i in (1,1,255) do @ping -n 1 192.168.1.%i | find "Reply"中的技巧。但这似乎超级慢。

以前的答案如下。

据我所知,您必须填写ARP缓存以执行您想要的操作 This answer就是您所需要的。

正如帖子所说,你可以:

  • 通过ping您的广播地址(ping -b -c1 192.168.1.255 ping您局域网的所有主机,用实际广播地址替换IP)
  • 整理您的整个网络(fping -a -g 192.168.1.0/24,替换为您的实际网络掩码)
  • nmap网络(nmap -sP 192.168.1.0/24
  • nbtscan(仅限Windows主机,nbtscan 192.168.1.0/24

然后在你的ARP缓存中查找。

答案 1 :(得分:2)

假设您的子网是192.168.1.xxx

@echo off
REM clear arp cache (optional):
arp -d
REM ask everybody on the subnet for a response:
for /l %%a in (1,1,255) do start /b ping -n 2 -w 500 192.168.1.%%a >nul
REM wait for the processes to finish:
timeout 2 >nul
REM show the responses (with IP and MAC):
arp -a

找到IP后,您可以尝试使用以下命令解析计算机名称:

ping -a -n 1 192.168.1.xxx

编辑找到了加快速度的方法。

答案 2 :(得分:1)

for /f "skip=3 delims=\" %%A in ('net view ^| findstr /v /C:"The command completed successfully"') do Echo %%A >> "%userprofile%\desktop\computerlist.txt"

列表打开了计算机。

 wmic /node:@computerlist.txt nicconfig where macaddress='whatever:whatever:etc' get ipaddress /format:htable

获取指定MACAddress的IP

 wmic /node:@computerlist.txt nicconfig get ipaddress /format:htable

获取计算机上所有MAC地址的IP地址。

答案 3 :(得分:0)

我记得 sachadee 发布了此代码 ScanIP-MAC.bat

@echo off
Title Scan for IP and MAC Adress on LAN
mode con cols=60 lines=20
Color A
set ip=192.168.1.1
set debut=1
set fin=10
if exist ping.txt  (del  ping.txt)
if exist ping2.txt (del  ping2.txt)
if exist ping3.txt (del  ping3.txt)
if exist ping4.txt (del  ping4.txt)
for /L %%i in (%debut%,1,%fin%) do (echo Recherche de la machine : %ip:~0,9%.%%i
    for /f "tokens=5 delims= " %%f in ('ping -4 -n 1 %ip:~0,9%.%%i ^|find /i "32"') do (echo %%f >> ping.txt
    )
        for /f "tokens=1 delims= " %%k in ('Type ping.txt ^|findstr /i "19"') do echo %%k > ping2.txt
            for /f %%l in (ping2.txt) do (arp -a %%l >> ping3.txt
        )
            )
Cmd /U /C Type ping3.txt > ping4.txt
Del ping.txt
Del ping2.txt
Del ping3.txt
Start ping4.txt

答案 4 :(得分:-1)

我不是批处理用户所以我不知道命令,但我知道这样做的方法是向你的网络发送广播ping请求,并使用wireshark检查来自回复的mac地址。