Программное использование ARP - PullRequest
1 голос
/ 16 марта 2010

Мне нужен код на C или C ++, скомпилированный под Linux, чтобы иметь возможность взять список IP-адресов произвольного числа удаленных хостов и получить MAC-адрес Ethernet для каждой из них.Эти хост-машины могут находиться в одной подсети или в другой подсети за маршрутизатором.Это нормально, если MAC-адрес некоторых или всех удаленных хостов является адресом интерфейса на маршрутизаторе.В конечном итоге я хочу передать IP-адрес и MAC-адрес FPGA, которая будет использовать эти фрагменты информации для форматирования и отправки пакетов UDP / IP через Ethernet на хосты.Очевидно, что FPGA также будет предоставлен собственный MAC-адрес и IP-адрес для заполнения MAC-адреса источника и IP-адреса источника в пакетах.

Есть ли какой-то код, на который можно указать, который может создавать и транслировать ARPпакеты на эти удаленные машины и получить обратно ответные пакеты ARP, чтобы можно было извлечь MAC-адреса назначения?

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Я рекомендую изучить арпинг, который выполняет несколько идентичную работу. Он берет IP-адреса и MAC-адреса и пытается получить дополнительную информацию. Или просто пингует их.

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

1 голос
/ 16 марта 2010

Часть того, что вы хотите сделать, требует простого программирования сокетов.

http://mixter.void.ru/rawip.html

Исходный код команды linux arp даст остальное, что вам нужно. Вот ссылка:

http://www.comp.nus.edu.sg/~cs4236/readings/out/html/arp_8c-source.html

...