FCS не реализована в кадрах Ethernet в Scapy по двум причинам.
- Во-первых, исторически Scapy испытывал проблемы с получением FCS, если он был в конце пакета (но этоэто уже не так, потому что FCSField - это дело).
- Во-вторых, большинство ОС не предоставляют его по умолчанию, и когда это происходит, нет никакого способа узнать, что на самом деле существует FCS, кроме предположения, чтозаполнение в конце пакета - это FCS.Если вы чувствуете, что это должно быть добавлено, вам, вероятно, следует открыть вопрос на их трекере.
Оригинальный ответ:
Похоже, вы новичок вScapy, тебе следует начать с официального документа или учебника .
Scapy автоматически создает аргументы chksum
при сборке пакета.Создание пакета означает преобразование его в байты: использование bytes(pkt)
или raw(pkt)
(или pkt.build()
)
Например, show2()
показывает, как выглядит пакет при сборке:
>>> pkt = IP()/UDP()/ICMP()
>>> pkt.show2()
###[ IP ]###
version= 4
ihl= 5
tos= 0x0
len= 36
id= 1
flags=
frag= 0
ttl= 64
proto= udp
chksum= 0x7cc6 <-------
src= 127.0.0.1
dst= 127.0.0.1
[...]
Контрольная сумма рассчитывается только в том случае, если она равна None
, так что она позволяет вам установить пользовательскую (неправильную), когда вам это нужно.Если вы хотите проверить, что он содержит, вы можете собрать пакет вручную:
>>> pkt = IP(raw(pkt))
>>> pkt[IP].chksum
31942