9

ネットワーク上の特定の MAC アドレスをすべて Python スクリプト内から検索したいと考えています。ネットワーク内のすべてのアクティブな IP アドレスのマップを既に持っていますが、MAC アドレスを収集する方法がわかりません。何か案は?

4

8 に答える 8

12

ARPが必要です。Python の標準ライブラリにはそのためのコードが含まれていないため、外部プログラムを呼び出す必要があるか (OS に「arp」ユーティリティがある場合があります)、自分でパケットをビルドする必要があります (おそらくScapyなどのツールを使用して) 。

于 2008-09-17T17:28:21.520 に答える
1

Python自体からそれを取得する組み込みの方法はないと思います。

私の質問は、ネットワークから IP 情報をどのように取得していますか?

ローカル マシンから取得するには、ほとんど問題なく ifconfig (unix) または ipconfig (windows) を解析できます。

于 2008-09-17T17:27:49.760 に答える
1

純粋な Python ソリューションが必要な場合は、Scapyを見てパケットを作成できます (ARP 要求を送信し、応答を検査する必要があります)。または、外部プログラムの呼び出しを気にしない場合は、使用できますarping(Un*x システムでは、Windows に相当するものは知りません)。

于 2008-09-17T17:30:54.277 に答える
1

Python でこれを行うネイティブな方法はないようです。Windows では「ipconfig /all」、Linux では「ifconfig」の出力を解析することをお勧めします。いくつかの正規表現で os.popen() を使用することを検討してください。

于 2008-09-17T17:31:18.223 に答える
0

プラットフォームによって異なります。*nix を使用している場合は、「arp」コマンドを使用して、特定の IP (IPv4 を想定) アドレスの MAC アドレスを検索できます。それが機能しない場合は、アドレスに ping を実行して確認するか、(BPF またはその他のメカニズムを使用して) 生のネットワークにアクセスできる場合は、独自の ARP パケットを送信できます (ただし、これはおそらくやり過ぎです)。

于 2008-09-17T17:29:29.913 に答える
0

「arp」の出力を解析する必要がありますが、カーネル ARP キャッシュには、それらのホストが Python スクリプトが実行されているホストと通信した場合にのみ、それらの IP アドレスが含まれます。

ifconfig を使用して、ローカル インターフェイスの MAC アドレスを表示できますが、LAN 上の MAC アドレスは表示できません。

于 2008-09-17T17:32:21.917 に答える
0

Mark Pilgrim は、現在のマシンで Netbios モジュールを使用して Windows でこれを行う方法について説明しています。Netbios モジュールは、python.org で入手できる Win32 パッケージの一部として入手できます。残念ながら、現時点ではモジュールのドキュメントが見つかりません。

于 2008-09-17T17:38:25.007 に答える
-1

Python は OS 固有の問題に対処することを意図していないため (解釈され、クロスプラットフォームであることが想定されています)、外部コマンドを実行してそうします。

UNIX では、コマンドは次のとおりです。ifconfig

パイプとして実行すると、目的の結果が得られます。

import os
myPipe = os.popen2("/sbin/ifconfig","a")
print(myPipe[1].read())
于 2008-09-17T19:13:45.543 に答える