Python получает ips и macs из сети - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь получить все IP-адреса и связанные с ними MAC-адреса из сети.

До сих пор у меня есть следующий код:

eth = Ether(dst = "ff:ff:ff:ff:ff:ff")
arp = ARP(pdst = '198.13.13.1')
answered = srp1(eth / arp)
print answered[1].hwsrc
print answered[1].psrc

Но это только дает мне MAC того, что я ввожу.

Я думаю, что должен использовать:

answered, unanswered = srp(eth/arp)

И измените pdst с адресом подсети, но я не знаю, как это сделать.

Есть идеи?

1 Ответ

0 голосов
/ 17 мая 2018

Вам просто нужно ввести свою сеть в поле pdst. Вы хотите использовать timeout, потому что некоторые зонды, вероятно, не получат ответ. Например:

ans, unans = srp(Ether(dst=ETHER_BROADCAST) / ARP(pdst="198.13.13.0/24"), timeout=1)

Тогда вам нужно разобрать ans. Если вы хотите связать MAC и IP-адреса, вы можете создать список кортежей. Например:

res = [(pr.psrc, pr.hwsrc) for _, pr in ans]
print res

Вы также можете использовать arping(), специализированную функцию для этой цели:

ans, unans = arping("198.13.13.0/24")
ans.show()
...