簡體   English   中英

Scapy中的IPv6過濾器

[英]IPv6 filter in Scapy

我正在使用scapy嗅探具有特定源ip /目標ip的IPv6數據包。

例:

filter1 ="tcp port "+`port`+ " and ip6 host 2001::4 and tcp[tcpflags] & tcp-syn !=0 and !icmp and !arp and not host "+host_ip

            a= sniff(count =1,filter=filter1,iface=eth)

這將引發異常,如下所示:scapy.error.Scapy_Exception:篩選器分析錯誤

我從未使用過scapy,但是我在您的filter1表達式中注意到您具有:

+`port`+

...但是您有:

+host_ip

也許您需要在host_ip周圍host_ip

如果這不是問題,您也可以嘗試在工具中使用捕獲之前,使用tcpdump之類的工具來驗證捕獲過濾器,例如tcpdump -d ${filter1}dumpcap dumpcap -d ${filter1}

對於復雜的過濾器,scapy允許您使用python函數作為過濾器:

desiredip = "2001::4"
undesiredip = host_ip

def isMyPacket (pkt):
    if IPv6 in pkt:
        pktip6 = pkt[IPv6]
        if pktip6.src == desiredip or pktip6.dst == desiredip:
            if pktip6.src != undesiredip and pktip6.dst != undesiredip:
                if TCP in pktip6:
                    if pktip6[TCP].flags & 0x02: #Check if it is a SYN
                        return True #If all conditions are met
    return False


a= sniff(count =1,lfilter=isMyPacket,iface=eth)

無論如何,您無需檢查它是arp還是icmp:如果是TCP,則可以確定它不是arp還是icmp。

有關Scapy中TCP標志的更多信息: 使用Scapy獲取TCP標志

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM