欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

不用安装Wincap程序实现ARP广播包的发送和接收

发布时间:2023/12/18 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 不用安装Wincap程序实现ARP广播包的发送和接收 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

    这几天由于项目需求,做了一个局域网ip和MAC地址搜索的程序,程序调试完成了但是有一个问题一直困扰这我,就是软件打包后,每次都要安装WinPcap后才能用自己的程序,很是烦人,经过几天的测试终于找到了两种方法,不需要安装WinPcap。经过测试都没有问题。

    方法一:经过很多次的分析,程序主要是用到了WinPcap的一个驱动文件,当安装Wincap程序后你会发现  在C:\WINDOWS\system32\drivers下面会有一个npf.sys文件,系统下的驱动,在C:\WINDOWS\system32文件夹下会发现WinPcap相关的库文件,其中有一个paket.dll库就是我在程序中用到的库。这时你可以把这个npf.sys文件拷出来,再把Wincap卸载掉,此时运行自己的程序是不能实现IP和MAC地址的搜做的,这时可以把刚才拷出来的文件npf.sys重新拷贝到C:\WINDOWS\system32\drivers下面,再运行自己的程序,你会奇迹般的发现可以正常搜索。所以这个npf.sys文件是很重要的,现在的方法是你可以在程序中编写一个copy程序,把npf.sys文件拷贝到C:\WINDOWS\system32\drivers文件夹下。这样就OK了。

    方法二:方法一其实实现起来比较简单而且方便,但是还有一个更好的办法。其实通过分析发现npf.sys就是系统的一个驱动,你只要把它加载注册表中,就把这个驱动加载好了。当你把npf.sys文件拷贝到C:\WINDOWS\system32\drivers下面时系统会自动加载到注册表如下图:system32\drivers\npf.sys


现在我们怎么办那,我们也可以仿照这个自己加载这个NPF驱动程序到注册表,只是我们加载路径不是系统路径,可以把npf.sys文件拷贝到我们的工程中,通过程序创建注册表,并加载我们自己的路径驱动。这样就不用在程序打包后每次安装时先要安装WinPcap程序。

      经过测试两种方法都能实现功能,只是第二种方法稍微麻烦点。还有要注意的是32位系统和64位系统用到的npf文件是不一样的。在不同系统中要加载不同的文件。














总结

以上是生活随笔为你收集整理的不用安装Wincap程序实现ARP广播包的发送和接收的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。