예제 #1
0
 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)
예제 #2
0
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
예제 #3
0
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
예제 #4
0
    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
예제 #5
0
파일: legba.py 프로젝트: guzmud/anansi
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
예제 #6
0
파일: pcapture.py 프로젝트: qulotun/Kanzume
 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)
예제 #7
0
파일: legba.py 프로젝트: guzmud/anansi
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
예제 #8
0
 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)