Subject: Re: Determining Ethernet HW Address - DN [1]


"Mark Hammond" <mhammond@skippinet.com.au> - 28 Mar 2000 - comp.lang.python

 "Darrell" <darrell@dorb.com> wrote in message
 news:dhSD4.7202$JE5.97355@typhoon.nyroc.rr.com...
 > "Jerome Chan" <eviltofu@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.

Last modified
2000-07-20

(195.108.246.52)

Note: you are looking at
the snapshot of an old wiki
- much of this information
is likely to be very outdated