如何使用 WinDivert 驱动程序通过 SharpPacp 丢弃数据包?

问题描述 投票:0回答:1

我知道SharpPcap主要是为了数据包嗅探而不是修改或过滤而开发的,但现在我可以在其存储库中看到WinDivert将被添加到项目中,但找不到任何文档。

如何告诉 SharpPcap 使用 WinDivert 以及如何通过它丢弃数据包? SharpPcap中是否有等效的驱动程序用于拦截和修改Linux数据包?

.net sharppcap packet-injection
1个回答
0
投票

SharpPcap 实现似乎是本机 WinDivert API 周围的一个薄层,因此您可以在 官方文档上找到更多信息。

要求:

  1. 在输出文件夹中下载 WinDivert 和
    WinDivert.dll
    WinDivert64.sys
  2. 管理员权限

基本代码大致是这样的

WinDivertDevice device = new()
{
    Filter = $"tcp and (tcp.DstPort == 8080)",
    Layer = WinDivertLayer.Network,
    // By default, flags are set to 1 (WINDIVERT_FLAG_SNIFF) by SharpPcap.
    Flags = 0,
};
device.Open();

var packetStatus = _device.GetNextPacket(out PacketCapture e);
if (packetStatus != GetPacketStatus.PacketRead)
{
    // Retry
}

var rawPacket = e.GetPacket();

if (!ShouldDrop(rawPacket))
{
    device.SendPacket(rawPacket, e.Header);
}
© www.soinside.com 2019 - 2024. All rights reserved.