def FindAdapter(self): from winpcapy import pcap_if_t,pcap_findalldevs,pcap_freealldevs alldevs = POINTER(pcap_if_t)() if pcap_findalldevs(byref(alldevs),self.ErrBuf) == -1: print("Error in pcap_findalldevs: %s\n" % self.ErrBuf.value) i=0 try: d = alldevs.contents except: print("Error in pcap_findalldevs: %s" % self.ErrBuf.value) while d: i = i + 1 print("%d. %s" % (i, d.name)) if(d.description): print(" (%s)\n" % (d.description)) else: print(" (No description available)\n") if d.next: d = d.next.contents else: d = False if i == 0: print("No interfaces found! Make sure WinPcap is installed.") else: pcap_freealldevs(alldevs)
def iflist(): ''' return a list of devices supported by winpcap ''' alldevs = ctypes.POINTER(capy.pcap_if_t)() d = ctypes.POINTER(capy.pcap_if_t) errbuf = ctypes.create_string_buffer(capy.PCAP_ERRBUF_SIZE) ## Retrieve the device list if (capy.pcap_findalldevs(ctypes.byref(alldevs), errbuf) == -1): raise Exception("Error in retrieveing interface list: %s\n" % errbuf.value) return devices = [] d = alldevs.contents while d: devices.append({'name': d.name, 'description': d.description}) if d.next: d = d.next.contents else: d = False ## Free the device list capy.pcap_freealldevs(alldevs) return devices
def iflist(): """ return a list of devices supported by winpcap """ alldevs = ctypes.POINTER(capy.pcap_if_t)() d = ctypes.POINTER(capy.pcap_if_t) errbuf = ctypes.create_string_buffer(capy.PCAP_ERRBUF_SIZE) ## Retrieve the device list if capy.pcap_findalldevs(ctypes.byref(alldevs), errbuf) == -1: raise Exception("Error in retrieveing interface list: %s\n" % errbuf.value) return devices = [] d = alldevs.contents while d: devices.append({"name": d.name, "description": d.description}) if d.next: d = d.next.contents else: d = False ## Free the device list capy.pcap_freealldevs(alldevs) return devices
def get_interfaces(): alldevs = ctypes.POINTER(winpcapy.pcap_if_t)() errbuf = ctypes.create_string_buffer(winpcapy.PCAP_ERRBUF_SIZE) if (winpcapy.pcap_findalldevs(ctypes.byref(alldevs), errbuf) == -1): raise RuntimeError('pcap_findalldevs failed: %s' % errbuf.value) interfaces = [] try: d = alldevs.contents while d: interfaces.append({ 'name': d.name.decode('utf-8'), 'description': ( d.description.decode('utf-8') if d.description else 'N/A' ), 'mac': GCap._get_address(d.name.decode('utf-8')), }) if d.next: d = d.next.contents else: d = None finally: winpcapy.pcap_freealldevs(alldevs) return interfaces
def get_interfaces_iter(self): "generator over string representations of available sniffable network devices." try: # create a pointer to a pcap_if struct. the pcap_if struct is # pretty much a linked list node with information that will be # filled in by pcap_findalldevs_ex devices = POINTER(winpcapy.pcap_if_t)() # populate pcap_if struct linked list with a list of devices... if winpcapy.pcap_findalldevs(devices, self._error_buffer) == -1: self.raise_exception(source='errorbuffer') # yield node names of linked list in form of a generator d = devices.contents while True: yield d.name if d.next: d = d.next.contents else: break except: self.raise_exception(source='errorbuffer') finally: # always release the list of interfaces back to the system winpcapy.pcap_freealldevs(devices)
def free_devices(self): pcap_freealldevs(self.devices) self.devices = None