want to get mac address of remote PC

后端 未结 4 2118
野的像风
野的像风 2021-01-07 04:07

I have my web page in python, i am able to get the ip address of the user, who will be accessing our web page, we want to get the mac address of the user\'s PC, is it possib

4条回答
  •  终归单人心
    2021-01-07 04:25

    from Active code

    #!/usr/bin/env python
    
    import ctypes
    import socket
    import struct
    
    def get_macaddress(host):
        """ Returns the MAC address of a network host, requires >= WIN2K. """
    
        # Check for api availability
        try:
            SendARP = ctypes.windll.Iphlpapi.SendARP
        except:
            raise NotImplementedError('Usage only on Windows 2000 and above')
    
        # Doesn't work with loopbacks, but let's try and help.
        if host == '127.0.0.1' or host.lower() == 'localhost':
            host = socket.gethostname()
    
        # gethostbyname blocks, so use it wisely.
        try:
            inetaddr = ctypes.windll.wsock32.inet_addr(host)
            if inetaddr in (0, -1):
                raise Exception
        except:
            hostip = socket.gethostbyname(host)
            inetaddr = ctypes.windll.wsock32.inet_addr(hostip)
    
        buffer = ctypes.c_buffer(6)
        addlen = ctypes.c_ulong(ctypes.sizeof(buffer))
        if SendARP(inetaddr, 0, ctypes.byref(buffer), ctypes.byref(addlen)) != 0:
            raise WindowsError('Retreival of mac address(%s) - failed' % host)
    
        # Convert binary data into a string.
        macaddr = ''
        for intval in struct.unpack('BBBBBB', buffer):
            if intval > 15:
                replacestr = '0x'
            else:
                replacestr = 'x'
            macaddr = ''.join([macaddr, hex(intval).replace(replacestr, '')])
    
        return macaddr.upper()
    
    if __name__ == '__main__':
        print 'Your mac address is %s' % get_macaddress('localhost')
    

提交回复
热议问题