uniquely identifying a machine...

Marcus Stojek stojek at part-gmbh.de
Mon Mar 10 15:10:38 EST 2003


Got it !
I knew it has been a famous name. 

Author:Mark Hammond (mhammond at skippinet.com.au)
Subject:Re: Determining Ethernet HW Address 

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


--------------------------------------------------------------------------------



Chris Spencer <clspence at one.net> schrieb:

>This might not be a direct Python question, but I thought I'd pose it anyways.
>
>I have a need, for licensing purposes, to be able to uniquely identify a
>machine.  For various policy reasons, we can not rely on the TCP/IP stack being
>active.  So uniquely identifying a machine by IP address, machine name, or NIC
>address is not possible.
>
>Cross-platform is a plus, but definately not necessary.
>
>Anyone out there have any ideas?
>
>Chris.





More information about the Python-list mailing list