使用Scapy合成数据包

问题描述 投票:0回答:1

今天,我收到了一个3亿条netflow记录的csv文件,我的目标是通过任何必要的方式将netflow数据转换为合成数据包。经过一番研究,我认为Scapy将成为这个过程的一个不可思议的工具。我一直在摆弄一些命令并试图创建描述netflow数据的准确数据包,但我很挣扎,并且非常感谢那些曾经和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)

packet.show():

###[ 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,或者是否包含proto IP属性是无偿的。此外,我不确定Raw()是否是包含每个数据包大小的正确方法,更不用说如果我以正确的方式定义大小。

请非常友好地让我知道我哪里出错,或者我真的奇迹般地为这个特定条目创建了一个完美的合成数据包。非常感谢!

dataset scapy packet netflow
1个回答
1
投票

我认为列可能是错的。 HTTPS是TCP端口443(通常),因此协议号应为6(TCP),其中一个端口应为443.我的GUESS是443是源端口,因为源IP属于Facebook,使55915成为目的地港口。所以,我认为那里的列有:源IP,dest IP,源端口,dest端口,协议。

© www.soinside.com 2019 - 2024. All rights reserved.