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
Pruebe scapy . Es un programa muy poderoso para la inspección, manipulación y creación de paquetes.
Puedes usarlo para construir tus propias herramientas .
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>]
....
pycapfile
se puede utilizar pycapfile
. Enlace a pip
: https://pypi.python.org/pypi/pypcapfile