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_devlist(): temp = [] alldevs=ctypes.POINTER(winpcapy.pcap_if_t)() errbuf= winpcapy.create_string_buffer(winpcapy.PCAP_ERRBUF_SIZE) if (winpcapy.pcap_findalldevs(ctypes.byref(alldevs), errbuf) == -1): print ("Error in pcap_findalldevs: %s\n" % errbuf.value) sys.exit(1) i=0 try: d=alldevs.contents except: print ("Error in pcap_findalldevs: %s" % errbuf.value) sys.exit(1) while d: temp += [str(d.name)] i += 1 if d.next: d=d.next.contents else: d=False if (i==0): print ("\nNo interfaces found! Make sure WinPcap is installed.\n") sys.exit(-1) #try: # winpcap.pcap_freealldevs(alldevs) #except: # print ("Error in pcap_freealldevs") return temp
def find_devices(self): self.devices = POINTER(pcap_if_t)() self.errbuf= create_string_buffer(PCAP_ERRBUF_SIZE) if (pcap_findalldevs(byref(self.devices ), self.errbuf) == -1): msg = "Error in pcap_findalldevs: %s\n" % self.errbuf.value print (msg) logging.error(msg) sys.exit(1)
def get_pcapinfo(devnum): temp1 = [] temp2 = [] alldevs=ctypes.POINTER(winpcapy.pcap_if_t)() errbuf= winpcapy.create_string_buffer(winpcapy.PCAP_ERRBUF_SIZE) if (winpcapy.pcap_findalldevs(ctypes.byref(alldevs), errbuf) == -1): print ("Error in pcap_findalldevs: %s\n" % errbuf.value) sys.exit(1) i=0 try: d=alldevs.contents except: print ("Error in pcap_findalldevs: %s" % errbuf.value) sys.exit(1) for i in range(0,devnum): d=d.next.contents if d.name: temp1 += [d.name] if d.description: temp1 += [d.description] if d.addresses: a=d.addresses.contents else: a=False while a: a_temp = [] if a.addr: a_temp += [cast2str(ctypes.cast(a.addr,ctypes.POINTER(sockaddr_in)))] else: a_temp += [404] if a.netmask: a_temp += [cast2str(ctypes.cast(a.netmask,ctypes.POINTER(sockaddr_in)))] else: a_temp += [404] temp2 += [a_temp,] if a.next: a=a.next.contents else: a=False #try: # winpcap.pcap_freealldevs(alldevs) #except: # print ("Error in pcap_freealldevs") return temp1, temp2
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)