Windivert-修改数据包数据/有效载荷内容



我已经看到了Windivert的示例和示例代码用于修改数据包的属性,例如其目标地址。

但是我已经尝试了非常努力地搜索,但找不到任何文档或修改的示例>数据包的实际有效载荷在重新注射它们之前。

这是我到目前为止的代码:

HANDLE handle;          // WinDivert handle
    WINDIVERT_ADDRESS addr; // Packet address
    char packet[MAXBUF];    // Packet buffer
    UINT packetLen;
    handle = WinDivertOpen("...", 0, 0, 0);   // Open some filter
    if (handle == INVALID_HANDLE_VALUE)
    {
        // Handle error
        exit(1);
    }
    // Main capture-modify-inject loop:
    while (TRUE)
    {
        if (!WinDivertRecv(handle, packet, sizeof(packet), &addr, &packetLen))
        {
            // Handle recv error
            continue;
        }
        // Modify packet.
        if (!WinDivertSend(handle, packet, packetLen, &addr, NULL))
        {
            // Handle send error
            continue;
        }
    }

在//修改数据包上。步骤我需要执行有效载荷修改。具体来说,我希望用新字符串替换或完全覆盖数据。

在Windivert文档中,我唯一能找到的处理数据包数据是解析数据包的方法:

BOOL WinDivertHelperParsePacket(
    __in PVOID pPacket,
    __in UINT packetLen,
    __out_opt PWINDIVERT_IPHDR *ppIpHdr,
    __out_opt PWINDIVERT_IPV6HDR *ppIpv6Hdr,
    __out_opt PWINDIVERT_ICMPHDR *ppIcmpHdr,
    __out_opt PWINDIVERT_ICMPV6HDR *ppIcmpv6Hdr,
    __out_opt PWINDIVERT_TCPHDR *ppTcpHdr,
    __out_opt PWINDIVERT_UDPHDR *ppUdpHdr,
    __out_opt PVOID *ppData,
    __out_opt UINT *pDataLen
);

ppdata:输出指针到数据包的数据/有效载荷。

但是,我不确定这是否会让我修改数据(也许是吗?(,因为它似乎只会让我检索输出数据包数据。

那么我该如何编辑有效载荷?

https://github.com/basil00/divert/issues/16视频和来源用户Windivert。

如果将来有人正在寻找一种非常简单的方法来执行此操作,那么我使用的是Windivert的Python包装器,我使用了我使用的" Pydivert"。这很简单。

链接:https://github.com/ffalcinelli/pydivert

相关内容

  • 没有找到相关文章

最新更新