Как декодировать файл IEX DEEP pcap - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь декодировать данные DEEP из IEX (Биржа инвесторов), которая находится в форме 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.

1 Ответ

0 голосов
/ 25 марта 2019

Если вы ищете более читаемый дамп загрузки, попробуйте использовать метод 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:...
...