want to get mac address of remote PC

后端 未结 4 2114
野的像风
野的像风 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:18

    The dpkt package was already mentioned on SO. It allows for parsing TCP/IP packets. I have not yet used it for your case, though.

    0 讨论(0)
  • 2021-01-07 04:23

    I have a small, signed Java Applet, which requires Java 6 runtime on the remote computer to do this. It uses the getHardwareAddress() method on NetworkInterface to obtain the MAC address. I use javascript to access a method in the applet that calls this and returns a JSON object containing the address. This gets stuffed into a hidden field in the form and posted with the rest of the fields.

    0 讨论(0)
  • 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')
    
    0 讨论(0)
  • 2021-01-07 04:28

    All you can access is what the user sends to you.

    MAC address is not part of that data.

    0 讨论(0)
提交回复
热议问题