转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
VB6 中 使用Winsock穿越各种代理的实现(TCP协议)         ★★★★

VB6 中 使用Winsock穿越各种代理的实现(TCP协议)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3954 更新时间:2009/4/23 15:03:55

感谢 Oleg Gdalevich 和 CSDN 用户 zyg0(影子)对本文(程序)所做的贡献

本文中引用的RFC文档内容归原作者所有

转载本文请标明出处

本文作者:吴滂

本文中提及的程序可在 枕善居  http://www.mndsoft.com/blog/blogview.asp?logID=494 下载

关于用vb的winsock穿透代理的讨论归讨论,一直没有什么源代码放出,现在我就放源出来,省的某些人拿这所谓的"技术"去骗钱.

由于缺乏测试环境,本程序只在我自己编写的代理模拟器上测试过,其结果和腾讯QQ,MSN,网易泡泡穿越该模拟器时得出的结果基本一致.因此,代码可能有错误的地方,请各位有条件的用户自行改正,请见谅!

首先,是基础知识,也就是RFC文档.这个是必看内容.我的程序就是基于这些文档写出.下面是各RFC的连接,为了准确,我先提供英文版的连接,在下面的介绍中再把关键部分翻译成中文.另外,要纠正一个错误.国内很多文章说socks5代理的用户名/密码校验标准在 RFC 1928里有说明,其实这是一个完全错误的说法(我很怀疑写那文章的人有没有看过RFC),socks5用户名/密码校验标准其实是在 RFC 1929 里面说明的.

RFC 1928 - socks5 代理标准

RFC 1929 - socks5 代理用户名/密码校验标准

RFC ???? - socks4 代理标准

RFC 2616 - HTTP1.1 标准

 

我们现在直入正题:先说socks5的TCP穿透(有了这个例子大家自己照这可以写UDP穿透)

首先和代理服务器连接-直接用winsock去connect指定的地址端口(通常是1080)即可.然后进入细节商议阶段.

细节商议--无用户名/密码校验

RFC 1928 中对于细节商议的第一步是这样描述的:

The client connects to the server, and sends a version
   identifier/method selection message:

                   +----+----------+----------+
                   |VER | NMETHODS | METHODS  |
                   +----+----------+----------+
                   | 1  |    1     | 1 to 255 |
                   +----+----------+----------+

   The VER field is set to X''''05'''' for this version of the protocol.  The
   NMETHODS field contains the number of method identifier octets that
   appear in the METHODS field.


   The server selects from one of the methods given in METHODS, and
   sends a METHOD selection message:

                         +----+--------+
                         |VER | METHOD |
                         +----+--------+
                         | 1  |   1    |
                         +----+--------+

   If the selected METHOD is X''''FF'''', none of the methods listed by the
   client are acceptable, and the client MUST close the connection.

   The values currently defined for METHOD are:

          o  X''''00'''' NO AUTHENTICATION REQUIRED   ---------无用户密码 00
          o  X''''01'''' GSSAPI                       ---------??? GSSAPI ?
          o  X''''02'''' USERNAME/PASSWORD            ---------有用户密码 02
          o  X''''03'''' to X''''7F'''' IANA ASSIGNED
          o  X''''80'''' to X''''FE'''' RESERVED FOR PRIVATE METHODS
          o  X''''FF'''' NO ACCEPTABLE METHODS        ---------失败       255

   The client and server then enter a method-specific sub-negotiation.

 


换言之,就是向服务器发送三个字节的Byte数组,由于是无须用户/密码校验,展开来写是 05 01 00

然后服务器返回两个字节的信息,第一个字节固定,第而个字节是说明,如果是16进制的FF(即十进制255)表示连接失败(o  X''''FF'''' NO ACCEPTABLE METHODS)根据上面的列表,我们连接成功应该第二字节为 00.

然后我们进入第二步,请看以下RFC说明:

Once the method-dependent subnegotiation has completed, the client
   sends the request details.  If the negotiated method includes
   encapsulation for purposes of integrity checking and/or
   confidentiality, these requests MUST be encapsulated in the method-
   dependent encapsulation.

   The SOCKS request is formed as follows:

        +----+-----+-------+------+----------+----------+
        |VER | CMD |  RSV  | ATYP | DST.ADDR | DST.PORT |
        +----+-----+-------+------+----------+----------+
        | 1  |  1  | X''''00'''' |  1   | Variable |    2     |
        +----+-----+-------+------+----------+----------+

     Where:

          o  VER    protocol version: X''''05''''             ------------- 固定 05
          o  CMD
             o  CONNECT X''''01''''                           ------------- TCP方式 01
             o  BIND X''''02''''
             o  UDP ASSOCIATE X''''03''''                     ------------- UDP方式 03
          o  RSV    RESERVED                            ------------- 固定 00
          o  ATYP   address type of following address
             o  IP V4 address: X''''01''''                    ------------- IPv4 01
             o  DOMAINNAME: X''''03''''
             o  IP V6 address: X''''04''''
          o  DST.ADDR       desired destination address
          o  DST.PORT desired destination port in network octet
             order

   The SOCKS server will typically evaluate the request based on source
   and destination addresses, and return one or more reply messages, as
   appropriate for the request type.


发送 05 01 00 01 + 目的地址(4字节) + 目的端口(2字节),目的地址和端口都是16进制码(不是字符串)。
例202.103.190.27 - 7201
则发送的信息为:05 01 00 01 CA 67 BE 1B 1C 21
(CA=202 67=103 BE=190 1B=27 1C21=7201)

关于我是怎么把16进制码换成10进制的,请自己看程序

最后,接受服务器返回数据,看RFC:

       +----+-----+-------+------+----------+----------+
        |VER | REP |  RSV  | ATYP | BND.ADDR | BND.PORT |
        +----+-----+-------+------+----------+----------+
        | 1  |  1  | X''''00'''' |  1   | Variable |    2     |
        +----+-----+-------+------+----------+----------+

  

[1] [2] [3] [4] [5]  下一页


[Web开发]VB实现客户机←→服务器(TCP/IP)编程监听代码  [常用软件]优化脱兔:突破XP TCP连接限制 脱兔,连接限制
[常用软件]Winamp5 Alpha版最新试用 中  [VB.NET程序]VB.NET编写的TCP异步通讯类(目前测试中)
[VB.NET程序]VB6 自动编译组件  [VB.NET程序]在 VB 中 引 用 .dbf 及 索 引 文 件
[Delphi程序]Delphi6/7 中XML 文档的应用  [Delphi程序]Delphi 中 COM 实现研究手记(一)
[Delphi程序]DBGrid 中 Cell内文字、渐进式背景色的画法  [Delphi程序]在 程 序 中 加 入 英 文 朗 读 功 能
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台