c++通过MAC控制网络链接

来源:百度知道 编辑:UC知道 时间:2024/05/25 02:07:12
就是根据要自己机器要去连接的机器的MAC,认定的MAC可以连接,陌生MAC链接不到。

不知道用到什么东西,以及思路,希望各位高手能指导一下
c++程序挂在后台,实现其他程序(IE、FTP)只能与指定MAC、IP通信

回答的确是有高手,指点我思路了

运行程序的是局域网内机器,阻挡局域网内与外网的

MAC地址是全球唯一故名物理地址。
IP地址也是全球唯一称为逻辑地址。
我们无法知道外网计算机的MAC地址,获取MAC的途径广播ARP包,这个网络只能是局域网(以太网,令环网)。

对于不网络的数据链路层的通信并不一定得包涵MAC地址,比如PPP拨号就不用MAC地址,所以对方的MAC地址我们无从得知,那么就不能通过MAC地址来阻止与外网通信。当然同上如果是以太网,我们可以在网关上设定数据链路层的MAC过滤条件这是可以的。

不见得网络上所有计算机都能认识MAC帧,但所有TCP/IP计算机都能认识IP数据包,所以可以指定能与特定的IP地址通信这是肯定可行的。

要想阻止局域网内与局域网外的指定IP地址通信,可以从两个层面去考虑:
从数据链路层,这只适合支持以太协议的局域网中运行,只要在路由表上修改MAC过滤条件即可,如果是非网关主机(一般网关指的是与外网连接的那个计算机,常见为路由器),你可以先通过ARP协议取得所有计算机的IP与MAC对应表(称为ARP表),然后向其它普通主机发布假的网关ARP应答包即可,这样其它主机均把数据传向那个假的ARP对应的目的主机,这样你就可以在普通主机与真正的网关之间窃听数据,实现监控,到时候要阻止连接那不就是一个函数的问题。
从IP层面上去看,你可以在网关上设定过滤条件,这样就可以阻止与特定的IP地址的计算机通信,对于一个非网关主机你可以,发布假的网关IP(用ICMP的重定向数据包即可),这样你充当了其它非网关主机与网关主机之间桥梁,你就可以为所欲为了,呵呵。

如果阻止数据包发往(收取)网络有很多种方法:
基于WINSOCK的LSP层插入;
自己写网卡的驱动程序;
直接调用API,(WIN2000以上计算机支持)。

MAC只能用于局域网 可以用ARP协议 查要连接的IP的MAC地址 认定的MAC可以连接 陌生MAC不连接

使用共享

arp 协议 确实 只能用于局域网 连接前检查要连接的ip的 mac地址