2013-10-18 86 views
3

我想用Python解碼pcap文件中的鏈路層類型和數據包版本。所以,我必須使用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() 

回答

0

dpkt Python庫是也許不是這個任務的最佳工具,根據他們的網站dpkt最適用於:

快速,簡單的數據包創建/解析與定義的基本TCP/IP協議。

改用Scapy的是一個用於Python的

強大的交互式數據包處理程序。

可以使用這樣的腳本

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

閱讀Infinite possibilities with Python's Scapy Module瞭解更多詳情。