LINUX.ORG.RU

Сообщения freemadman

 

Имитация IGMPv3 трафика с помощью Scapy

Форум — General

Добрый день, пытаюсь понять как правильно имитировать трафик, что бы на маршрутизаторах появились записи о группах мультикаста. Схема проста, есть две убунты и два роутера между ними: U-R-R-U На них настроен PIM примерно так:

ip pim interface eth1 
ip pim interface eth2 
ip pim rp 50.50.50.1 group-prefix 230.0.0.30/32
ip pim rp 20.20.20.1 group-prefix 230.0.0.20/32
ip pim on

На убунтах слева направо я пытаюсь передавать пакеты IGMP сборку которых с горем пополам нашёл в интернетах: 1pc:

scapy
from scapy.all import * 
class IGMP3(Packet): 
  name = "IGMP3" 
  fields_desc = [ ByteField("type", 0x11), 
      ByteField("mrtime", 20), 
     XShortField("chksum", None), 
      IPField("gaddr", "230.0.0.30"), 
      IntField("others", 0x0)] 
  def post_build(self, p, pay): 
   p += pay 
   if self.chksum is None: 
    ck = checksum(p) 
    p = p[:2]+chr(ck>>8)+chr(ck&0xff)+p[4:] 
   return p

bind_layers(IP, IGMP3, frag=0, proto=2) 
p = IP(dst="224.0.0.22")/IGMP3() 
send(p, iface="eth1", loop=1,inter=0.01, count=100)
2pc:
from scapy.all import * 
class IGMP3(Packet): 
  name = "IGMP3" 
  fields_desc = [ ByteField("type", 0x22), 
      ByteField("mrtime", 20), 
     XShortField("chksum", None), 
      IPField("gaddr", "230.0.0.30"), 
      IntField("others", 0x0)] 
  def post_build(self, p, pay): 
   p += pay 
   if self.chksum is None: 
    ck = checksum(p) 
    p = p[:2]+chr(ck>>8)+chr(ck&0xff)+p[4:] 
   return p

bind_layers(IP, IGMP3, frag=0, proto=2) 
p = IP(dst="224.0.0.22")/IGMP3() 
send(p)

К сожалению ничего не выходит, если кто-то разбирается как это должно работать буду благодарен.

 , , ,

freemadman
()

Вопросы по репозиториям

Форум — General

 , ,

freemadman
()

RSS подписка на новые темы