Есть ли способ ARP ping на Windows?

26

В Linux и других системах есть утилита arping, которая может использоваться для отправки запросов ARP («ping») и показа ответов, так же, как утилита «ping», но с использованием ARP вместо ICMP.

Есть ли способ сделать то же самое на Windows? (Я использую Windows 7)

Этьен Дечам
источник

Ответы:

15

Арпинг для окон действительно существует.

http://freshmeat.net/projects/arping/

Исправление: это для Linux, MAC OSX и т. Д., Но может быть установлено на Windows через Cygwin.

Ryaner
источник
Чтобы быть понятным, все в сети в настоящее время должно отвечать на ARP, поэтому практически все «поддерживает» пинг ARP. Вопрос в том, есть ли у них хорошая утилита, упакованная с луком для этого.
Qix
14

Если вы очистите кэш arp в Windows (arp -d), а затем попытаетесь пропинговать ip-адрес, произойдет передача arp.

Проверьте это с Wireshark.

Стеф Хейлен
источник
Это поведение гарантировано?
Pacerier
2
@Pacerier: Да, поскольку ICMP (ping) построен поверх уровня IP. Уровень IP нуждается в аппаратном адресе для данного IP-адреса, чтобы знать, кому отправлять его пакет. Если кэш ARP пуст, у уровня IP не будет иного выбора, кроме как выдать запрос ARP, прежде чем он сможет отправить пакет.
Кэмерон
1
Такое поведение НЕ гарантируется. Это произойдет только в том случае, если IP-адрес доступен в соответствии с правилами подсети; в противном случае он будет использовать IP-адрес шлюза по умолчанию для выдачи запроса ARP.
Питер Крэбтри
6

Команда WinXP ARP предназначена только для отображения данных. Попробуйте Nmap, это бесплатно и довольно легко для этого типа сканирования. Nmap доступно на insecure.org.


источник
4
Это, вероятно, ближе всего к утилите arping (используя nmap -PR -sP <host>). Поздравляю, вы выиграли.
Этьен Дечамс
1
@ e-t172 В более новых версиях nmap команда nmap -PR -sn <host>предпочтительнее. -sPне рекомендуется. Кроме того, это работало только для меня, когда я запускал его как root.
Nic
5

Встроенный способ сделать это в Windows:

cmd /V /C "set "IP=10.0.2.2" & FOR /L %i in (1,0,2) do @ping -n1 -w 1000 "!IP!" >NUL & arp -a | findstr /c:"!IP! "
искры
источник
Вау, это хардкор - я люблю себя! И это почти работает здесь. На самом деле я должен был добавить пробел между, -nи 1это стало:... @ping -n 1 ...
saulius2
Этот цикл работает вечно. Я думаю, что вы намеревались, cmd /V /C "set "IP=10.0.2.2" & FOR /L %i in (1,1,2) do @ping -n 1 -w 1000 "!IP!" >NUL & arp -a | findstr /c:"!IP! "что работает дважды и поэтому выбирает дубликаты MAC-адресов.
parsley72
3

Это не совсем ARP-запрос «ping», но запуск «arp inet_addr (IP-адрес)» из командной строки отправит один ARP-запрос на хост, указанный в (IP-адрес). Затем вы можете запустить «arp -a», чтобы увидеть результат.

joeqwerty
источник
Просто не работает. Я получил свой запрос обратно, но ничего не произошло. Сниффер не показывал никаких ARP-запросов. Тот же результат, если IP-адрес еще не находится в таблице ARP.
Этьен Дечамс
Правильно, вы не получите результат обратно. Команда отправляет одиночный ARP-запрос на IP-адрес, который затем можно увидеть, введя команду arp -a. Я сказал, что это не совсем пинг arp, но он отправляет один запрос arp.
Joeqwerty
Нет, это не так. Как я уже сказал, сетевой сниффер не показывает никакого запроса ARP, и запись в arp -a не добавляется.
Этьен Дечамс
Это странно. Он работает точно так же, как я описал в Windows 7, но не в Windows XP. Сожалею.
Joeqwerty
1
У меня не работает и на Win7, извините.
Кэмерон
3

Попробуйте "arp-ping.exe"

Думаю, я бы добавил этот инструмент, который запускается прямо из командной строки:

Параметры командной строки arp-ping.exe

Usage: arp-ping.exe [options] target
        -s ip : specify source ip
        -n X  : ping X times
        -t    : ping until stopped with CTRL-C
        -x    : exit immediately after successful ping
        -i X  : ping every X seconds
        -d    : do an 'arp -d *' between pings (requires Administrator)
                (-d prevents cached ARP responses on Windows XP.)
        -c    : include date and time on each line
        -m X  : ignore failures that take less than X milliseconds
        -.      : print a dot (.) for every ignored failure
        -l    : print debug log
        -v    : print version and exit

По сравнению с опциями командной строки Linux "arping"

Usage: arping [-fqbDUAV] [-c count] [-w timeout] [-I device] [-s source] destination
-f : quit on first reply
-q : be quiet
-b : keep broadcasting, don't go unicast
-D : duplicate address detection mode
-U : Unsolicited ARP mode, update your neighbours
-A : ARP answer mode, update your neighbours
-V : print version and exit
-c count : how many packets to send
-w timeout : how long to wait for a reply
-I device : which ethernet device to use (eth0)
-s source : source ip address
destination : ask for what ip address
Valamas
источник
1

Как получить таблицу ARP с помощью IP Helper API http://www.codeguru.com/cpp/in/internet/internetprotocolip/article.php/c6153

GetIpNetTable: извлекает информацию из таблицы разрешения адресов.

SetIpNetEntry: добавляет запись в таблицу ARP.

DeleteIpNetEntry: удаляет запись из таблицы ARP.

CreateIpNetEntry: создает запись в таблице ARP.

FlushIpNetTable: удаляет все записи ARP для указанного интерфейса из таблицы ARP.

SendARP: отправляет запрос ARP для получения физического адреса, который соответствует указанному IP-адресу назначения.

calloatti
источник
0

К сожалению, в Windows нет встроенного инструмента для этого, есть некоторые сторонние инструменты, такие как Netscan , но это не бесплатно.

Сэм Коган
источник
0

Я считаю, что вы можете arp-ping с CAIN , который является бесплатным.

GregD
источник
0

Hardping - достойная программа, которая делает это.

Есть полная версия, которая стоит денег, это больше программа ping sweep, но я просто использую бесплатную версию. Свободный делает только 1 IP за один раз, но это все, что мне было нужно.

Вы бы использовали его как c:> hardping 192.168.1.1, и он отвечал бы с Mac или нет.

Я думаю, что они сняли его со своего сайта, но вы все еще можете найти его, прибегая к помощи "жестких бесплатных программ"


источник
-1
arp -a your.ip.here.jo

например: arp -a 192.168.0.1

суперпростые
источник
Эта команда будет искать только в текущем arp-кэше, а не выдавать новый arp "У кого есть 192.168.0.1?" запрос
Chriz