def get_default_device(destaddr):
    """
    If any default device is available in options use that, otherwise,
    Return the first (default) network device, which is usually 'eth0' under
    Linux and Windows and varies under BSD.
    address.recognize(destaddr) == address.IPv4:
    address.recognize(destaddr) == address.IPv6:

    @return: name of the first device.
    """

    # TODO: read device from options
    #device = "eth0"
    devices = pypcap.findalldevs()
    exp = re.compile('usb*', re.IGNORECASE)
    for dev in devices:
        if re.match(exp, dev) or dev == 'any':
            print
        else:
            if address.recognize(destaddr) == address.IPv4:
                if destaddr == '127.0.0.1':
                    device = 'lo'
                    break
                else:
                    saddr = netifaces.ifaddresses(dev)[
                        netifaces.AF_INET][0]['addr']
                    if saddr == '127.0.0.1':
                        device = dev
                        continue
                    else:
                        device = dev
                        break
            elif address.recognize(destaddr) == address.IPv6:
                if destaddr == '::1' or destaddr == '0000:0000:0000:0000:0000:0000:0000:0001' or destaddr == '0:0:0:0:0:0:0:1':
                    device = 'lo'
                    break
                else:
                    saddr = netifaces.ifaddresses(dev)[
                        netifaces.AF_INET6][0]['addr']
                    saddr_re = re.compile('fe80*', re.IGNORECASE)
                    if saddr == '::1':
                        continue
                    elif re.match(saddr_re, saddr):
                        device = dev
                        continue
                    else:
                        device = dev
                        break
            else:
                device = devices[0]

    print devices
    print device
    #device = netifaces.interfaces()[0]
    return device
def get_default_device(destaddr):
    """
    If any default device is available in options use that, otherwise,
    Return the first (default) network device, which is usually 'eth0' under
    Linux and Windows and varies under BSD.
    address.recognize(destaddr) == address.IPv4:
    address.recognize(destaddr) == address.IPv6:

    @return: name of the first device.
    """

    # TODO: read device from options
    #device = "eth0"
    devices = pypcap.findalldevs()
    exp = re.compile('usb*', re.IGNORECASE)
    for dev in devices:
        if re.match(exp,dev) or dev == 'any':
            print 
        else:
            if address.recognize(destaddr) == address.IPv4:
                if destaddr == '127.0.0.1':
                    device = 'lo'
                    break
                else:
                    saddr = netifaces.ifaddresses(dev)[netifaces.AF_INET][0]['addr']
                    if saddr == '127.0.0.1':
                        device = dev
                        continue
                    else:
                        device = dev
                        break
            elif address.recognize(destaddr) == address.IPv6:
                if destaddr == '::1' or destaddr == '0000:0000:0000:0000:0000:0000:0000:0001' or destaddr == '0:0:0:0:0:0:0:1':
                    device = 'lo'
                    break
                else:
                    saddr = netifaces.ifaddresses(dev)[netifaces.AF_INET6][0]['addr']
                    saddr_re = re.compile('fe80*', re.IGNORECASE)
                    if saddr == '::1':
                        continue
                    elif re.match(saddr_re , saddr):
                        device = dev
                        continue
                    else:
                        device = dev
                        break
            else:
                 device = devices[0]
                        
    print devices
    print device
    #device = netifaces.interfaces()[0]
    return device
示例#3
0
 def test_get_available_devices(self):
     if umit.umpa.config['libpcap'] == 'pypcap':
         from umit.umpa.sniffing.libpcap import pypcap
         assert umit.umpa.sniffing.get_available_devices()==pypcap.findalldevs()
示例#4
0
 def test_get_available_devices(self):
     if umit.umpa.config['libpcap'] == 'pypcap':
         from umit.umpa.sniffing.libpcap import pypcap
         assert umit.umpa.sniffing.get_available_devices(
         ) == pypcap.findalldevs()
示例#5
0
 def test_findalldevs(self):
     try:
         assert pypcap.findalldevs() == pcap.findalldevs()
     except UMPASniffingException:
         py.test.skip("no suitable devices for sniffing found. "
                     "propably not sufficent priviliges.")