Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ WinDivert-修改数据包数据/有效负载内容_C++_C_Payload_Man In The Middle_Packet Injection - Fatal编程技术网

C++ WinDivert-修改数据包数据/有效负载内容

C++ WinDivert-修改数据包数据/有效负载内容,c++,c,payload,man-in-the-middle,packet-injection,C++,C,Payload,Man In The Middle,Packet Injection,例如,我看到WinDivert的示例和示例代码被用来修改数据包的属性,比如它们的目标地址 但是我一直在努力搜索,在重新注入数据包之前,找不到任何修改数据包实际有效负载的文档或示例 以下是我目前掌握的代码: HANDLE handle; // WinDivert handle WINDIVERT_ADDRESS addr; // Packet address char packet[MAXBUF]; // Packet buffer UINT pac

例如,我看到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;
        }
    }
在//修改数据包。步骤I需要执行有效负载修改。具体来说,我希望用新字符串替换或完全覆盖数据

在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:指向数据包数据/有效负载的输出指针

但是,我不确定这是否会让我修改数据(可能会吗?),因为它似乎只让我检索数据包以进行输出

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

视频和源用户windivert。


视频和源用户windivert。

如果将来有人在寻找一种非常简单的方法来实现这一点,我使用了一个名为“pydivert”的windivert Python包装器。这很简单


链接:

如果将来有人想找到一种非常简单的方法来实现这一点,我使用了一个名为“pydivert”的WinDivert Python包装器。这很简单

链接: