说白了就是一个NAT
我已经用Pcap实现了一个
但是苦于Pcap只能抓包不能拦截
所以用它做网关的时候我必须用防火墙禁用网关自身的所有通信
现在考虑到还是用拦截-修改-转发这样的方式比较好
简单描述一下就是:
1、网卡收到数据包
2、符合规则就放入到我的Buff中,不交给上层,不符合规则就原样交给上层
3、我的程序负责从Buff中读取数据包根据相关规则修改
4、通过指定的网卡直接发送出去 我看了《NAT在NDIS中间层驱动中的实现》一文
由于对NDIS不是很懂,而且那篇文章也没有给出全部源码我要实现:
1、告诉操作系统在网卡收到包的时候先调用我的过滤函数,次函数把符合一定规则的数据包放到一个缓冲区中而不转交给上层,不符合的直接交给上层。
2、我另外开一个线程或者进程对上述缓冲区中的包按照一定规则进行修改。并且直接通过指定的网卡(由路由或者NAT表确定)发送出去。现在想问问我的想法能实现吗?实现起来复杂吗?
有没有一个类似LibPcap的开发库可以直接使用?
或者那位大侠有《NAT在NDIS中间层驱动中的实现》的源码或者类似源码放出我参考一下?
我已经用Pcap实现了一个
但是苦于Pcap只能抓包不能拦截
所以用它做网关的时候我必须用防火墙禁用网关自身的所有通信
现在考虑到还是用拦截-修改-转发这样的方式比较好
简单描述一下就是:
1、网卡收到数据包
2、符合规则就放入到我的Buff中,不交给上层,不符合规则就原样交给上层
3、我的程序负责从Buff中读取数据包根据相关规则修改
4、通过指定的网卡直接发送出去 我看了《NAT在NDIS中间层驱动中的实现》一文
由于对NDIS不是很懂,而且那篇文章也没有给出全部源码我要实现:
1、告诉操作系统在网卡收到包的时候先调用我的过滤函数,次函数把符合一定规则的数据包放到一个缓冲区中而不转交给上层,不符合的直接交给上层。
2、我另外开一个线程或者进程对上述缓冲区中的包按照一定规则进行修改。并且直接通过指定的网卡(由路由或者NAT表确定)发送出去。现在想问问我的想法能实现吗?实现起来复杂吗?
有没有一个类似LibPcap的开发库可以直接使用?
或者那位大侠有《NAT在NDIS中间层驱动中的实现》的源码或者类似源码放出我参考一下?
winPcap只能抓包而已你是说修改所有信息
还是只修改 信息呢
如果是所有信息包括ip头部
那只有用驱动了
如果是后者
可以考虑用函数钩子
截获tcp udp包 然后修改转发