es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener el tiempo de llegada de paquetes utilizando python/scapy?

Estoy tratando de escribir un programa en Python utilizando Scapy para obtener varios detalles del paquete, como la IP/puerto origen/destino. Como parte de esto, necesito obtener el tiempo de llegada del paquete, el tiempo entre los paquetes en cada dirección y el número total de paquetes y bytes en cada dirección.

Es muy similar a https://stackoverflow.com/questions/35310104/can-reading-sessions-from-a-pcap-file-with-scapy-be-made-more-memory-efficient

En el siguiente código, pkttime no funciona ¿Cómo puedo obtener el tiempo de llegada del paquete? Gracias por tu ayuda.

from scapy.all import *

pcap_file = "test.pcap"

a = rdpcap(pcap_file)

sessions = a.sessions()

for k, v in sessions.items():

tot_packets = len(v)

proto, source, dir, target = k.split()
srcip, srcport = source.split("":"")
dstip, dstport = target.split("":"")
if dir == ''>'':
   direction="saliente"
else:
   direction="entrante"
pkttime = v.time
print('%s,%s,%s,%s,%s,%s,%s,%s\n' % (srcip, dstip, proto, srcport,
                                      dstport, tot_packets, direction, pkttime))


Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puedes usar el método sessions() del objeto rdpcap para obtener el tiempo de llegada de los paquetes. El método sessions() devuelve un diccionario de paquetes, donde cada clave es una tupla de la forma (protocolo, origen, dirección, destino) y cada valor es una lista de paquetes. Luego, puedes usar el atributo time de cada paquete para obtener el tiempo de llegada del paquete.

    Por ejemplo:


    for k, v in sessions.items():
    pkttime = [pkt.time for pkt in v]
    print(pkttime)

Comments are closed.