1

目標は、すべてのローカルNICのリストではなく、接続されたローカルNICのMACアドレスを収集することです:)

socketとを使用することで、インターネットへの接続に使用されているIPを取得するためにconnect (to_a_website)使用できます。getsockname()

しかし、IPからローカルNICのMACアドレスを取得するにはどうすればよいですか?

質問の主な理由は、NICが複数あるかどうかです。

4

6 に答える 6

1

外部IPのMACアドレスを取得することはできません。

詳細については、C#で外部IPのMACアドレスを取得する方法の説明を参照してください。

于 2012-04-13T08:39:11.350 に答える
0

これを行う原始的な方法は、OS で利用可能なコマンドライン ツールを使用することです。subprocessモジュール (! ではありません)を使用してツールを実行しos.system()、出力を収集して解析します。

Windows では、必要なコマンドはipconfig /all.

Linux、OSX、BSD を含むほとんどの Unice では、ifconfig.

コマンド ライン ユーティリティを使用せずにこれを行うためのより良い方法があるかもしれませんが、私はそれを知りません...まだ.

ipconfig /allWindows XPでの出力例:

D:\Documents and Settings\LAYip>ipconfig /all

Windows IP Configuration

        Host Name . . . . . . . . . . . . : <redacted>
        Primary Dns Suffix  . . . . . . . : <redacted>
        Node Type . . . . . . . . . . . . : Hybrid
        IP Routing Enabled. . . . . . . . : No
        WINS Proxy Enabled. . . . . . . . : No
        DNS Suffix Search List. . . . . . : <redacted>
                                            <redacted>

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . : <redacted>
        Description . . . . . . . . . . . : Intel(R) 82579LM Gigabit Network Con
nection #2
        Physical Address. . . . . . . . . : 5C-26-0A-60-8D-C7
        Dhcp Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        IP Address. . . . . . . . . . . . : xxx.xxx.28.29
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : xxx.xxx.28.254
        DHCP Server . . . . . . . . . . . : xxx.xxx.23.13
        DNS Servers . . . . . . . . . . . : xxx.xxx.23.13
                                            xxx.xxx.23.11
        Lease Obtained. . . . . . . . . . : Thursday, 12 April 2012 9:14:41 AM
        Lease Expires . . . . . . . . . . : Friday, 20 April 2012 9:14:41 AM

Ethernet adapter VirtualBox Host-Only Network:

        Connection-specific DNS Suffix  . :
        Description . . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter
        Physical Address. . . . . . . . . : 08-00-27-00-28-E6
        Dhcp Enabled. . . . . . . . . . . : No
        IP Address. . . . . . . . . . . . : 192.168.56.1
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . :

ifconfigLinuxでの出力:

lws@helios:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:25:22:db:8c:b6
          inet addr:10.1.1.2  Bcast:10.1.1.255  Mask:255.255.255.0
          inet6 addr: fe80::225:22ff:fedb:8cb6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:322333 errors:0 dropped:0 overruns:0 frame:0
          TX packets:296952 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:40005876 (40.0 MB)  TX bytes:162343969 (162.3 MB)
          Interrupt:40 Base address:0x4000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:362 errors:0 dropped:0 overruns:0 frame:0
          TX packets:362 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:31806 (31.8 KB)  TX bytes:31806 (31.8 KB)
于 2012-04-13T08:35:22.117 に答える
0

システムの mac id を取得するもう 1 つの回避策は、ping コマンドを使用してシステムの名前を ping し、ping された IP アドレスに対して arp -a 要求を実行することです。その方法の失敗は、ping 応答を Python のメモリに書き込み、readline 操作を実行して IP アドレスを取得し、システム名、IP アドレス、および問題のマシンの mac id をディスプレイまたはテスト ファイルに出力します。

テスト手順の自動化を改善するためにシステム検証チェックと同様のことをしようとしていますが、スクリプトは当分の間Pythonにあります。

于 2013-06-05T01:05:20.093 に答える
0

ソケットから MAC アドレスを取得することはできません。TCP 処理チェーンの最下層にあるイーサネット フレームが必要です。そのためには、ネットワーク トラフィックを監視 (キャプチャ) する必要があり、パケットを解析していくつかのパケットを見つけます。ヘッダ。そこからMACアドレスなどの必要な情報を抽出します。

これは便利なコード スパンであり、それを行うのに役立ちます。

于 2012-04-13T09:05:44.313 に答える