今日、私は 3 億エントリの netflow レコードの csv ファイルを受け取りました。私の目的は、必要な手段を講じて netflow データを合成パケットに変換することです。少し調べた結果、Scapy はこのプロセスに最適なツールであると判断しました。私はいくつかのコマンドをいじり、そのネットフロー データを表す正確なパケットを作成しようとしましたが、苦労しており、以前に Scapy に手を出した人からの助けを本当に感謝しています.
これは私のデータセットからのエントリの例です:
1526284499.233,1526284795.166,157.239.11.35,41.75.41.198,443,55915,6,1,24,62,6537,1419,1441,32934,65535,
以下は、カンマ区切りの各値が表すものです。
開始タイムスタンプ (エポック形式): 1526284499.233
終了タイムスタンプ (エポック形式): 1526284795.166
ソース IP: 157.239.11.35
宛先 IP: 41.75.41.198
IP ヘッダー プロトコル番号: 443 (HTTPS)
ソース ポート番号: 55915
宛先ポート番号: 6 (TCP)
IP ヘッダーの TOS 値: 1 (FIN)
TCP フラグ: 24 (ACK & PSH)
パケット数: 62
バイト数: 6537
ルーター入力ポート: 1419
ルーター出力ポート: 1441
ソース自律システム: 32934 (Facebook)
宛先自律システム: 65535
このエントリの私の現在の Scapy 表現:
>>> size = bytes(6537)
>>> packet = IP(src="157.240.11.35", dst="41.75.41.200", chksum=24, tos=1, proto=443) / TCP(sport=55915, dport=6, flags=24) / Raw(size)
パケット.ショー() :
###[ IP ]###
version= 4
ihl= None
tos= 0x1
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= 443
chksum= 0x18
src= 157.240.11.35
dst= 41.75.41.200
\options\
###[ TCP ]###
sport= 55915
dport= 6
seq= 0
ack= 0
dataofs= None
reserved= 0
flags= PA
window= 8192
chksum= None
urgptr= 0
options= []
###[ Raw ]###
load= '6537'
私の混乱:
率直に言って、これが正しいかどうかはわかりません。私が混乱するのは、IP プロトコル ヘッダーが 443 であり、HTTPS を示していますが、宛先ポートが 6 であり、TCP を示していることです。したがって、TCP を含める必要があるかどうか、またはプロト IP 属性を含めることが無償であるかどうかはわかりません。さらに、適切な方法でサイズを定義したかどうかは言うまでもなく、Raw() が各パケットのサイズを含める正しい方法であるかどうかもわかりません。
どこが間違っていたのか、またはこの特定のエントリに対して完璧な合成パケットを実際に奇跡的に作成したのかどうかをお知らせください。どうもありがとう!