用delphi实现的利用arp欺骗计费的代码
前段时间接到一个项目,该项目要求在局域网内的任何一台计算机上安装一套计费软件,其他的客户端不用安装任何软件,只要客户插入网线就可以计费。以前接触到的计费软件都是安装在网关上的,要么就是要安装客户端软件,如何实现这样的功能呢?研究了一下,发现用arp欺骗的原理可以实现计费的功能,原理是在未开通上网功能的客户端插入网线后,先禁止局域网内的该计算机上网,等该客户端要求管理员开通上网功能后再解除对该客户端的阻止并开始计费。arp欺骗相信大家的都不陌生,网上有好多介绍arp欺骗的文章,也有好多arp欺骗的病毒,在这里就不再重复arp欺骗的原理了。
如何阻止局域网指定的客户端上网呢?
用伪造的arp的请求包刷新要阻止机器的arp表,使之认为网关的mac地址为一个不存在的mac地址,这样的话就可以阻止该机器上网了。
假设要阻止的计算机是A,安装计费软件的计算机是B,网关是C
A机器 MAC:AA-AA-AA-AA-AA-AA IP地址:192.168.1.1
B机器 MAC:BB-BB-BB-BB-BB-BB IP地址:192.168.1.2
C网关 MAC:CC-CC-CC-CC-CC-CC IP地址:192.168.1.253
在网上有好多arp例子都是c的,我用delphi和Winpcap实现代码如下:
安装Winpcap,引用:winsock,