Determining Ethernet HW Address

Mark Hammond mhammond at skippinet.com.au
Tue Mar 28 06:30:53 EST 2000


"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.





More information about the Python-list mailing list