Пакетный сниффер анализирует пакет дважды - PullRequest
1 голос
/ 27 мая 2020
RECEIVER_PORT = 5005 # target port
conn = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(3))
    while True:
        raw_data, addr = conn.recvfrom(65536)
        dest_mac, src_mac, eth_proto, data = ethernet_frame(raw_data)

        if eth_proto == 8:
            (version, header_length, ttl, proto, src, target, data) = ipv4_Packet(data)

            # Sniff UDP Communication between the sender and the receiver
            if proto == 17:
                src_port, dest_port, length, data = udp_seg(data)
                if dest_port == RECEIVER_PORT: 
                    print(TAB_2 + 'Source Port: {}, Destination Port: {}, Length: {}'.format(src_port, dest_port, length))

Мой python анализатор пакетов отслеживает обмен данными между двумя приложениями: отправителем и получателем. Это особенно интересно, когда пакет отправляется получателю. Кроме того, получатель получает пакеты ТОЛЬКО от отправителя. Всякий раз, когда пакет отправляется от отправителя к получателю, моя программа выполняет «if dest_port == RECEIVER_PORT» дважды, и я не понимаю почему? Я хочу, чтобы моя программа выполнила этот оператор один раз, поскольку я отправляю только один пакет от отправителя получателю.

...