现在要实现数据包拦截修改转发功能,不知有哪几种实现方式现在我想到的有1、用网络安全开发包,类似winpcap之类的吧,但有一个问题,如果程序写好,在主机上不安装winpcap环境,程序能不能正常工作?是不是主机也必须安装相应的开发包。如果要实现数据包拦截修改转发功能,用什么开发包好?至少winpcap是不能实现的。2、实在不行只能用防火墙拦截机制和raw socket 之类的编写了,但也没有思路希望高手指点!程序要在windows 2003上实现.
调试欢乐多
sendv
revice
等等这样才能修改网络包
wincap是监听
WebBrowser用这两个函数不错。
在内网有很多机器,现要把所有数据流都转向内网一台机器A上,再由A修改后转发到外网,但要保证回来的数据包还要分别发往原来各自的源地址。也就相当于一个NAT功能,所以要考虑数据包的拦截、修改、转发。
我原来的思路是在底层对到达网卡的数据包拦截,把源IP地址改为A的IP地址,目的IP不变,重新计算校验和,转发出去。同时在A机器上维护一张Hash表,记录[srcIP,hash(destIP,srcPort,destPort,type)],其中type表示IP包中下一载荷的类型,如TCP、UDP。回来的数据包根据这张Hash表找到原来的srcIP.原来想只处理TCP和UDP。
但明显存在很多问题:
1、ICMP、SSL之类的数据包怎么处理
2、内网连接一个地址,但该地址不存在,发送回一个ICMP目标不可达报文,那怎么办,这个ICMP报文怎么发回原来的主机?
3、有此收、发在不同端口的程序,比如FTP又怎么处理NAT功能的确很难实现,请问各位有没有解决方案?
也可以用HOOK SOCKET API实现!