【问题标题】:Synthesizing Packets with Scapy用 Scapy 合成数据包
【发布时间】:2019-07-26 17:46:29
【问题描述】:

今天,我收到了一个包含 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
结束时间戳(Epoch 格式):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() 是否是包含每个数据包大小的正确方法,更不用说我是否以适当的方式定义了大小。

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

【问题讨论】:

  • Scapy 中有一个 netflow 模块 (layers/netflow.py),在这里可能会有所帮助

标签: dataset scapy packet netflow


【解决方案1】:

我认为这些列可能是错误的。 HTTPS 是 TCP 端口 443(通常),所以协议号应该是 6(TCP),其中一个端口应该是 443。我的猜测是 443 是源端口,因为源 IP 属于 Facebook,所以 55915 是目标港口。所以,我认为那里的列是:源 IP、目标 IP、源端口、目标端口、协议。

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 2021-03-19
    • 1970-01-01
    • 2022-07-08
    • 2014-08-18
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多