其实不是nids抓不到数据,是被校验和算法屏蔽了。win32-1.19在一些旧的网卡上可以抓到包,因为旧的网卡没有校验和验证,而较新的网卡自动验证了校验和,所以需要关闭软件的校验。
禁用校验和可以在libnids库里使用函数nids_register_chksum_ctl关闭。
也可以通过网卡设置禁用。
在设备管理器中找到网络适配器,右击-->属性-->高级-->网络校验和-->关闭
此时电脑网络连接会失败,稍等片刻,系统会重新连接到网络。
我重新编译了win32-1.19的代码,添加了屏蔽校验和的功能。还添加了一些我的调试信息。此库在vs2017下编译生成。
链接如下: