基于IMD驱动ARP防火墙设计(windows平台)

基于 IMD 驱动 ARP 防火墙设计 (windows 平台 )

 

 

IMD 驱动认识

 

IMD 注册的时候,会同时注册协议和端口,他们分别代码着 protocol_block,miniport_block

protocol_block 中的 bindinghanle 代码着 IMD 协议驱动和下层 nic 的绑定关系。 Bindinghanle 其实是一个 open_block 结构,里面存有下层 nic 的回调,例如 send 函数,而 miniport_block 结构中则存有上层协议驱动中回调函数,例如 receive,, 所以调用 indicatereceive (miniport_block,xxx ) 时其实就是调用这个结构中的 receive 函数。当然,如果只有一个 IMD 的话,而且上层协议是 tcp/ip 的话,这个 receive 函数就应该是在 tcpip.sys 中实现,所以按我的理解就是上层 tcpip.sys 对应的 open_block 结构中就有 imd 驱动的 miniport 注册的回调。总体先可以这样理解,因为 WINDOWS 下,还有个 NDIS SYS 驱动协同管理的,挺复杂的,我用 WINDBG 看了下,上面对应的结构中的一些回调函数的地址是 NDIS SYS 空间。

其中 passthru 中的 adapter 结构中的 bindingt minporthandle 和上面的 open_block , miniport_block 分别对应

这鸟玩意资料少,只能暂时做此理解。

 

程序分为应用层和驱动层 :应用层主要是一个 dll ,负责发送过滤控制码和接收数据过滤警报,驱动层主要是负责判断数据的合法性,然后向应用层发送通知

 

防火墙主要功能分为三块 :

1.  防止本机被欺骗(接收错误的网关 MAC

2.  防止 IP 冲突

3.  防止本机在网关的 MAC 记录被窜改

 

具体代码实现:

1.  防止本机被欺骗最重要的是判断出发送方的 ip 为网关时,识别出对应的数据包中的 MAC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值