Использование квадратных скобок для заголовка пакета в scapy - PullRequest
1 голос
/ 27 января 2020

У меня есть вопрос, связанный с данными, которые мы получаем при использовании квадратных скобок в scapy.

Ссылочный код:

#!/usr/bin/python3
from scapy.all import *

def spoof_pkt(pkt):
    a = pkt[IP]

pkt = sniff(filter='tcp',prn=spoof_pkt)

Приведенный выше код пытается перехватить пакет tcp. Мой вопрос заключается в том, что когда я использую синтаксис, такой как pkt[IP], в scapy, я получаю только заголовок IP или весь пакет, начиная с заголовка IP?

1 Ответ

1 голос
/ 27 января 2020

Вы получите весь пакет, включая и следуя заголовку IP:

>>> a = Ether()/IP()/ICMP()
>>> a[IP]
<IP  frag=0 proto=icmp |<ICMP  |>>

Если вы хотите использовать только уровень IP, вам придется удалить его полезную нагрузку:

>>> c = a.copy()[IP]
>>> c.remove_payload()
>>> c
<IP  |>

Обратите внимание, что пакет и все его подполя являются изменяемыми

...