programacion modulos lista libreria importar estadistica descargar clases bibliotecas python tcp pcap

modulos - ¿Cómo analizar paquetes en una biblioteca de python?



numpy (4)

¿Cómo analizar un paquete desde un archivo .pcap o desde una interfaz, usando python?

Estoy buscando específicamente una solución que utiliza una biblioteca bien documentada.


Intenté eso y luego probé pcapy. Elijo pcapy porque mi uso fue similar a un ejemplo que encontré en Google.

http://snipplr.com/view/3579/live-packet-capture-in-python-with-pcapy/ (o vea el mismo código copiado a continuación)

import pcapy from impacket.ImpactDecoder import * # list all the network devices pcapy.findalldevs() max_bytes = 1024 promiscuous = False read_timeout = 100 # in milliseconds pc = pcapy.open_live("name of network device to capture from", max_bytes, promiscuous, read_timeout) pc.setfilter(''tcp'') # callback for received packets def recv_pkts(hdr, data): packet = EthDecoder().decode(data) print packet packet_limit = -1 # infinite pc.loop(packet_limit, recv_pkts) # capture packets



Te recomiendo que uses Pyshark. esto es envoltorio para tshark. también es compatible con todos los filtros tshark, decoder lib, ... y fácil de usar. Este es un gran paquete para analizar el archivo .pcap y también para capturar

https://pypi.python.org/pypi/pyshark

código de muestra (desde el enlace):

import pyshark cap = pyshark.FileCapture(''/root/log.cap'') cap >>> <FileCapture /root/log.cap> print cap[0] Packet (Length: 698) Layer ETH: Destination: BLANKED Source: BLANKED Type: IP (0x0800) Layer IP: Version: 4 Header Length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport)) Total Length: 684s Identification: 0x254f (9551) Flags: 0x00 Fragment offset: 0 Time to live: 1 Protocol: UDP (17) Header checksum: 0xe148 [correct] Source: BLANKED Destination: BLANKED ... dir(cap[0]) [''__class__'', ''__contains__'', ''__delattr__'', ''__dict__'', ''__dir__'', ''__doc__'', ''__format__'', ''__getattr__'', ''__getattribute__'', ''__getitem__'', ''__getstate__'', ''__hash__'', ''__init__'', ''__module__'', ''__new__'', ''__reduce__'', ''__reduce_ex__'', ''__repr__'', ''__setattr__'', ''__setstate__'', ''__sizeof__'', ''__str__'', ''__subclasshook__'', ''__weakref__'', ''_packet_string'', ''bssgp'', ''captured_length'', ''eth'', ''frame_info'', ''gprs-ns'', ''highest_layer'', ''interface_captured'', ''ip'', ''layers'', ''length'', ''number'', ''pretty_print'', ''sniff_time'', ''sniff_timestamp'', ''transport_layer'', ''udp''] cap[0].layers [<ETH Layer>, <IP Layer>, <UDP Layer>, <GPRS-NS Layer>, <BSSGP Layer>] ....