我正在尝试解码来自IEX(投资者交易所)的DEEP数据,该数据为pcap格式。我目前正在使用Python。
我当前正在使用Scapy解析pcap文件。问题是我不知道如何将原始负载(二进制形式)解码为人类可读的文本。 这是一个例子。
from scapy.all import *
packets = rdpcap(r'20171104_IEXTP1_DEEP1.0.pcap')
packets[0].show()
结果是这样的
###[ 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(https://iextrading.com/trading/market-data/#deep)的官方网站访问这些文件。这些pcap文件通常很大,因此我尝试使用一个较小的20171104_IEXTP1_DEEP1.0.pcap。
答案 0 :(得分:0)
如果您正在寻找更可读的负载转储,请尝试使用Scapy hexdump
方法:
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:...