WinFAQ - сайт о Windows, программах, администрировании и локальных сетях


Часто задаваемые вопросы по Windows 95/98/ME/NT/2000/XP

Руководство по выживанию для администраторов и пользователей




Как получить список соответствия MAC адресов IP адресам в сети?

Самый простой путь получения такого списка - это провести ping каждого host'а в подсети и просмотреть ARP кэш, однако это требует большого времени и данные в кэше хранятся всего в течение 2 минут. Альтернативный вариант - пинговать "broadcast mask" подсети (невозможно пинговать всю сеть, т.к. вы непосредственно связаны только с нодами (узлами) в вашей подсети, все другие запрoсы проходят через "gateways" (шлюзы), так что вы получите в кэше ARP данные только для шлюзов (кроме данных по подсети)).

Что такое "Broadcast mask"? "Broadcast mask" легко получить если маска подсети в формате 255.255.255.0 или 255.255.0.0 . Например, если IP адрес 134.189.23.42 и маска подсети 255.255.0.0, то "broadcast mask" будет 134.189.255.255. Но в более общем случае, для определения "broadcast mask" выполните следующее:

  1. Для каждого бита из маски подсети, равного 1, соответствующий бит в "broadcast mask" устанавливается равным, соответствующему биту в адресе.
  2. Для каждого бита из маски подсети равного 0, соответствующий бит в "broadcast mask" устанавливается равным 1.

например, IP адрес 158.234.24.98 и маска подсети 255.255.248.0

Network

Host

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0
1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1

Байт 1

Байт 2

Байт 3

Байт 4

Первая строка - маска подсети 255.255.248.0, вторая строка IP адрес 158.234.24.98 и третья строка "broadcast mask" 158.234.31.255.

Ну и теперь для получения списка соответствия MAC адресов IP адресам выполните:

ping <broadcast mask>
arp -a

Для записи результатов в файл, добавьте "> filename" (например, arp -a > iptomac.lst).

К сожалению, вследствии ограниченности встроенной в NT команды ping, приведенное выше решение под NT не работает корректно. Поэтому, создайте следующий команданый файл:

REM arpping.bat

ping -n 1 -l 1 %1.%2

arp -a %1.%2

Вы можете запустить его следующим образом:

C:\> for /l %i in (1,1,254) do arpping 160.82.220 %i

В данном примере, будет сгенерирован список всех соответствий MAC адресов IP адресам от 160.82.220.1 до 160.82.220.254. Далее, Вы можете записать все это в файл и затем, по поиску найти все вхождения нужных значений. Например:

REM test.bat

for /l %%i in (1,1,254) do arpping.bat 160.82.220 %%i

Обратите внимание, что нужно использовать именно двойной знак %%. Затем, запустите его:

C:\> test.bat > file.txt

После чего, произведите поиск в listing.txt по, например, dynamic

C:\> findstr dynamic file.txt

160.82.220.1 00-00-0c-60-8b-41 dynamic

160.82.220.9 00-60-97-4b-bf-4c dynamic

160.82.220.13 00-10-4b-49-94-e1 dynamic

160.82.220.17 00-80-5f-d8-a4-8b dynamic

160.82.220.22 00-a0-d1-02-a4-cf dynamic

160.82.220.25 00-60-08-75-0d-7a dynamic

160.82.220.26 00-10-4b-44-e4-73 dynamic

160.82.220.33 00-10-4b-44-d6-33 dynamic

160.82.220.34 00-10-4b-4e-67-6a dynamic

160.82.220.35 00-60-97-4b-c4-53 dynamic

160.82.220.39 00-10-4b-44-eb-ae dynamic

160.82.220.41 00-10-4b-49-7b-f7 dynamic

160.82.220.42 00-00-f8-21-7a-7f dynamic

160.82.220.43 08-00-20-88-82-57 dynamic

160.82.220.221 00-80-5f-88-d0-55 dynamic

В результате, получился искомый список соответствий MAC адресов IP адресам



Copyright © 1999-2003 Alexander Naoumovitch, Andrew Harchenko and SavageNoName
Авторские права на оригиналы статей: Microsoft Corporation, SavillTech Ltd, Simon Clausen