如何监视 某一特定网卡 的数据


很长时间不写东西 ,写一点点

Win32下监视网卡有以下几个办法
1. Raw Socket
2.Socket SPI(LSP)
3.NDIS Hooking
4.其他杂办法 Firewall Hooking....

其中值得注意的是3
以前商业firewall一般是NDIS Hooking.
基本原理如下:
NDIS其实是一个NIC driver和Protocol driver的衔接人
它以链表的形式保持了一系列NIC和protocol的数据结构
数据结构里包含这些driver 注册给他们的处理函数.(所有driver都是提供一系列的处理函数等别人call)
你只要能hook到他们 你就在关键时刻获得了硬件或者协议的通知(很powerful啊)

ndis hooking就是调用protocol driver才call的NdisRegisterProtocol
获得那个handle.从而找到NDIS保存的一系列driver的handler.替换他们为自己的.就hook完成了

但是,这并不是最低级 最DNA级别的方法
题目是 "某一特定网卡"

既然是 某一特定网卡.最低级,最底层的方法是 监视对系统 port IO和memory的access.
这个方法原理极其简单.比ndis hooking 简单,强力得多。但却不具备NDIS hooking的通用性。一次编程 只能对某一特定NIC有效。要想监视thinkpad 的 e100,VPC 的dc211x4.你得又写一次代码.看一次databook.

比如,以RTL8139来说  你可以从 0xec30(由PCI总线配置决定)  读DWORD作为物理地址,进而来获得网卡接收的数据.
从0xec20,0xec24,0xec28,0xec2c里的值为物理地址进而 获得其他程序发送的数据.
一切都是那么的清爽 简单. 如同 20年前 DOS下 进行的编程.简约.直观。
完全不用关心是什么操作系统, Win9x,Win2K.Linux,dos
看看端口  什么都清楚了~~~

杨家坪毛线沟九占人
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值