一种将GSE over DVBS格式的卫星互联网流量的损坏记录解析为.pcaps的工具

gsextract的Python项目详细描述


GSExtract公司

GSAP是一种通用的卫星数据流压缩工具,可用于将卫星数据流转换为通用的卫星数据流。在

您可以通过相应的Black Hat usa2020/DEFCON 28简报进一步了解该工具及其功能。在

该工具于this paper年在IEEE标准普尔2020上首次亮相。在

:warning: Disclaimer: This tool is provided as a research proof of concept and it is the user's responsibility to ensure that they have appropriate permissions and authority for its use. Take care to adhere to regulations regarding radio communications interception if evaluating this tool in real-world systems.

安装

您可以从PyPI安装,如下所示:

pip install gsextract

您也可以直接从github安装,如下所示:

^{pr2}$

这将向python路径添加命令gsextract。在

使用

GSExtract的基本用法需要一个二进制文件,其中包含作为输入的连续DVB-sbframes,以及一个将生成的pcap输出到的文件。在

gsextract [satellite_recording.ts][output.pcap]

您还可以使用--stream选项从卫星通信的实时记录中连续传输。这将导致gsextract监视输入文件中的新bbframe,并在它们到达时处理它们。在

gsextract --stream [satellite_recording.ts][output.pcap]

注意事项和附加功能

标头扩展

一些服务提供商为GSE使用专有的头扩展。通常,用这样的扩展解析流量需要修改用于GSE数据提取的kaitai结构(可以在gsextract/parsers/pure_gse.ksygsextract/parsers/pure_gse.py中找到它)。在

可以使用--no-reliable标志来启用一个简单的特性来尝试并强制添加半有效的IP报头。这会增加使用不寻常的GSE报头扩展提取的数据包数量,但也可能导致错误的IP报头。在

gsextract --no-reliable [satellite_recording.ts][output.pcap]

Mod代码和多个输入流

如前所述,GSExtract最适合使用modcode 0x4200的流。这是迄今为止我们遇到的基于GSE的服务最常见的格式。但是,也可以在gsextract/parsers/pure_bb.ksygsextract/parsers/pure_bb.py中手动覆盖它。此版本中不支持多个输入流,因为GSExtract需要一个“crutch”Mod代码才能与损坏的feed重新同步。您将需要一次选择一个单独的代码进行同步,但当然,作为一种解决方法,可以对给定的文件多次运行gsextract。拉请求以更平滑的方式添加多个输入流支持非常受欢迎。在

TCP劫持

该工具的命令行版本在默认情况下不包括对TCP劫持的支持,因为许多实现细节都是特定于场景和网络的。但是,您可以在gsextract/gse_parser.py文件底部找到一个使用GSExtract作为起始模型的TCP劫持示例。在

样本数据

出于隐私原因,我无法提供真实世界GSE流的样本记录。出于测试目的,提供了一个小的经过消毒的GSE记录sample.ts。IP地址和有效负载已被覆盖。在正常模式下运行gsextract应该从该文件恢复一个包含两个数据包的pcap。使用--no-reliable标志运行它应该可以恢复另外两个包。在

后勤

作者

这个工具是由jamespavur开发的。这是牛津大学的Systems Secuirty Lab和armasuisse的Cyber-Defense Campus合作开展的卫星通信安全研究计划的一部分。在

贡献

拉取请求总是受欢迎的。一些特别值得增加的内容包括:

  • 在kaitai结构中支持更多的GSE头扩展
  • CLI工具中的Mod代码灵活性
  • 在一次运行中支持多个输入流

引用此工具

如果您碰巧使用GSExtract进行学术研究,我们将非常感谢您引用该论文的原文:

J. Pavur, D. Moser, M. Strohmeier, V. Lenders and I. Martinovic, "A Tale of Sea and Sky On the Security of Maritime VSAT Communications," in 2020 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, US, 2020 pp. 1384-1400. doi: 10.1109/SP40000.2020.00056

致谢

如果没有可怕的Katiai Struct langauge,这个工具的复杂度和构建难度将是原来的100万倍。在kaitai.io查看。在

此工具还包含Salah Gherdaoui的pcaplib的修改版本。它使GSExtract变得容易将IP数据包实时转储到*.pcap文件。对于更深入(但较慢)的流量解析,我们还使用了古老的scapy。在

许可证

MIT

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用MVC设计模式观察嵌套对象   java将多个客户端连接到服务器   合并Java Web应用程序   Spring Security中未捕获java AuthenticationSuccessEvent   java Firebase JSON到Arraylist内部的Arraylist,存在对象问题   在Java15的sealedclasses特性中,final类和非密封类之间有什么区别?   java我可以使用数组。copyOf制作二维数组的防御副本?   java球不会在屏幕上移动   Java类如何在同一个文件中包含两个类?   java使用“Character.isWhiteSpace”删除所有空白   java阻止在RealmList中保存时创建领域对象   如何仅在ConnectionFactory上使用Java JMS身份验证   spring可以强制java对象在运行时实现接口吗?   socket无法在JAVA中使用TCP启用双工模式通信