2016-08-23 3 views
0

나는 BGP 층은 Scapy

나는 BGP 층을 설정할 수 없습니다이기 때문에 나는 현재이 문제의 기초적인 부분에 붙어있는 패킷을 보낼 Scapy를 사용하려고를 사용하여 BGP 레이어를 설정. 지침에 따라 일반 IP 및 TCP 계층을 설정했습니다.

예 :

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

하지만이 할 때 문제가 발생합니다 : 나는 Scapy Github에서 (https://github.com/secdev/scapy/blob/9201f1cf1318edd5768d7e2ee968b7fba0a24c5e/scapy/contrib/bgp.py)에서의 contrib 파일의 BGP 구현을 보았다

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

을 내가 Scapy가하는 생각 BGP 구현을 지원합니다.

네트워킹에 익숙하지 않아 BGP 레이어를 설정하는 데 도움이 될지 궁금합니다.

시간을내어 읽어 주셔서 감사합니다.

답변

0

여기를 시도해 보겠습니다. 나는 BGP 타입의 패킷에 대한 경험이 없다. 그러나 당신이 scapy/layers에 제공 한 링크에서 bgp.py 파일을 복사했다. 이 보여 그때 사용할 수

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) : LS를 사용하여() 나는 다음을 발견

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"입니다. 사용해보기 Link.

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

어쨌든 조금 도움이 되었으면합니다.

편집 : 잊어 버렸습니다. 또한 "bgp"를 scapy/config.py의 load_layers 섹션에 추가했습니다. 이렇게하면 :

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"] 
+0

BGP는 TCP를 사용하므로 OSPF와 같은 방식의 패킷이 아닙니다. BGP 데이터 그램은 TCP 세그먼트에 포함됩니다. –

+0

답장을 보내 주셔서 감사합니다! bgp.py 파일을 내 scapy layers 폴더로 옮겼지만 ls()를 사용할 때 나타나지 않습니다. 재건축과 같이 내가 놓치고있는 단계가 있습니까? –

+0

@JamesButler 죄송합니다. 내 대답을 편집했습니다. – Noob123