Получите IP-адрес от MAC-адреса. arp -a не показывающий устройство

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

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

C:\Users\Leeroy>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

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

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

Ответ 1

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

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

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

Ответ 2

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

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

Обратите внимание, что вы должны заменить ВАШЕ-MAC ​​, с вашим MAC-адресом, сохранить одинарные кавычки

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

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

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

Ответ 3

Этот пакетный код отобразит ниже,

  • Имя ПК
  • IP-адрес
  • MAC-адрес
  • Описание компьютера (если доступно)

Сохраните приведенный ниже код в формате anyname.bat и запустите его. Он выводит результаты в отдельный текстовый файл.

    :: This Windows Batch(CMD) File fetches All the Details of the Nearby PC 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 / Computer Description)
    echo. > %cd%\PC_Details_Temp.txt
    echo Remote PC Details Fetching Script (PC Name / IP / Computer Description) details of the Nearby PC 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 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 ********************************************************************#

Скриншоты Для ссылок, введите описание изображения здесь

введите описание изображения здесь

Ответ 4

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

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

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

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

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

Ответ 5

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

netstat -n  

или

ipconfig /all 

Ответ 6

Я мог бы получить все, что вызывает трафик, с помощью: arp -an успешно.