私はtcpdumpを使ってキャプチャされたパケットを含むファイルを解析しようとしています。最初に、5タプルを使用してパケットをフローに分類したいと考えています。次に、各フローの各パケットのサイズと到着時間を取得する必要があります。私はwiresharkでConversation listを試しましたが、フロー内の各パケットについての情報ではなく、フロー内のパケット数だけを示します。仕事をすることができるコード(C++やシェルスクリプト)の提案?ありがとうございましたpcapファイルを解析するコード
答えて
私はライブラリを使ってtcp dumpを分析しましたが、それはビジネス向けのものでしたので、私はあなたに与えることはできません。あなたが探しているものが見つからなければ、私の答えが助けになるでしょう。 tcpdumpは、Matryoshka dollsのようなネストされたネットワークデータです。pcap層はtcpdumpによって追加されます。
キャプチャのみで作業する場合は、ダンプの形式はLibpcap File Formatで指定します。各パケットの到着のサイズと時間を取得するには、この仕様を使用してダンプを処理する必要があります。
あなたが分析に深く行かなければならない場合、これらは、以下の層であるトランスポート層
- ために
各レイヤにはヘッダ定義があります。したがって、あなたのpcapデータに含まれているプロトコルスタックを見つけて、ヘッダーを解析して情報を得る必要があります。
その仕様を使ってダンプを処理する最も簡単な方法は、libpcapで読み込むことです。 'pcap_open_offline()'を使って開きます。それを処理する独自のコードを書くことは、ほとんどの場合、時間の無駄です。 libpcapを使用すると、新しいバージョンのlibpcapでは多くのpcap-ngファイルも読み込むことができます。 –
5タプルのメンバーは何ですか?フローがTCPまたはUDPの場合は、送信元IPアドレスと宛先IPアドレスとポート番号、おそらく2つのエンドポイント間で複数のフローを時間の経過とともに区別するための番号が機能します。 SCTPの場合も同様ですが、ストリームがストリームの場合はさらに必要になる可能性があります。
5タプルのメンバーがすべてWiresharkの「名前付きフィールド」である場合は、-T fields
オプションを使用してTSharkを使用し、-e
オプションを使用して、印刷するフィールドを指定し、タイムスタンプ(frame.time_epoch
は、UN * Xエポックからの秒数と分数としての時間を与えます)、適切なフィールドのフィールド(frame.len
は、リンクレイヤパケットPLUSのようなメタデータの生のバイト数を与えます。 802.11無線情報のためのラジオタップヘッダーとして)、および他のフィールドを入力し、TSharkの出力を、実行したい処理を行うスクリプトまたはプログラムに送ります。これにより、TSharkはプロトコル層の処理を行うので、プログラムは結果のデータを処理するだけです。あなたはScapyのことを聞いていない場合は
UmNyobe、
は、まだ私はあなたが近くぴったりでしょうやろうとしているものを信じて。たとえば、私はこの小さなスニペットを書いてpcapフィールドを解析し、Scapyを使って話しているようなものを私に与えます。
#!/usr/bin/python -tt
from scapy import *
import sys
from datetime import datetime
'''Parse PCAP files into easy to read NETFLOW like output\n
Usage:\n
python cap2netflow.py <[ pcap filename or -l ]>\n
-l is live capture switch\n
ICMP packets print as source ip, type --> dest ip, code'''
def parse_netflow(pkt):
# grabs 'netflow-esqe' fields from packets in a PCAP file
try:
type = pkt.getlayer(IP).proto
except:
pass
snifftime = datetime.fromtimestamp(pkt.time).strftime('%Y-%m-%d %H:%M:%S').split(' ')[1]
if type == 6:
type = 'TCP'
if type == 17:
type = 'UDP'
if type == 1:
type = 'ICMP'
if type == 'TCP' or type == 'UDP':
print(' '.join([snifftime, type.rjust(4, ' '), str(pkt.getlayer(IP).src).rjust(15, ' ') , str(pkt.getlayer(type).sport).rjust(5, ' ') , '-->' , str(pkt.getlayer(IP).dst).rjust(15, ' ') , str(pkt.getlayer(type).dport).rjust(5, ' ')]))
elif type == 'ICMP':
print(' '.join([snifftime, 'ICMP'.rjust(4, ' '), str(pkt.getlayer(IP).src).rjust(15, ' ') , ('t: '+ str(pkt.getlayer(ICMP).type)).rjust(5, ' '), '-->' , str(pkt.getlayer(IP).dst).rjust(15, ' '), ('c: ' + str(pkt.getlayer(ICMP).code)).rjust(5, ' ')]))
else:
pass
if '-l' in sys.argv:
sniff(prn=parse_netflow)
else:
pkts = rdpcap(sys.argv[1])
print(' '.join(['Date: ',datetime.fromtimestamp(pkts[0].time).strftime('%Y-%m-%d %H:%M:%S').split(' ')[0]]))
for pkt in pkts:
parse_netflow(pkt)
PythonとScapyをインストールして起動します。もしあなたがC++のチャンスを知っていれば、これはすでにあなたに多くの意味があると思っています。
たくさんより行いますがPCAPの解析について話分野にで磨く心のScapyに保つ、役立つチュートリアルへこのページ上のリンクのトンがありますが、ここで
http://www.secdev.org/projects/scapy/
をScapyを取得します。..
私はこれが助けてくれることを願っています!
dc
- 1. プレーンCで.pcapファイルを解析する
- 2. pythonでpcapファイルを解析する
- 3. Python 2.6でPCAPを解析する
- 4. libapcapを使ってpcapファイルを解析する方法。
- 5. dpktを使用してpcapファイルを解析する
- 6. pcapファイルを解析してC++でメッセージを表示する
- 7. scapyのPcapReaderで解析した後にpcapファイルを削除します
- 8. pcapファイルを解析するシンプルなCプログラムですが、pcapファイル全体を読み取ることができません
- 9. pcapファイルを作成する
- 10. pcapパケットヘッダーの理解
- 11. ファイル解析のためのperlコード
- 12. 解析コード
- 13. C#コードで解析/リファクタリングするC#コード
- 14. JSONファイルを解析する
- 15. XMLファイルを解析する
- 16. csvファイルを解析する
- 17. ファイルを解析する
- 18. ファイルを解析するツール
- 19. pdfファイルを解析する
- 20. INIファイルを解析する
- 21. MSBuildファイルをオーバーラップしないでコード解析を実行する
- 22. Big O解析のための擬似コードを解析するコード
- 23. シェルスクリプトからファイル内のキー/値を解析するコード
- 24. SqlMetal生成ファイルのコード解析を無視する
- 25. PyQt4のコード解析
- 26. PHPコード解析エラー
- 27. F#のコード解析
- 28. Beanshellコードの解析
- 29. Tensorflow CIFAR10コード解析
- 30. PCAPファイルの解析 - このパケットヘッダーのタイムスタンプにSOH \ 01が含まれているのはなぜですか?
[Bro](http://www.bro-ids.org)の強力なネットワークスクリプト言語が必要です。それは「Python/Ruby for network analysis」です。具体的には、[new_packet'イベント](http://www.bro-ids.org/documentation/scripts/base/event.bif.html#id-new_packet)をフックしてと述べた。 – mavam