Обзор кода: UDP Multicast Sniffer в Python3 - PullRequest
0 голосов
/ 27 июня 2019

Я хотел бы пересмотреть код этого короткого сценария, который я написал, чтобы прослушивать многоадресные UDP-пакеты. Я хотел бы подумать, правильно ли я следую сетевым протоколам. Я также хотел бы вывести данные в виде шестнадцатеричного на терминал, я делаю это правильно?

import socket, struct, binascii

ip = input("Enter IP: ")
port = int(input("Enter port: "))

# Create the socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# Bind to the server address
s.bind(("", port))

# Tell the operating system to add the socket to the multicast group
# on all interfaces.
mreq = struct.pack("4sl", socket.inet_aton(ip), socket.INADDR_ANY)
s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

# Receive loop
while True:
    data = s.recv(2048)
    print(binascii.hexlify(data))
    for i in range(25):
        open("test{}".format(i), "wb+").write(data[i:])

    # For trying to track specific offsets for static multicasts,
    # comment lines 21 and 22, uncomment line below, then change offset value.
    # sys.stdout.buffer.write(data[8:])
...