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» дважды, и я не понимаю почему? Я хочу, чтобы моя программа выполнила этот оператор один раз, поскольку я отправляю только один пакет от отправителя получателю.