2010-03-20 173 views
3

我正在尋找一些Linux代碼來查找以太網地址的IP地址。我想我必須做一些反ARP欺騙,但我沒有找到任何例子...如何從遠程主機的以太網地址獲取IP地址?

+0

你的意思是你想要一個來自MAC的IP嗎? – pablochan

+0

@Fred:當你說「Linux代碼」時,你是指編程語言中的代碼嗎?什麼語言? –

+0

以太網地址是一個MAC地址,所以是的 - 你需要使用ARP/RARP來轉換MAC和IP地址。 –

回答

2

對於已與之通信的計算機,您可以查看其arp條目。例如,這在/proc/net/arp中以文本格式提供。找到一個你知道但沒有與之通信的MAC地址是非常困難的。最接近的匹配,協議明智的,將是RARP,但很少使用,所以你不可能得到迴應。

您可以隨時掃描您的本地子網,以確保您在arp表中獲得完整視圖。例如,請參閱fping以瞭解執行此操作的有效方法。請注意,主機實際上並不需要響應有問題的ping出現在ARP表中,所以即使在本地防火牆等情況下,此功能也很有用。

+0

@calmh好,所以沒有其他的辦法。使用ping或fping發送ICMP數據包還是使用類似arping的東西更好? – Fred

+0

Arping會更有效率,因爲它避免了ICMP步驟對於您的目的不必要的步驟。但總的來說,fping可能會更快,因爲它並行化更多,並且實際上是爲了快速掃描子網而製作的。 最好的可能是自己快速發送arp問題,比如arping。使一個線程儘可能快地發送請求(或者具有合理的速率限制),另一個線程監聽傳入的響應。這樣你幾秒鐘就可以獲得/ 24子網的完整圖像。 –