2013-08-15 68 views
10

私はpythonでpcapファイルを解析しようとしています。私の目標は、TCP/UDPファイルの種類と開始/終了時刻を引き出すことです。誰かが、特定のパッケージの中でアドバイスをしていれば、それを使うのに役立つかもしれませんか?pythonでpcapファイルを解析する

答えて

6

scapyから始めたいと思うかもしれません。

+1

、追加された機能とのpython3と互換性のscapyの新しいバージョン(http://github.com/phaethon/スカッフィー)。 –

+0

pycapfileも使用できます。リンク:https://pypi.python.org/pypi/pypcapfile – Pawel

+0

pypcapfileまたはpycapfile - tcpdumpファイルで動作しませんでした:イーサネット55:32:fd:21:4d:7cから00:00:02:00 :00:00タイプ不明 イーサネット9d:a9:41:cd:bb:ca〜00:04:02:00:00:00タイプ不明 –

15

私はpython-dpktを使用します。 ここにドキュメントがあります:http://www.commercialventvac.com/dpkt.html

これはすべて私が申し訳ありませんが知っている方法です。

#!/usr/local/bin/python2.7 

import dpkt 

counter=0 
ipcounter=0 
tcpcounter=0 
udpcounter=0 

filename='sampledata.pcap' 

for ts, pkt in dpkt.pcap.Reader(open(filename,'r')): 

    counter+=1 
    eth=dpkt.ethernet.Ethernet(pkt) 
    if eth.type!=dpkt.ethernet.ETH_TYPE_IP: 
     continue 

    ip=eth.data 
    ipcounter+=1 

    if ip.p==dpkt.ip.IP_PROTO_TCP: 
     tcpcounter+=1 

    if ip.p==dpkt.ip.IP_PROTO_UDP: 
     udpcounter+=1 

print "Total number of packets in the pcap file: ", counter 
print "Total number of ip packets: ", ipcounter 
print "Total number of tcp packets: ", tcpcounter 
print "Total number of udp packets: ", udpcounter 

アップデート:また、ある

プロジェクトGitHubに、ドキュメントhere

+0

dpktはストリームをデコードできないように見えます。 tcpdumpが書き込んでいる名前付きfifoパイプから取得します。シークすることができないとエラーになります(とにかくpcapで検索する必要はありません...)。 – Luc

+0

python 3のバージョンはdpkt(少なくともDebianリポジトリにあります)で入手できますが、移植は簡単です:http://stackoverflow.com/a/27480361/1201863 – Luc

+0

例外を防ぐために: 'UnicodeDecodeError: 'utf-8 'コーデックは位置0のバイト0xd4をデコードできません:無効な継続バイト' オープンファイルにバイナリモードを使用する必要があります: 'dpkt.pcap.Reader(open(filename、 'rb'))' – korst1k

関連する問題