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;
}
}
:ここ
は、私がこれまで持っているコードです。ステップ1ペイロードの変更を実行する必要があります。具体的には、データを新しい文字列で置き換えるか、完全に上書きするかのどちらかを検討しています。
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のドキュメントで
は、パケットデータを扱っ私は見つけることができる唯一のことは、パケットを解析するには、この方法でした。
しかし、私はこれがデータを修正することができるのかどうか分からないのですが(おそらくそれはありますか?)、それは出力のためにパケットデータを取り出せるように思えるからです。
ペイロードを編集するにはどうすればいいですか?