Возврат socket.recvfrom () в python3 - PullRequest
0 голосов
/ 10 июля 2019

Я делаю основную программу, которая прослушивает соединение и получает все пакеты для последующего анализа, и я не могу правильно использовать функцию socket.recvfrom.

Я использую socket.recvfrom (65565), чтобы получить кадр, а затем проанализировать его. Согласно документации на python3, он должен возвращать кортеж с данными и адресом источника для этого IP-фрейма.

Вместо этого у меня есть кортеж данных и массив. Во втором массиве у меня есть интерфейс, на котором был захвачен пакет плюс другие элементы. Я не могу найти в нем IP-адрес.

Есть ли у кого-нибудь представление о том, что представляют собой эти другие элементы и как получить исходный IP-адрес

def create_socket():
    try:
        s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,
                socket.htons(0x0003))
    except socket.error as msg:
        print ("Ne peut pas créer la socket. Code erreur : %d. Message : %s" %
                (msg[0], msg[1]))
        sys.exit()

    return s

def listen_trafic(sock):
    while True:
        packet, address = sock.recvfrom(
        print ("address %s" % socket.inet_ntoa(address))
        # generates an error

...

...

...