Python 如何解码IEX深度pcap文件

Python 如何解码IEX深度pcap文件,python,scapy,pcap,Python,Scapy,Pcap,我试图解码IEX(投资者交易所)的深度数据,它是pcap格式的。我目前在Python中工作 我目前正在使用Scapy解析pcap文件。问题是我不知道如何将原始加载(二进制形式)解码为人类可读的文本。 这里有一个例子 从scapy.all导入* packets=rdpcap(r'20171104_IEXTP1_DEEP1.0.pcap') 数据包[0]。显示() 结果是这样的 ###[ Ethernet ]### dst = 01:00:5e:57:15:04 src

我试图解码IEX(投资者交易所)的深度数据,它是pcap格式的。我目前在Python中工作

我目前正在使用Scapy解析pcap文件。问题是我不知道如何将原始加载(二进制形式)解码为人类可读的文本。 这里有一个例子

从scapy.all导入*
packets=rdpcap(r'20171104_IEXTP1_DEEP1.0.pcap')
数据包[0]。显示()
结果是这样的

###[ Ethernet ]### 
  dst       = 01:00:5e:57:15:04
  src       = 00:1e:67:f2:62:24
  type      = 0x800
###[ IP ]### 
     version   = 4
     ihl       = 5
     tos       = 0x0
     len       = 68
     id        = 16005
     flags     = DF
     frag      = 0
     ttl       = 64
     proto     = udp
     chksum    = 0x49e2
     src       = 23.226.155.132
     dst       = 233.215.21.4
     \options   \
###[ UDP ]### 
        sport     = 10378
        dport     = 10378
        len       = 48
        chksum    = 0x6c15
###[ Raw ]### 
           load      = '\x01\x00\x04\x80\x01\x00\x00\x00\x00\x00BD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xce/\xec:\x98\xde\xf3\x14'

有什么方法可以让我知道原始装载的内容吗?它应该是关于订单簿数据的信息。我没有看到任何现有的工具来解码这一点


如果感兴趣,您可以从IEX()的官方网站访问这些文件。这些pcap文件通常相当大,因此我正在尝试一个小文件20171104_IEXTP1_DEEP1.0.pcap。

如果您要查找更可读的负载转储,请尝试使用Scapy
hextdump
方法:

from scapy.all import *
from scapy.utils import hexdump

packets = rdpcap(r'20180127_IEXTP1_DEEP1.0.pcap')
packets[0].show()

raw = packets[0].lastlayer()
hexdump(raw)
它将输出如下内容:

###[ Ethernet ]### 
  dst       = 01:00:5e:57:15:04
  src       = 00:1e:67:f2:62:24
  type      = 0x800
###[ IP ]### 
     version   = 4
     ihl       = 5
     tos       = 0x0
     len       = 68
     id        = 53693
     flags     = DF
     frag      = 0
     ttl       = 64
     proto     = udp
     chksum    = 0xb6a9
     src       = 23.226.155.132
     dst       = 233.215.21.4
     \options   \
###[ UDP ]### 
        sport     = 10378
        dport     = 10378
        len       = 48
        chksum    = 0x955b
###[ Raw ]### 
           load      = '\x01\x00\x04\x80\x01\x00\x00\x00\x00\x00\x96D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x91\x08\xf0M:\xac\r\x15'

0000  01000480010000000000964400000000 ...........D....
0010  00000000000000000100000000000000 ................
0020  9108F04D3AAC0D15                 ...M:...

如果要查找更可读的负载转储,请尝试使用Scapy
hextump
方法:

from scapy.all import *
from scapy.utils import hexdump

packets = rdpcap(r'20180127_IEXTP1_DEEP1.0.pcap')
packets[0].show()

raw = packets[0].lastlayer()
hexdump(raw)
它将输出如下内容:

###[ Ethernet ]### 
  dst       = 01:00:5e:57:15:04
  src       = 00:1e:67:f2:62:24
  type      = 0x800
###[ IP ]### 
     version   = 4
     ihl       = 5
     tos       = 0x0
     len       = 68
     id        = 53693
     flags     = DF
     frag      = 0
     ttl       = 64
     proto     = udp
     chksum    = 0xb6a9
     src       = 23.226.155.132
     dst       = 233.215.21.4
     \options   \
###[ UDP ]### 
        sport     = 10378
        dport     = 10378
        len       = 48
        chksum    = 0x955b
###[ Raw ]### 
           load      = '\x01\x00\x04\x80\x01\x00\x00\x00\x00\x00\x96D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x91\x08\xf0M:\xac\r\x15'

0000  01000480010000000000964400000000 ...........D....
0010  00000000000000000100000000000000 ................
0020  9108F04D3AAC0D15                 ...M:...

你能分享样本PCAP文件吗?@Alderven当然。我不知道如何附加文件,所以我编辑帖子添加网站下载这些文件。希望有帮助。你读过吗?@Alderven是的,但我没有处理解码问题的经验。即使有了规范,我也不知道如何开始。您可能需要在Scapy中实现该协议,以便可以访问每个字段。您可以共享示例PCAP文件吗?@Alderven Sure。我不知道如何附加文件,所以我编辑帖子添加网站下载这些文件。希望有帮助。你读过吗?@Alderven是的,但我没有处理解码问题的经验。即使有了规范,我也不知道如何开始。您可能需要在Scapy中实现该协议,以便可以访问每个字段