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.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para actualizar solo el campo del contador y dejar los otros campos sin duplicados, puedes modificar el código de la siguiente manera:

    import pyshark
    from collections import Counter
    
    capture = pyshark.LiveCapture(interface='wlo2', bpf_filter='arp')
    capture.sniff(timeout=5)
    
    count = Counter()
    
    for packet in capture:
        mac = packet.arp.dst_hw_mac
        ip = packet.arp.dst_proto_ipv4
    
        count[(mac, ip)] += 1 # incrementa el contador del par (mac, ip)
    
        # solo imprime la información del paquete si no ha sido visto antes
        if count[(mac, ip)] == 1:
            print(packet.sniff_time, count[(mac, ip)], mac, ip)
    

    En este código, hemos eliminado las variables keys y already_seen ya que no son necesarias. También hemos movido la inicialización del Counter al comienzo, fuera del bucle, para que persista entre iteraciones.

    Dentro del bucle, extraemos los campos MAC e IP del paquete como antes. Luego aumentamos el contador del par (mac, ip) utilizando el operador +=, que agregará 1 al contador si ya existe o creará una nueva entrada con un conteo de 1 si no existe.

    Finalmente, solo imprimimos la información del paquete si su contador es 1, lo que significa que no ha sido visto antes. Esto asegura que solo se actualice el campo del contador y no se dupliquen los otros campos.

Comments are closed.