3

我想使用 Python 解码 pcap 文件中的链路层类型和数据包版本。所以,我必须使用 Python 解析 pcap。这是我的代码。

import dpkt
import socket
import sys

f = open('filename')
pcap = dpkt.pcap.Reader(f)

for ts, buf in pcap:
  eth = dpkt.ethernet.Ethernet(buf)
  ip = eth.data
  tcp = ip.data
    print ts, len(buf)
    print eth
    print ip
    print tcp

f.close() 
4

1 回答 1

0

dpkt python 库可能不是完成这项任务的最佳工具,根据他们的网站 dpkt 最适合用于:

快速、简单的数据包创建/解析,带有基本 TCP/IP 协议的定义。

使用 scapy 代替

强大的 Python 交互式数据包处理程序。

您可以使用这样的脚本

from scapy.all import *
packets = rdpcap('tmp.pcap')
for p in packets:
    (p/Ether()).show()

阅读Python 的 Scapy 模块的无限可能性以获取更多详细信息。

于 2015-05-19T20:16:30.607 回答