Почему Scapy не распознает мой пользовательский слой?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему Scapy не распознает мой пользовательский слой?

Сообщение Anonymous »

В scapy я добавил слой с «bind_layers». Но похоже я сделал что-то не так и пакет не распознается корректно.
Пытаюсь добавить слой в scipy и не понимаю, где я не прав.

Код: Выделить всё

from scapy.data import ETHER_TYPES
from scapy.fields import XBitField, BitFieldLenField, ShortField, XShortEnumField
from scapy.layers.l2 import Ether, Dot1Q, LLC
from scapy.packet import Packet, bind_layers

def remove_layer(pkt, pos):
print('remove_layer N = ' + str(pos))
payload = pkt[pos].payload
pkt[pos - 1].remove_payload()
return pkt / payload

def remove_hsr(pkt):
print('remove_hsr')
print('layers:')
for layer in pkt:
print(layer.name)
if HSR in pkt:
print('HSR is here')
j = 0
for layer in pkt:
if layer is HSR:
print('HSR layer index: ' + str(j))
return remove_layer(pkt, j)
j += 1
print('remove_hsr : HSR not found')
return pkt

class HSR(Packet):
name = "HSR"
fields_desc = [
XBitField("path_id", 0, 4),
BitFieldLenField("lsdu_size", 0, 12),
ShortField("sequence_number", 0),
XShortEnumField("type", 0x9000, ETHER_TYPES),
]

bind_layers(Ether, HSR, type=0x892f)
bind_layers(Dot1Q, HSR, type=0x892f)

pkt_nohsr = '0060089fb1f300400540ef24000e810000200800450000a43b3b40004006b7548397208183972015048a17704e14e0754d3d609980187c70b13900000101080a0004f0c90199a3f3420007001d00c0000800c00000005e00d9025e00d9020000d9025e00420007001d00c0000900c00001005d00d8025d00d8020100d8025d00420007001d00c0000700c00001000100d80201000100010001005d00420007001d00c0000a00c00000000000d90200000000000000005e00568034cb'
pkt_nohsr = bytearray.fromhex(pkt_nohsr)
pkt_nohsr = Ether(pkt_nohsr)
print(pkt_nohsr)
pkt = '0060089fb1f300400540ef24892f10b60000000e810000200800450000a43b3b40004006b7548397208183972015048a17704e14e0754d3d609980187c70b13900000101080a0004f0c90199a3f3420007001d00c0000800c00000005e00d9025e00d9020000d9025e00420007001d00c0000900c00001005d00d8025d00d8020100d8025d00420007001d00c0000700c00001000100d80201000100010001005d00420007001d00c0000a00c00000000000d90200000000000000005e00568034cb'
pkt = bytearray.fromhex(pkt)
pkt = Ether(pkt)
print(pkt)
print(remove_hsr(pkt))
Мой заголовок здесь — «892f10b60000», где «892f» — индикатор моего типа.
Я соединил свой уровень с Ether и Dot1Q, потому что это возможные нижние уровни.
/>Этот код выдает результат:

Код: Выделить всё

802.3 00:40:05:40:ef:24 > 00:60:08:9f:b1:f3 / LLC / Raw / Padding
00:40:05:40:ef:24 > 00:60:08:9f:b1:f3 (0x892f) / HSR / Raw
remove_hsr
layers:
Ethernet
HSR is here
remove_hsr : HSR not found
00:40:05:40:ef:24 > 00:60:08:9f:b1:f3 (0x892f) / HSR / Raw

Код: Выделить всё

print(pkt)
не распознает внутренние слои с добавленным HSR.

Код: Выделить всё

HSR in pkt
верно, но для слоя в pkt есть только 1 итерация со слоем == Ether.
Что я сделал не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... stom-layer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему Scapy не распознает мой пользовательский слой?
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Слой [<класс 'scapy.layers.snmp.SNMP'>] не найден
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Сервер WAMP не распознает php, а Visual Studio также не распознает встроенный тег php
    Anonymous » » в форуме Php
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Сервер WAMP не распознает php, а Visual Studio также не распознает встроенный тег php
    Anonymous » » в форуме Php
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Pycharm распознает пакет, установленную с -e (редактируемым), но не распознает содержимое пакета
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»