2016-01-04 50 views
1

我想解析python中的Pcap文件。當我運行這段代碼解析Python中的PCAP文件

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

我收到垃圾值,而不是得到以下的輸出:

以太網(SRC = '\ X00 \ X1A \ xa0kUf',DST ='\ X00 \ x13I \ xae \ x84,', data = IP(src ='\ xc0 \ xa8 \ n \ n',off = 16384,dst ='C \ x17 \ x030',sum = 25129, len = 52,p = 6 ,ID = 51105,數據= TCP(SEQ = 9632694,off_x2 = 128, ACK = 3382015884,贏得= 54,合計= 65372,標誌= 17,DPORT = 80,運動= 56145)))

任何人都可以請告訴我如何得到這個以上的輸出?

+0

參考:https://jon.oberheide.org/blog/2008/10/15/dpkt-tutorial-2-parsing-a-pcap-file/ –

回答

0

如果文件的鏈路層頭類型不是以太網,如果嘗試將數據包解析爲以太網數據包,則不會獲得有用的信息。 dpkt文檔不是很好,但有一些方法可以獲得鏈接層標題類型; 之前的任何程序讀取PCAP文件使得任何試圖讓任何從原始數據包數據,它必須確定文件中的鏈路層包頭類型和基本從原料中提取信息的方式在link-layer header type上的分組數據(或者如果該文件沒有它可以解析的鏈路層報頭類型,則退出)。

(並隨時告訴Oberheide先生,他的代碼被打破,因爲它不檢查鏈路層報頭型!)

0

什麼你試圖做只在Python REPL外殼的作品。當你希望它從Python腳本工作,你需要調用repr方法,像這樣:

for ts, buf in pcap: 
    eth = dpkt.ethernet.Ethernet(buf) 
    print repr(eth) # this is key 

以太網(SRC = '\ X00 \ X1A \ xa0kUf',DST ='\ X00 \ x13I \ xae \ x84,'data = IP(src ='\ xc0 \ xa8 \ n \ n',off = 16384,dst ='C \ x17 \ x030',sum = 25129, len = 52,p = 6 ,ID = 51105,數據= TCP(SEQ = 9632694,off_x2 = 128, ACK = 3382015884,贏得= 54,合計= 65372,標誌= 17,DPORT = 80,運動= 56145)))

我假設你有一個pcap,它具有適當的以太網數據包,並且你已經檢查了鏈路層。