HI
Я хочу перехватить пакеты UDP, присоединившись к группе многоадресной рассылки. после получения пакета я хочу проверить значение TTL из этого пакета UDP. Как я могу добиться этого с помощью Python?
Код Sammple, как указано ниже:
Вот
rec_port - любой порт, который я использовал для привязки; например: 9180
rec_hostname - любая группа многоадресной рассылки, к которой я присоединился, например: 239.2.2.2
#! /usr/bin/env python
.........
............
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", rec_port))
mreq = struct.pack("4sl", socket.inet_aton(rec_hostname), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
total_length = 0
while True:
print "Waiting for the packets, if no packets recevied by 10 seconds, than i will exit"
sock.settimeout(10)
data , address = sock.recvfrom(2048)
if len(data) > 1:
total_length=total_length + len(data)
print "Data is:", data
print "Length of data received is:", len(data)
print "Packet recevied from :", address[0]
print "Total Packet size:", total_length
else:
break
sock.close()
print "Total Packet size:", total_length