Scapy — srp1 не видит фрейм ответа на L2, а вот tcpdump видит его нормально

отправка пакета scapy, как показано ниже, через eth3

ans, unans = srp1(REQUEST, iface=self.iface)
print ans, unans

вызов никогда не возвращается, я тоже пробовал srp. (отправить/отправить/понюхать тоже). Я вижу ответ как None или вызов просто зависает.

Тем не менее, я прекрасно видел запрос и ответ на tcpdump.

listening on eth3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:52:52.565683 00:26:55:27:1c:a2 (oui Unknown) > Broadcast, ethertype Unknown (0x88f8), length 34:
    0x0000:  ffff ffff ffff 0026 5527 1ca2 88f8 0001
    0x0010:  000b 1500 0000 0000 0000 0000 0000 ffff
    0x0020:  eaf4
16:52:52.576476 00:04:25:1c:a0:02 (oui Unknown) > Broadcast, ethertype Unknown (0x88f8), length 76:
    0x0000:  ffff ffff ffff 0004 251c a002 88f8 0001
    0x0010:  000b 9500 0028 0000 0000 0000 0000 0000
    0x0020:  0000 f1f0 f100 0000 0000 0000 0000 0000
    0x0030:  0000 0000 0000 0803 0087 1634 XXXX XXXX
    0x0040:  XXXX 0000 XXXX XXXX XXXX ffff

person mungayree    schedule 30.04.2015    source источник
comment
Можете ли вы включить код для запроса, который вы отправляете?   -  person RyPeck    schedule 30.04.2015
comment
Что именно вы ищете? ЗАПРОС — это фрагмент пакета. Я попробовал утилиту C для отправки байтов, и на интерфейсе (eth1) все работает нормально.   -  person mungayree    schedule 01.05.2015
comment
У меня такая же проблема с пользовательским протоколом L2. Проблема в том, что send-n-receive не распознает ответный пакет (содержащий полезную нагрузку, отличную от запрашиваемой). Я не уверен, как связать уровень пакета ответов   -  person Miro    schedule 19.07.2015


Ответы (1)


Я понял это и делюсь этим -

Если вы определяете новый протокол с пользовательскими полезными нагрузками, уровень ответа должен реализовать метод «ответов»:

e.g:

class MyAnswer(Packet):
    name = "MyAnswer"
    fields_desc = [ByteEnumField("isOk", 0. BooleanFields)]

    def answers(self, other):
         return isinstance(other, MyRequest)
person Miro    schedule 19.07.2015