-2

Scapy を使用して、BGP レイヤーを持つパケットを送信しようとしています

BGP レイヤーをセットアップできないため、現在、この問題の初歩的な部分で立ち往生しています。指示に従って、通常の IP および TCP レイヤーをセットアップしました。

例えば:

>>a=IP(src="192.168.1.1",dst="192.168.1.2")/TCP(sport=179,dport=50)

しかし、これを行うと問題が発生します。

>>a=a/BGP()
NameError: name BGP is not defined

Scapy Github ( https://github.com/secdev/scapy/blob/9201f1cf1318edd5768d7e2ee968b7fba0a24c5e/scapy/contrib/bgp.py ) の contrib ファイルで BGP 実装を見たので、Scapy は BGP 実装をサポートしていると思います

私はネットワーキングに慣れていないので、BGP レイヤーのセットアップを手伝ってもらえないかと思っていました。

これを読んでくれてありがとう!

4

2 に答える 2

0

ここで助けようとするだけです。BGP タイプのパケットの経験はありませんが、提供されたリンクから bgp.py ファイルを scapy/layers にコピーしました。ls() を使用すると、次のことがわかりました。

BGPAuthenticationData : BGP Authentication Data
BGPErrorSubcodes : BGP Error Subcodes
BGPHeader  : BGP header
BGPNotification : BGP Notification fields
BGPOpen    : BGP Open Header
BGPOptionalParameter : BGP Optional Parameters
BGPPathAttribute : BGP Attribute fields
BGPUpdate  : BGP Update fields

次に、ls(BGPUpdate) を使用してこれを表示できます。

withdrawn_len : ShortField           = (None)
withdrawn  : FieldListField       = ([])
tp_len     : ShortField           = (None)
total_path : PacketListField      = ([])
nlri       : FieldListField       = ([])

そして、このパケットを作成できました:

pkt = pkt = IP()/TCP()/BGPUpdate()
pkt.show()
###[ IP ]###
  version   = 4
  ihl       = None
  tos       = 0x0
  len       = None
  id        = 1
  flags     = 
  frag      = 0
  ttl       = 64
  proto     = tcp
  chksum    = None
  src       = 127.0.0.1
  dst       = 127.0.0.1
  \options   \
###[ TCP ]###
     sport     = ftp_data
     dport     = http
     seq       = 0
     ack       = 0
     dataofs   = None
     reserved  = 0
     flags     = S
     window    = 8192
     chksum    = None
     urgptr    = 0
     options   = {}
###[ BGP Update fields ]###
        withdrawn_len= None
        withdrawn = []
        tp_len    = None
        \total_path\
        nlri      = []

さまざまなタイプの BGP レイヤー/パケットのすべてが何に使用されるのか、またはコミュニティ番号がどこに設定されるのかはわかりません。おそらく BGPPathAttribute(type=x) にあります。タイプ 5 は「LOCAL_PREF」で、コミュニティ値に対応する場合があります。このリンクを試してください。

pkt = BGPPathAttribute(type=5)
pkt.show()
###[ BGP Attribute fields ]###
  flags     = Transitive
  type      = LOCAL_PREF
  attr_len  = None
  value     = ''

とにかく、それが少し役立つことを願っています。

編集:忘れました。また、scapy/config.py の load_layers セクションに「bgp」を追加しました。373 行目。次のようにします。

   load_layers =  ["l2", "inet", "dhcp", "dns", "dot11", "gprs", "hsrp", "inet6", "ir", "isakmp", "l2tp",
               "mgcp", "mobileip", "netbios", "netflow", "ntp", "ppp", "radius", "rip", "rtp",
               "sebek", "skinny", "smb", "snmp", "tftp", "x509", "bluetooth", "dhcp6", "llmnr", "sctp", "vrrp",
               "ipsec","bgp"]   
于 2016-08-23T17:37:00.013 に答える