Scapy - удаление Dot1q (801,2 Q) из pcap - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь отправить TCP трафик на устройство с помощью скрипта Python.Мой скрипт читает конкретный pcap для обработки пакетов.В моем packet capture file есть тег VLAN Dot1Q, и я хотел бы удалить его, используя scapy в моем скрипте.

Вывод содержит следующее:

Ether / Dot1Q / IP/ TCP>: порт>: порт

Скажите, пожалуйста, как я могу удалить теги vlan в моем скрипте, используя scapy.

1 Ответ

0 голосов
/ 11 июня 2018

Вы должны пройти через все слои и найти Ether.Затем установите его полезную нагрузку на уровень 802.1q.Код выглядит следующим образом (это не точный код только по эскизу):

while not isinstance(layer, NoPayload):
    if (type(layer) is Ether):
        payload_inside_dot1q = layer.payload.payload
        layer.add_payload(payload_inside_dot1q)
        layer.type = 0x0800  # IPv4
    layer = layer.payload

Возможно, вам также следует исправить layer.chksum для слоя Ether.

UPD: вы также можете удалить 802.1q слой tcprewrite (https://linux.die.net/man/1/tcprewrite) при подготовке файла pcap:

tcprewrite --enet-vlan=del --infile=input.cap --outfile=output.cap
...