过滤scapy数据包信息Python

时间:2015-03-08 19:15:29

标签: python scapy

我正在编写一个涉及scapy的程序,我试图嗅探所有数据包并搜索每个数据包中的特定关键字(如“TCP”)

以下是嗅探所有数据包的代码:

def pkt_callback(pkt):
    pkt.show()

sniff(iface = 'eth0', prn = lambda x : x.show())

这是试图只呈现tcp数据包的代码

from scapy.all import *
global my_raw
my_raw = "tcp"

def pkt_callback(pkt):
    global my_raw
    if my_raw in pkt:
        pkt.show() 

sniff(iface='eth0', filter="", prn=lambda x: x.show())
print sniff

2 个答案:

答案 0 :(得分:0)

首先创建一个变量并插入要过滤的值, 然后使用y选项中的python x来检查数据包是否包含您要过滤的内容。

from scapy.all import *
global my_keyword
my_keyword = TCP


def pkt_callback(pkt):
    global my_keyword 
    if my_keyword in pkt:
        pkt.show()
        print "recognized TCP packet"

    else:
        pkt.show()
        print "This packet is not TCP"

sniff(iface='eth0', filter="", prn=pkt_callback)

答案 1 :(得分:0)

您可以使用haslayer()方法

def pkt_callback(pkt):
    if pkt.haslayer(TCP):
        pkt.show()

sniff(iface = 'eth0', prn = lambda x : x.show())