以scapy动态显示数据包时间

时间:2014-08-12 10:42:03

标签: python for-loop scapy

所以我有这个脚本:

packets = sniff(iface="eth0", filter="tcp and(port 80)", prn=lambda x: x.show())
for pkt in packets:
    print  pkt.show2()
    print  pkt.time

问题是,在我停止嗅探(然后只显示最后一个数据包时间)之前,脚本不能给我数据包的时间。

如何在嗅探仍然开启的情况下动态打印数据包的时间?

谢谢!

1 个答案:

答案 0 :(得分:0)

定义一个能够达到你想要的功能 -

def pktinfo(x):
    x.show()
    x.show2()
    print x.time

将该函数用于prn参数。

packets = sniff(iface="eth0", filter="tcp and(port 80)", prn=pktinfo)

使用prn将打印任何返回的数据。您可能希望尝试使用要显示的数据构建自定义格式化字符串并将其返回,而不是在函数中打印它。