Я хотел бы реализовать новый безопасный протокол ARP, который невосприимчив к отравлению ARP. Новый «SecureArp» будет содержать поле подписи, которое может быть проверено на согласованной функции hmac. Определения scapy выглядит следующим образом:Добавление нового протокола в scapy (Similiar to ARP)
class SecureArp(Packet):
name = "SecureARP"
fields_desc = [IPField("srcip", None),
MACField("srcmac", None),
IPField("dstip", None),
MACField("dstmac", "00:00:00:00:00:00"),
IntEnumField("opcode", 1, { 1: "request", 2: "response" }),
StrFixedLenField("challenge", "", length=24),
StrFixedLenField("signature", "", length=20)]
Проблемы я сталкиваюсь в том, что при получении такого SecureArp сообщения scapy не разобрать его на всех, и оставляет данные как «Raw». Я прочитал документацию SecDev о распространении на новый протокол и его очень неясно. Какие шаги следует предпринять, чтобы полученный пакет SecureArp автоматически анализировался? Спасибо
Спасибо за ответ. Дело в том, что я использовал bind_layers для нового типа (скажем, 1337). При создании пакета я использую Ethernet с типом = 1337, а под ним - новый слой, а при обнюхивании на другом конце слой 2 отображается как Dot3 вместо Ether, поэтому автоматическая диссекция не выполняется. Я попытался отправить его как с send(), так и sendp(), но по какой-то причине он всегда интерпретируется как Dot3. Есть предположения? – vito
Ну, это ответ. Вам нужно связать слои ... Проблема, с которой я столкнулся, заключалась в том, что я определил значение типа ниже 1500, и это привело к тому, что scapy лидировал его до Dot3. после увеличения значения до 1800 проблема была решена. Благодаря! – vito