Determining Ethernet HW Address

Jerome Chan eviltofu at rocketmail.com
Tue Mar 28 11:48:28 EST 2000


In article <NJ0E4.5818$V56.23602 at news-server.bigpond.net.au>, "Mark 
Hammond" <mhammond at skippinet.com.au> wrote:

> "Darrell" <darrell at dorb.com> wrote in message
> news:dhSD4.7202$JE5.97355 at typhoon.nyroc.rr.com...
> > "Jerome Chan" <eviltofu at rocketmail.com> wrote in message
> > > Is there a portable way of determining the Ethernet HW
> Address?
> > >
> > For windows without using Win32 try parsing the output of
> ipconfig /all
> 
> I couldnt resist :-)  In win32all-130 you will be able to use the
> Netbios function:
> 
>     from netbios import *
>     # code ported from "HOWTO: Get the MAC Address for an
> Ethernet Adapter"
>     # MS KB ID: Q118623
>     ncb = NCB()
>     ncb.Command = NCBENUM
>     la_enum = LANA_ENUM()
>     ncb.Buffer = la_enum
>     rc = Netbios(ncb)
>     if rc != 0: raise RuntimeError, "Unexpected result %d" %
> (rc,)
>     for i in range(la_enum.length):
>         ncb.Reset()
>         ncb.Command = NCBRESET
>         ncb.Lana_num = ord(la_enum.lana[i])
>         rc = Netbios(ncb)
>         if rc != 0: raise RuntimeError, "Unexpected result %d" %
> (rc,)
>         ncb.Reset()
>         ncb.Command = NCBASTAT
>         ncb.Lana_num = ord(la_enum.lana[i])
>         ncb.Callname = "*               "
>         adapter = ADAPTER_STATUS()
>         ncb.Buffer = adapter
>         Netbios(ncb)
>         print "Adapter address:",
>         for ch in adapter.adapter_address:
>             print "%02x" % (ord(ch),) ,
>         print
> 
> Yields on my dual-NIC server:
> Adapter address: 00 a0 cc 54 22 2d
> Adapter address: 00 40 05 6b fc ca
> 
> (both of which are correct :-)
> 
> Mark.
> 
> 

The question had a portable section :P which was my main question. I've 
need the ethernet hw address given an IP and the Python code runs on 
Win32 and Linux... so...



More information about the Python-list mailing list