c / c ++中的高效pcap解析器

时间:2017-08-23 06:38:28

标签: c++ parsing debian shared-libraries pcap

我是pcap解析的新手,我想请你帮忙解决这个问题(我使用的是Debian 9):

  • A.pcap是一个pcap文件,包含要解析的网络数据包以及要丢弃的其他数据包

  • B.so是一个库文件,其中包含用于解析任务所关心的数据包的二进制文件。没有头文件,所以我需要使用二进制检查

这两个文件都可以在以下链接下载: https://www.dropbox.com/s/ustehbd8lmejddv/task.zip?dl=0

我首先尝试使用以下方法检查和挖掘两个文件:

nm -gC B.so
tcpick -C -yP -r A.pcap
tcpdump -qns 0 -A -r A.pcap

现在我应该只解析入站的OrderField数据包并检索以下字段: 1. OrderStatus 2. OrderLocalID 3. LimitPrice 4.方向 5. InstrumentID

我相信我遇到了tcpick和tcpdump的麻烦,因为我无法访问任何这些信息,我只能看到一长串MAC / IP地址加上一些“随机”字符。

你有什么建议吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我没有采访公司而与他们没有任何关系,只是乐于对这些东西进行逆向工程。我只是从问题和互联网上找到一些想法和提示。

  1. 您可以使用libpcap从文件中检索每个TCP数据包,并重新构建相关的入站事务以满足问题的要求。
  2. OrderField数据包可能与此https://github.com/fakechris/femas_api/blob/master/traderapidemo/TraderApi4LNX64/USTPFtdcUserApiStruct.h
  3. 相关
  4. 压缩方法是ZeroCompress。因此,您可以直接调用共享库CompressUtil :: Zerodecompress来解压缩TCP数据包有效负载
  5. 使用github中的数据结构typedef来提取这4个必要字段。
  6. 免责声明:我可能错了,因为我无法验证结果。