DTLS解密成功后,无法解码wireshark中的COAP数据包

DTLS解密成功后,无法解码wireshark中的COAP数据包,wireshark,tcpdump,coap,lwm2m,leshan,Wireshark,Tcpdump,Coap,Lwm2m,Leshan,我正在尝试调试LWM2M协议问题。我需要知道在COAP服务器和COAP客户端之间传输了哪些消息。由于流量是使用DTL加密的,因此我需要在wireshark中提供预共享密钥以查看有效负载。Wireshark正在成功解密有效负载,但我无法看到底层COAP协议消息。我看到的只是原始数据(“应用程序数据”): 但是,当我尝试在虚拟设置上嗅探未加密的COAP流量时,我可以正确地看到COAP消息: 加密后如何使用wireshark查看COAP协议流量?问题在于,您使用的是COAP的非标准端口号,而不是

我正在尝试调试LWM2M协议问题。我需要知道在COAP服务器和COAP客户端之间传输了哪些消息。由于流量是使用DTL加密的,因此我需要在wireshark中提供预共享密钥以查看有效负载。Wireshark正在成功解密有效负载,但我无法看到底层COAP协议消息。我看到的只是原始数据(“应用程序数据”):

但是,当我尝试在虚拟设置上嗅探未加密的COAP流量时,我可以正确地看到COAP消息:


加密后如何使用wireshark查看COAP协议流量?

问题在于,您使用的是COAP的非标准端口号,而不是,wireshark COAP解析器的函数仅使用该固定的、不可配置的端口()注册到DTLS解析器。有一些可能的方法来解决这个问题和/或解决它

  • 如果可能,请将应用程序更改为使用标准端口5684

  • 修改Wireshark COAP解析器,使其也可以使用所需的端口注册到DTLS解析器,或者更好地允许对端口进行配置,甚至可以使用允许注册多个端口的端口范围首选项。有关在特定平台上编译和开发Wireshark的信息,请参考

  • 提交一个请求,请求对COAP解析器进行增强,以允许配置DTLS注册端口。同样,范围首选项可能更好,因为它允许注册不止一个端口

  • 假设第一个选项不可能,而其他选项将花费更长的时间,并且无法解决将有效负载解析为现有捕获文件的COAP的直接问题,您可以使用诸如(或其他此类工具)之类的程序为所有数据包重写UDP端口值57845到5684。这应该允许有效负载被传递到COAP解析器,而不需要任何其他更改。如果确实使用了TraceWrangler,则基本步骤如下:

    • 添加文件:选择您的文件,即
      file.pcapng
    • 任务名称:匿名化文件
    • 有效载荷:取消选择“删除所有未知层…”,因为您希望保留所有内容
    • PCAPng:Action=Passthrough,因为这里不需要替换原始注释
    • 第4层,UDP:Action=Replace。选择“按列表替换UDP端口”,然后选择添加。输入57845作为原始端口号,输入5684作为替换端口号,然后单击添加
    • 选择OK
    • 选择Run
    • 状态指示“任务完成”时,您应该能够在Wireshark中打开新创建的名为
      file_anon.pcapng
      的数据包捕获文件,Wireshark现在应该将有效负载识别为COAP

  • 免责声明:我自己没有测试过,但它应该可以工作。

    哪个端口?默认情况下,这可能仅适用于端口5684,但可以使用“解码为”(Ctrl+Shift+U)功能。如果这没有帮助,那么您是否有一个示例数据包捕获和可以共享的预共享密钥?端口是57845。我无法在“解码为”菜单下看到COAP选项。您能给我指一下有关“解码为”菜单的任何文档吗?中描述了“解码为”功能,但我认为这对您没有帮助。请参阅我的答案,以了解可能对您有所帮助的解决方案。