我正在编写一个涉及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
答案 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())