gpt4 book ai didi

c++ - WinDivert - 修改数据包数据/负载内容

转载 作者:行者123 更新时间:2023-11-28 01:46:42 39 4
gpt4 key购买 nike

例如,我见过 WinDivert 的示例和示例代码用于修改数据包的属性,例如它们的目标地址。

但我已经尝试过非常努力地搜索,但找不到任何在重新注入(inject)数据包之前修改数据包的实际负载的文档或示例。

这是我目前的代码:

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: Output pointer to the packet's data/payload.

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

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

最佳答案

https://github.com/basil00/Divert/issues/16视频和源用户windivert。

关于c++ - WinDivert - 修改数据包数据/负载内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44772998/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com