【问题标题】:How to get & decode messages destinated to a specific port [closed]如何获取和解码发往特定端口的消息[关闭]
【发布时间】:2020-02-13 16:27:53
【问题描述】:

我目前正在使用一个特定系统,当某个触发事件发生(实时)时,一组机器会向服务器(主要用于存储目的)发送消息(更准确地说是图片)。 这些图片也在各个设备本地存储。

我决定冒险寻找该服务器的替代品,只是为了教育目的。我制作了一个 Python 脚本,每 15 分钟通过 SSH 访问每台机器,并使用 SCP 将最新图片下载到我的工作站。

我对这个解决方案很满意,但我还想实现一种实时获取这些图片的方法。所以,我正在考虑在服务器机器所连接的交换机上激活“端口镜像”,并制作一个 Python 脚本来解码数据包并下载图片。 基本上我会将我的工作站连接到一个交换机端口,该端口接收所有进入服务器机器的流量。

有人知道如何解码这些数据包以获取图片吗? 如何解码来自交换机端口的消息? 在 CMD 上使用 netstat 命令,我可能能够获取标识服务器进程的端口 - 也许这是一个开始,对吧?

是否可以使用 WireShark 查看有效载荷格式并从那里尝试对图片进行逆向工程?

请告诉我您可能知道和/或感兴趣尝试的任何方法。

谢谢。

【问题讨论】:

  • 这取决于用于传输图片的应用程序协议。 HTTP - 可能有,HTTPS - 很可能不可能,因为它是加密的,其他协议 - 视情况而定。
  • 推出欢迎垫 - 欢迎来到 Stack Overflow!请阅读help pages,获取SO tour,了解how to ask good questions,以及此question checklist。另请了解如何创建minimal reproducible example
  • 补充 Steffen 的评论,实际上可以解密通过 HTTPS 传输的文件如果您可以保存 TLS 密钥并且您的客户端/服务器软件能够做到这一点。请参阅this article 了解更多信息。
  • 大家好,感谢您的回复。我想澄清以下几点:我有一个脚本,它通过 SSH 连接(+ SCP)从每台机器上获取所有图片。但是,我想放弃这种方法。我想要的是: - 让我的工作站连接到交换机的物理端口(服务器机器连接到的地方) - 接收来自机器的所有流量的副本 - >服务器。 - 在我的 WKS 上有一个 python 脚本,它可以监听定向到服务器进程端口的传入流量并解码这些消息以获取图片。
  • 交换机只将帧发送到目标接口,而不是所有接口,因此连接到不同交换机接口的设备永远不会看到流量。 一些企业级交换机可以配置为将流量镜像到特定的接口,但这取决于制造商和型号,这里是题外话。

标签: python sockets networking decode packet


【解决方案1】:

能否使用 Wireshark事后解密 SSH 流量?

不,你不能Man-in-the-Middle SSH 加密的数据包,如果你只有从端口镜像捕获。除非您是 NSA 或民族国家行为者,并且已经找到绕过加密的方法。

有人知道如何解码这些数据包以获取图片吗?

即使您可以解密 SSH(见下文),使用 Wireshark 也无法做到这一点。根据 Wireshark docs on SSH

与 SSL 解析器不同,没有编写任何代码来解密加密的 SSH 数据包/有效负载。

Wireshark 能否检测加密流量中的文件元数据?

是否可以使用 WireShark 查看有效载荷格式并从那里尝试对图片进行逆向工程?

不,它是加密的 - 你什么都看不到。您最多只能看到 SSH 设置消息。

替代方案

如果您可以访问客户端/服务器并事先进行设置,则有solutions 可以从内存中提取密钥。请记住,您必须事先在客户端或服务器上进行此设置,因为这些会话密钥会随着会话过期(取决于协议)。

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多