【问题标题】:WinPcap equivalent to Wireshark 'dtls' filterWinPcap 等效于 Wireshark 'dtls' 过滤器
【发布时间】:2021-10-18 15:24:07
【问题描述】:

我曾经使用简单的 dtls 参数作为过滤器将数据包过滤到 Wireshark 中。 (Data Transport Layer Security 是一些 UDP TLS 协议)

现在,我想使用 C# 和使用 WinPcap 过滤器的 PcapDOTNet 包装器来做同样的事情。 可悲的是,我找不到任何等效的地方,并且 C# 应用程序中无法识别 dtls,因此不再抓取任何数据包。 (由于无法识别字符串,它会使解释器崩溃)

using (PacketCommunicator communicator = selectedDevice.Open(65536, PacketDeviceOpenAttributes.None, 1000))
    {
        using (BerkeleyPacketFilter filter = communicator.CreateFilter("dtls") {
            communicator.SetFilter(filter);
            communicator.ReceivePackets(1, packetHandler);
        }
    }

请问有没有类似的?

编辑:看起来dtls 只是一个显示过滤器,而不是一个捕获过滤器。我只能使用udp port xx(xx 是端口)来捕获过滤器,但由于使用的端口总是随机的,所以我不能。因此,如果您有另一种过滤解决方法,我将很高兴!我更喜欢只捕获所需的数据包,而不是捕获所有内容然后过滤数据...... Wireshark : DTLS

我只想捕获两个数据包。包含Server Hello Done 消息的那一个或包含handshake message 的那一个(带有Record Layer 的那一个):

编辑 2:好的,我很快就能找到我需要的东西,但我需要你的帮助。 This answer from here 必须是解决方案。 tcp[((tcp[12] & 0xf0) >> 2)] = 0x16 正在寻找握手 22,但 dtlsudp 而不是 tcp,因此 12 偏移量可能不同。谁能帮我弄清楚将其调整为 dtls 而不是 tcp tls 的正确公式是什么? 我试图在wireshark上使用它,但过滤器无效,我真的不知道为什么。如果至少你可以让它在wireshark中发挥作用,我可以尝试不同的价值自己并得到最终答案。 udp[((udp[12] & 0xf0) >> 2)] = 0x16 不是 wireshark 上的有效过滤器。

【问题讨论】:

  • 只是一些额外的细节:除了 CCS 之外的所有其他消息,这里都是握手消息。纪元 0 的那些没有加密,因此可以被解析。 epoch 1 中的那个是加密的,没有额外的数据,无法解析。无论如何,我不确定,为什么您认为服务器打招呼完成和客户端完成(即加密的握手消息)是最重要的。

标签: c# wireshark winpcap dtls pcapdotnet


【解决方案1】:

所以,我放弃了寻找数据正确位置的动态方式。 但这就是我的结局:

using (PacketCommunicator communicator = selectedDevice.Open(65536, PacketDeviceOpenAttributes.None, 1000))
    {
        using (BerkeleyPacketFilter filter = communicator.CreateFilter("udp && ((ether[62:4] = 0x16fefd00) || (ether[42:4] = 0x16fefd00))") {
            communicator.SetFilter(filter);
            communicator.ReceivePackets(1, packetHandler);
        }
    }

bytes[62:4] 是 ipv6 数据包的16fefd00 的位置,(对于 ipv4 是 42)。 16 用于Content type 握手协议22,以下fefd 用于DTLS 1.2 版。最后两个零只是因为使用字节片仅适用于 1,2 或 4,而不是 3。所以我不得不考虑它们。

这绝对不是完美的,我知道,但现在,它有效,因为我还找不到任何其他解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2017-08-08
    • 2011-11-15
    • 1970-01-01
    • 2016-06-25
    相关资源
    最近更新 更多