2014-12-15 4 views
2

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

[ my box ]--eth0--------------[ unknown device ] 

Я не могу найти способ arp/broadcast для получения IP-адреса устройства. Я понимаю, что если я использую multicast, устройство должно быть членом группы. Когда я arp или arp-scan, они просят меня назначить мой eth0-интерфейс IP, но у меня нет одного назначенного, я могу поместить его, если мне нужно, но я не уверен, что его нужно настроить, чтобы что-то обнаружить ,

Пример: У меня есть беспроводная IP-камера Linksys, и я хочу найти IP/Subnet. Не зная его подсеть/сетевую маску, я не знаю, как установить мой eth0.

Я написал программу C для анализа таблицы arp в Linux, но я не могу получить IP-адрес от локально подключенного устройства. Как уже упоминалось выше, я не могу использовать эти инструменты, не устанавливая eth0 на что-то.

ответ

1

Я думаю, что Ваш лучший шанс найти что-то, захватив весь входящий сетевой трафик, особенно в то время как неизвестное устройство загружается (с помощью tcpdump, wireshark или нечто подобное). Просто отфильтруйте трафик, который отправляется с мой ящик.

Скорее всего, вы увидите запросы DHCP и, возможно, ARP-запросы. Если устройство использует DHCP, самым простым решением будет запуск DHCP-сервера на eth0 (чтобы вы могли назначить IP-адрес этому устройству).

Если по какой-то причине вам необходимо запрограммировать на C (и сетевой захват дает ожидаемые результаты), libpcap может быть полезным.

Если все еще не удается, вы можете попытаться отключить неизвестный IP-адрес, используя поддельные ARP-пакеты (так что вам не нужно менять IP на eth0) и получать любые ответы.