Настроить протокол STP через scapy - PullRequest
0 голосов
/ 14 июля 2020

Мне нужно сгенерировать и STP-трафик c с помощью scapy, и когда я визуализирую его через wireshark, я получаю результат, аналогичный показанному ниже заголовку: enter image description here when I run this code:

from scapy.all import STP
import scapy
from scapy.all import *

data='STP'
sendp(Ether(dst="01:80:c2:00:00:00")/LLC(dsap=0xaa, ssap=0xaa)/STP(bpdutype=0x00, bpduflags=0x01, portid=0x8002)/data, iface="eth1", count=200)

this is my wireshark output

введите описание изображения здесь Я не знаю, как изменить код организации на 00: 00: 0 c, потому что я считаю, что это тот, кто создает эту проблему

1 Ответ

1 голос
/ 17 июля 2020

вы забыли SNAP уровня

вот 2 примера, которые помогли мне отладить:

  • пример 1: ваш код.
  • пример 2: добавлен SNAP слой

для обоих примеров:

from scapy.layers.inet import SNAP
from scapy.layers.l2 import Ether, LLC, STP
data = "STP"

номер примера 1:

packet = (
    Ether(dst="01:80:c2:00:00:00")
    / LLC(dsap=0xAA, ssap=0xAA)
    / STP(bpdutype=0x00, bpduflags=0x01, portid=0x8002)
    / data
)
packet.show2()

вывод:

###[ Ethernet ]### 
  dst       = 01:80:c2:00:00:00
  src       = 4c:d9:8f:77:3b:33
  type      = 0x8870
###[ LLC ]### 
     dsap      = 0xaa
     ssap      = 0xaa
     ctrl      = 3
###[ SNAP ]### 
        OUI       = 0x0
        code      = 0x1
###[ 802.3 ]### 
           dst       = 00:00:00:00:00:00
           src       = 00:00:00:00:00:00
           len       = 0
###[ Padding ]### 
              load      = '\x00\x00\x00\x00\x00\x00\x80\x02\x01\x00\x14\x00\x02\x00\x0f\x00STP'

Вы видите, как scapy декодировать слой с именем SNAP сразу после уровня LL C? это делает декодирование неверным после

, поэтому давайте добавим его, чтобы все декодирование было верным:

пример 2: добавить слой SNAP

packet = (
    Ether(dst="01:80:c2:00:00:00")
    / LLC(dsap=0xAA, ssap=0xAA)
    / SNAP()
    / STP(bpdutype=0x00, bpduflags=0x01, portid=0x8002)
    / data
)
packet.show2()

вывод:

###[ Ethernet ]### 
  dst       = 01:80:c2:00:00:00
  src       = 4c:d9:8f:77:3b:33
  type      = 0x8870
###[ LLC ]### 
     dsap      = 0xaa
     ssap      = 0xaa
     ctrl      = 3
###[ SNAP ]### 
        OUI       = 0x0
        code      = 0x10b
###[ Spanning Tree Protocol ]### 
           proto     = 0
           version   = 0
           bpdutype  = 0
           bpduflags = 1
           rootid    = 0
           rootmac   = 00:00:00:00:00:00
           pathcost  = 0
           bridgeid  = 0
           bridgemac = 00:00:00:00:00:00
           portid    = 32770
           age       = 1.0
           maxage    = 20.0
           hellotime = 2.0
           fwddelay  = 15.0
###[ Raw ]### 
              load      = 'STP'

кажется, намного лучше. Я не пробовал с wirehark, но, по крайней мере, scapy, похоже, доволен им.

...