Я пытаюсь создать ответ ARP и отправить его (широковещательно), чтобы все хосты в сети поверили, что один хост имеет поддельный MAC-адрес.
Например, целевой хост для «изоляции» находится по адресу 192.168.3.6 и имеет MAC 00: 11: 22: 33: 44: 55.
И моя машина находится в 192.168.3.9 и имеет MAC 66: 77: 88: 99: aa: bb.
Я отправляю пакет, содержащий следующую информацию (используя libcrafter и C ++):
// Ethernet packet containing the ARP reply
Ethernet packet source MAC: 66:77:88:99:aa:bb
Ethernet packet destination MAC: FF:FF:FF:FF:FF:FF
// ARP reply
ARP operation: Reply
Sender IP: 192.168.3.6
Sender MAC: aa:bb:cc:dd:ee:ff
Target IP: 192.168.3.255
Target MAC: FF:FF:FF:FF:FF:FF
Это работает, но только около 40 лет.
Я получаю следующую запись кэша arp:
? (192.168.3.6) at aa:bb:cc:dd:ee:ff [ether] on eth0
Через 40 с поддельный MAC-адрес перезаписывается исходным, действительным MAC-адресом 192.168.3.6, и я получил:
? (192.168.3.6) at 00:11:22:33:44:55 [ether] on eth0
Я использую машины Debian 8 Может кто-нибудь сказать мне, почему это работает, но только на несколько секунд?
Заранее спасибо.
ОБНОВИТЬ:
Я отправлял один ответ ARP в секунду.
Если я отправляю один ARP-ответ каждые 5 секунд, тогда он работает лучше, за исключением нескольких коротких периодов, в течение которых целевой хост может получать пакеты от другого хоста.
Есть ли механизм, способный забыть ответы ARP от флудера?
Задача ещё не решена.
Других решений пока нет …