使用WinPcap,LibPcap开发包:
首先接收网内A机器发来的网络包(不知道接收以太网数据包,还是IP包,还是TCP包等比较合适),抓取到这个包后,修改这个包中的相关的数据结构,比如让它伪装成http协议的包通过B机器的80端口转发出去(因为B机器只开了80端口),然后在网外建立一台服务器,接收B机器发出来的数据包,还原此包的原来面目,按照包原来的格式发到目的主机。
逆序接收外网返回来的消息。
以上功能类似(Proxy)现在的问题是,A机器需要接收何种类型的数据包(以太网包?ip包?TCP包/UDP包?),也就是需要修改伪装的包,然后再转发!如何伪装这个数据包?(我的想法是:修改截获包的相应包头,还有一种是在原来的包头上再增加一个包,此包头为http协议的包头)

解决方案 »

  1.   

    winpcap,libpcap只能拦截数据,不能过滤数据需要编写NDIS驱动
      

  2.   

    WinpCap是不能实现的
    如nuaawenlin所说,必须要有NDIS驱动
    不过另一方面,就你说的这个情况,即使实现了NDIS驱动的话估计工作量也足够大,在协议上还有很多复杂的问题,呵呵,感觉一定是个痛苦的差事
      

  3.   

    如果网络环境能够控制的话最好引用VPN来完成
      

  4.   

    对了,不知道通通通有人用过没有?
    我要的功能也就和它差不多。先接收再转发到外网,然后交给外网服务器。
    对NDIS我还没有入门,只知道有这么个东西。还望多交流。 wenlin_1227(秋水寒) 你有Email或者QQ吗?留个联系方式。
      

  5.   

    qrlvls(空 气):
    对Winpcap来说,只能抓包?
    我的想法是,先抓包,然后修改,再发出去。当然最后是能够避开进入操作系统。
      

  6.   

    我的EMAIL地址是[email protected],大家可以相互交流一下啊!我是最近在做一个关于网络防火墙的项目,要利用中间层接口拦截数据包.目前也在学习和探索中.
      

  7.   

    对于lz的要求,winpcap是完全可以做到的,不用去研究底层的ndis
    winpcap有过滤接收到的数据的功能,注意winpcap底层的驱动与系统的tcp/ip协议栈处于同一个层次,即网卡会将数据分别传给winpcap和系统的tcp/ip协议栈,虽然winpcap不能过滤发给系统的tcp/ip数据,但是可以过滤传送给winpcap开发的应用程序的数据。
    像lz这种情况,应该是选择接收tcp特定端口的流量(如果你是做udp的proxy当然选择对应的udp端口),接收到这些数据后可以修改数据包头。我的想法是,先抓包,然后修改,再发出去。当然最后是能够避开进入操作系统。就是这样做,而且肯定可以做得到!!!!!而且与lz“能够避开进入操作系统。”的要求完全吻合
      

  8.   

    就是一个TUNNEL吧,估计不用WINPCAP都可以做得到,就是一个PROXY
      

  9.   

    谢谢nntg(糖果)的建议。
    但是这样的话,操作系统会对收到的包做出反应,Winpcap也会对此包做出反应,但是对方的机器应该只对其中的一个做出相应的反应,当然会丢弃一个反应。 sevencat(七猫) ,能详细说说的意见吗?因为看到网上评价WINPCAP对这方面比较不错。所以选择了这个开发包。其实也和你说的一样,差不多算是一个HTTP Tunnel吧。
      

  10.   

    sevencat(七猫),能详细说说Tunnel吗?具体如何伪装成http数据包的?
    自己另外增加包头?还是修改其中的包头?不知道这样做对不对?
      

  11.   

    但是这样的话,操作系统会对收到的包做出反应,Winpcap也会对此包做出反应,但是对方的机器应该只对其中的一个做出相应的反应,当然会丢弃一个反应。可以在系统的tcp/ip协议栈中过滤相关的内容,即只让winpcap的程序去响应,而系统不去响应。另外也可以用系统的rawsocket
      

  12.   

    可以在系统的tcp/ip协议栈中过滤相关的内容?
    这个怎么做呢?
    和你上面说的观点有点矛盾。
      

  13.   

    可以在系统的tcp/ip协议栈中过滤相关的内容
    这个过滤不是由winpcap来做,比如linux系统有iptables防火墙来做
    在windows下,网卡tcp/ip属性->高级->选项->tcp/ip筛选来设置
    当然也可以通过第三方的防火墙来设置,比如赛门铁克、瑞星防火墙等
      

  14.   

    LZ请看这个
    http://www.nocrew.org/software/httptunnel.html
    这个在linux/freebsd上的实现
      

  15.   

    The purpose of WinPcap is to give this kind of access to Win32 applications; it provides facilities to:capture raw packets, both the ones destined to the machine where it's running and the ones exchanged by other hosts (on shared media) 
    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
      

  16.   

    What WinPcap can't do
    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
      

  17.   

    What kind of programs use WinPcap
    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
      

  18.   

    谢谢 cryptonym(想裸睡)的帮忙。