Получите IP от MAC-адреса. Арп-а не показывая прибор

Я пытаюсь написать пакетный файл, который должен найти динамически назначенный IP-адрес моего телефона Android, когда он подключен к сети (маршрутизатор Tenda WiFi).

поэтому я пытаюсь arp -a и поиск MAC-адреса моего телефона, чтобы я мог получить его IP-адрес из таблицы.

C:UsersLeeroy>arp -a

Interface: 192.168.0.100 --- 0xb
  Internet Address      Physical Address      Type
  192.168.0.1           c8-3a-35-35-f6-68     dynamic
  192.168.0.255         ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  224.0.0.252           01-00-5e-00-00-fc     static
  239.255.255.250       01-00-5e-7f-ff-fa     static
  255.255.255.255       ff-ff-ff-ff-ff-ff     static

проблема в том, что он не отображается в таблице! Я пытался!--3--> но он все еще не появляется. Я попытался запросить 192.168.0.100 (IP моего настольного ПК) из браузера телефона, и это, конечно, ставит телефон на радар. Но у меня нет возможности вручную делать это каждый раз, когда я хочу, чтобы он появился в таблице arp.

как я могу получить телефон Android, чтобы появиться в таблице arp (не делая ничего из него, кроме подключения к WiFi)?

решила: решено с помощью ping. Это займет не больше секунды или двух. EDIT 2: обновлено еще несколько. Вот окончательный пакетный файл:

@echo off
:top
:: Loop through arp table entries and look for my Android device's MAC address
for /f "tokens=1-5 skip=3" %%f  in ('arp -a') do (if "%%g"=="xx-xx-xx-xx-xx-xx" set ip=%%f)

if "%ip%"=="" (
    echo Discovering network...
    :: Ping all IPs from 192.168.0.1 to 254
    for /L %%N in (1,1,254) do start /b ping -n 1 -w 200 192.168.0.%%N >nul
    timeout 1 >nul
    goto :top
) else (
    echo Mapping network location to drive K
    net use k: http://%ip%:8080 /user:francis underwood /persistent:no 
    if exist k: explorer k:
    :: Using FTP (please configure user and pass)
    :: explorer ftp://user:pass@%%f:6262 
    )
)

5 ответов


Я пробовал это, и это работает:

for /L %N in (1,1,254) do start /b ping -n 1 -w 200 192.168.0.%N

если телефон имеет ICMP включен, у вас не должно быть проблем.


Если вы хотите найти IP от MAC, сделайте это

$  arp -n | grep -w -i 'YOUR-MAC' | awk '{print }'

Примечание необходимо заменить ВАШ-MAC, С вашим mac-адресом, держите одинарные кавычки

теперь, если вы хотите найти MAC-адрес с некоторого IP, попробуйте следующее:

$  arp -n | grep -w -i 'YOUR-IP' | awk '{print }'

наслаждайтесь!


этот пакетный код приведет к следующему,

  1. имя компьютера
  2. IP-адрес
  3. MAC-адрес
  4. Описание Компьютера (Если Доступно)

пожалуйста, сохраните приведенный ниже код в anyname.летучая мышь!--15--> отформатируйте и запустите его. Он выведет результаты в отдельном текстовом файле.

    :: This Windows Batch(CMD) File fetches All the Details of the Nearby PC's of Same VLAN (Upto 254 host's).
    :: Windows OS (CMD)
    :: Author : [M.S.Arun][1]

    :: #****************************************************************** Start of Script ********************************************************************#

    @echo off
    title Remote PC Details Fetching Script(PC Name / IP's / Computer Description)
    echo. > %cd%\PC_Details_Temp.txt
    echo Remote PC Details Fetching Script (PC Name / IP's / Computer Description) details of the Nearby PC's of Same VLAN.(Upto 254 Hosts)
    echo.
    set /p input_ip="Please Enter the IP Range(Eg:192.168.1) :  " && echo
    set /p input_ip_start="Please Enter Start IP Range(Eg:1) :  " && echo
    set /p input_ip_end="Please Enter End IP Range(Eg:254) :  " && echo
    echo. >> %cd%\PC_Details_Temp.txt
    @echo on
    for /l %%i in (%input_ip_start%, 1, %input_ip_end%) do nbtstat -a %input_ip%.%%i | findstr /c:"MAC" /c:"<00>" | findstr /c:"MAC" /c:"UNIQUE" >> %cd%\PC_Details_Temp.txt && echo     IP Address  = %input_ip%.%%i >> %cd%\PC_Details_Temp.txt
    @echo off
    echo. > %cd%\PC_Details_Logs.txt
    echo. > %cd%\PC_Details_Logs.txt
    echo This Batch Script fetches All the Details of the Nearby PC's of Same VLAN.(Starting from 1 to 254 host's) >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    echo PC Host Name: >> %cd%\PC_Details_Logs.txt
    find "UNIQUE" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    echo PC IP Address: >> %cd%\PC_Details_Logs.txt
    find "IP" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    echo PC MAC Address: >> %cd%\PC_Details_Logs.txt
    find "MAC" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    echo PC Seat No's. and Vnet No's: >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    net view /all >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    echo. >> %cd%\PC_Details_Logs.txt
    arp -a >> %cd%\PC_Details_Logs.txt
    :: del %cd%\PC_Details_Temp.txt
    echo.
    echo Completed Successfully..!
    echo.
    pause

    :: #****************************************************************** End of Script ********************************************************************#

Скриншоты Для Ссылок, enter image description here

enter image description here


это может сработать

netstat -n  

или

ipconfig /all 

М. С. Аруна ответ близок к лучшим. У меня была эта проблема для получения IP-адреса некоторых виртуальных машин, для которых все, что у меня было, это MAC-адрес. Много ответов, таких как M. S. Aruns, по всему stackoverflow и в других местах, но никто не объясняет их и не объясняет решение правильно (IMHO).

Я попробовал технику pinging всей подсети, а затем выполните команду arp. Проблема была в том, что мой IP-диапазон имел 60k + возможный IP-адрес и после сканирования всех из них (что было не так просто и действительно уродливо с командой start) таблица arp была действительно малонаселенной... Кстати, это заняло около 30 секунд, даже при попытке "начать пинг". В конце концов я понял, что arp, будучи таблицей кэша, периодически сбрасывает себя, поэтому этот метод редко удавался.

решение состоит в том, чтобы пинговать всю подсеть, но после каждого пинга выполните команду arp, чтобы увидеть, соответствует ли IP-адрес вашему MAC-адресу, что гарантирует, что вы не потеряете информацию из-за характера кэша таблиц arp. Чтобы сделать это правильно, я реализовал это на Java; метод isReachable () действительно чище, и на моем экране нет подсказок cmd, появляющихся повсюду. Кроме того, 60K + диапазон сканирования IPs занимает до 10 секунд с использованием потоков Java. Я думаю, что это более безопасный способ, чем пакетный сценарий...

посмотреть метод threadedScan () здесь который принимает массив IPs и ищет MAC-адрес.

надеюсь, это поможет ;)