我有一个python脚本,它使用dpkt捕获以太网上的数据包,但是如何区分哪些数据包是tcp的,哪些是udp的。
最后,我希望有一个在时间间隔内建立的每个tcp连接的数据包列表。
我的代码是:
import dpkt
import pcapy
cap=pcap.open_live('eth0',100000,1,0)
(header,payload)=cap.next()
while header:
eth=dpkt.ethernet.Ethernet(str(payload))
ip=eth.data
tcp=ip.data
# i need to know whether it is a tcp or a udp packet here!!!
(header,payload)=cap.next()
一个python脚本,使用dpkt捕获以太网适配器
eth0
上的数据包,并区分TCP和UDP的数据包。IP头包含字段协议。dpkt应该允许您获得这个值,并使用它您可以猜测什么是在IP之上。这是有效协议编号http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml的列表。 UDP等于17,而TCP为6。
编辑: 我已经检查过这个问题,正如我提到的,dpkg提供了
p
属性来访问IP的protocol字段。所以你可以再查一遍。但它也会自动解析数据包,并将data
属性设置为表示UDP或TCP等上层协议的类的实例。所以您可以检查data
属性的类型并识别此协议。相关问题 更多 >
编程相关推荐