c#用winpcap发送需要用到的函数

本文介绍了如何在C#中使用WinPCap库来发送网络数据包。首先通过pcap_findalldevs找到所有网络接口,然后选择合适的接口,使用其name进行open操作。接着,利用pcap_sendpacket发送以太网数据包,该数据包前14个字节包含目标和源MAC地址,以及协议类型。目标MAC地址通常为网关MAC,发送的数据包可以绕过Windows对raw socket的限制,用于SYN扫描等。需要注意,WinPCap不会自动修正IP头的checksum,需要手动计算确保正确。
摘要由CSDN通过智能技术生成

只需要5个

一般步骤是

        [DllImport("wpcap.dll")]
        private static extern int pcap_findalldevs(ref IntPtr devicelist, StringBuilder errbuf);
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        private struct pcap_if
        {
            public IntPtr next;
            public string name;
            public string description;
            public IntPtr addresses;
            public uint flags;
        }

pcap_findalldevs找到所有的网络接口

自己找到正确的那个

然后

        [DllImport("wpcap.dll")]
        private static extern void pcap_freealldevs(IntPtr devicelist);

调用这种非托管的dll,包括winapi,弄完一样几乎都要相应的free一下,也几乎都有一个相应的free方法,这是c#不太习惯的


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值