<p>只是想在这里帮忙。我对BGP类型的数据包没有经验,但是。。。我复制了bgp.py公司从你提供的链接文件到scapy/layers。使用ls()我发现了以下内容:</p>
<pre><code>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
</code></pre>
<p>然后我可以使用say ls(bgpudate)来显示:</p>
^{pr2}$
<p>并且能够创建这个包:</p>
<pre><code>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 = []
</code></pre>
<p>我不确定所有不同类型的BGP层/包用于什么目的,也不知道社区号码将设置在哪里。可能在bgpathattribute(type=x)中。类型5是“LOCAL_PREF”,可能与社区值相对应。试试这个<a href="http://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/28784-bgp-community.html" rel="nofollow">Link.</a></p>
<pre><code>pkt = BGPPathAttribute(type=5)
pkt.show()
###[ BGP Attribute fields ]###
flags = Transitive
type = LOCAL_PREF
attr_len = None
value = ''
</code></pre>
<p>不管怎样,希望这能有所帮助。在</p>
<p>编辑:
忘记。我还将“bgp”添加到scapy的load_layers部分/配置.py. 第373行。像这样:</p>
<pre><code> 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"]
</code></pre>