使用WinPcap,LibPcap开发包:
首先接收网内A机器发来的网络包(不知道接收以太网数据包,还是IP包,还是TCP包等比较合适),抓取到这个包后,修改这个包中的相关的数据结构,比如让它伪装成http协议的包通过B机器的80端口转发出去(因为B机器只开了80端口),然后在网外建立一台服务器,接收B机器发出来的数据包,还原此包的原来面目,按照包原来的格式发到目的主机。
逆序接收外网返回来的消息。
以上功能类似(Proxy)现在的问题是,A机器需要接收何种类型的数据包(以太网包?ip包?TCP包/UDP包?),也就是需要修改伪装的包,然后再转发!如何伪装这个数据包?(我的想法是:修改截获包的相应包头,还有一种是在原来的包头上再增加一个包,此包头为http协议的包头)
首先接收网内A机器发来的网络包(不知道接收以太网数据包,还是IP包,还是TCP包等比较合适),抓取到这个包后,修改这个包中的相关的数据结构,比如让它伪装成http协议的包通过B机器的80端口转发出去(因为B机器只开了80端口),然后在网外建立一台服务器,接收B机器发出来的数据包,还原此包的原来面目,按照包原来的格式发到目的主机。
逆序接收外网返回来的消息。
以上功能类似(Proxy)现在的问题是,A机器需要接收何种类型的数据包(以太网包?ip包?TCP包/UDP包?),也就是需要修改伪装的包,然后再转发!如何伪装这个数据包?(我的想法是:修改截获包的相应包头,还有一种是在原来的包头上再增加一个包,此包头为http协议的包头)
如nuaawenlin所说,必须要有NDIS驱动
不过另一方面,就你说的这个情况,即使实现了NDIS驱动的话估计工作量也足够大,在协议上还有很多复杂的问题,呵呵,感觉一定是个痛苦的差事
我要的功能也就和它差不多。先接收再转发到外网,然后交给外网服务器。
对NDIS我还没有入门,只知道有这么个东西。还望多交流。 wenlin_1227(秋水寒) 你有Email或者QQ吗?留个联系方式。
对Winpcap来说,只能抓包?
我的想法是,先抓包,然后修改,再发出去。当然最后是能够避开进入操作系统。
winpcap有过滤接收到的数据的功能,注意winpcap底层的驱动与系统的tcp/ip协议栈处于同一个层次,即网卡会将数据分别传给winpcap和系统的tcp/ip协议栈,虽然winpcap不能过滤发给系统的tcp/ip数据,但是可以过滤传送给winpcap开发的应用程序的数据。
像lz这种情况,应该是选择接收tcp特定端口的流量(如果你是做udp的proxy当然选择对应的udp端口),接收到这些数据后可以修改数据包头。我的想法是,先抓包,然后修改,再发出去。当然最后是能够避开进入操作系统。就是这样做,而且肯定可以做得到!!!!!而且与lz“能够避开进入操作系统。”的要求完全吻合
但是这样的话,操作系统会对收到的包做出反应,Winpcap也会对此包做出反应,但是对方的机器应该只对其中的一个做出相应的反应,当然会丢弃一个反应。 sevencat(七猫) ,能详细说说的意见吗?因为看到网上评价WINPCAP对这方面比较不错。所以选择了这个开发包。其实也和你说的一样,差不多算是一个HTTP Tunnel吧。
自己另外增加包头?还是修改其中的包头?不知道这样做对不对?
这个怎么做呢?
和你上面说的观点有点矛盾。
这个过滤不是由winpcap来做,比如linux系统有iptables防火墙来做
在windows下,网卡tcp/ip属性->高级->选项->tcp/ip筛选来设置
当然也可以通过第三方的防火墙来设置,比如赛门铁克、瑞星防火墙等
http://www.nocrew.org/software/httptunnel.html
这个在linux/freebsd上的实现
filter the packets according to user-specified rules before dispatching them to the application
transmit raw packets to the network
gather statistical information on the network traffic
WinPcap receives and sends the packets independently from the host protocols, like TCP-IP. This means that it isn't able to block, filter or manipulate the traffic generated by other programs on the same machine: it simply "sniffs" the packets that transit on the wire. Therefore, it does not provide the appropriate support for applications like traffic shapers, QoS schedulers and personal firewalls
The WinPcap programming interface can be used by many types of network tools for analysis, troubleshooting, security and monitoring. In particular, classical tools that rely on WinPcap are:network and protocol analyzers
network monitors
traffic loggers
traffic generators
user-level bridges and routers
network intrusion detection systems (NIDS)
network scanners
security tools