开发者社区> 吞吞吐吐的> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

用C#实现SOCKS5代理服务(源码公开)

简介:
+关注继续查看

早上,逛园子时看到breeze写了一篇Socks5代理协议的文章《C# 实现Socket5代理协议通讯 》,并在评论里看到howaaa说“顺便也讲讲用C#实现一个Socks5代理服务器吧,这方面资料很少,相信很有价值”,于是一时兴起,花了一个下午的时间捣鼓出Socks5代理的服务端程序。程序很简单(只要弄懂了Socks5协议就基本明白了)、代码很零乱。有兴趣的可以看看,没兴趣的就飘过吧,嘿嘿....

breeze的文章中少了一个密码身份验证的讲解,在这里我补一下。

============================================================================================

当客户端与Socks5代理服务器连接上并进行握手时,客户端将会发送以下格式的握手报文:

版本号(1字节) | 认证方法数(1字节) | 认证方法序列(1-255个字节长度)

比如报文(假如为V5版本):

0x05 0x01 0x00 则表示客户端只支持一种(0x1)认证方法0x00 (无验证需求)

0x05 0x01 0x02 则表示客户端只支持一种(0x01)认证方法0x02(用户名/密码 验证)

0x05 0x02 0x00 0x02 则表示客户端支持两种(0x02)认证方法“0x00与0x02”

其中Socks5协议定义了以下几种认证方法:

0x00 无验证需求

0x01 通用安全服务应用程序接口(GSSAPI)

0x02 用户名/密码(USERNAME/PASSWORD)

0x03 至 X'7F' IANA 分配(IANA ASSIGNED)

0x80 至 X'FE' 私人方法保留(RESERVED FOR PRIVATE METHODS)

0xFF 无可接受方法(NO ACCEPTABLE METHODS)

 

在这里,我们要详解了解的则是“0x02 用户名/密码”验证的过程。

当客户端发送带有0x02认证方法的报文(如:“0x05 0x01 0x02”)到服务端时,根据报文,服务端得知客户端支持用户名/密码认证(0x02),因此如果服务端需要验证,则发送“0x05 0x02”应答,这样客户端将会进入“用户名/密码”验证过程。

“0x02 用户名/密码”验证协议的报文格式是:

0x01 | 用户名长度(1字节)| 用户名(长度根据用户名长度域指定) | 口令长度(1字节) | 口令(长度由口令长度域指定)

所以报文的长度是根据用户名与密码的长度而定,比如以下报文:

0x01 0x02 0x41 0x42 0x02 0x43 0x43

则表示发送用户名为“AB”密码为“CC”的验证报文。

服务端接收到用户名/密码验证报文后进行相应处理并返回以下格式的应答报文:

0x01 | 验证结果标志

如果验证通过则“验证结果标志”的值为“0x00”,否则其它值都表示验证失败!不允许再进行下一步的操作。

 

当握手与身份验证过程都通过后,将进入“连接请求”过程,在这步中服务端应该需要对客户端发送过来的远程服务端地址进行连接状态检查的,但在我这个程序中,我偷了懒没做,简单的就去后面的“连接”会话过程了,嘿嘿。

源代码下载:

http://files.cnblogs.com/kingthy/Socks5Server.rar

此程序用QQ与迅雷测试过,基本都能正常运行。。。

本文转自Kingthy博客园博客,原文链接:http://www.cnblogs.com/kingthy/archive/2008/10/22/1317132.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5
网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5
0 0
https是如何做到客户端与服务端之间安全通信
https是什么。 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。
1917 0
https协议概念
https协议概念
0 0
实现TCP透明代理(附下载)
    本文所描述的TCP代理服务器工作于网络协议层次中的应用层,位于传输层之上。只要是以TCP的方式为客户提供服务的(包括我们的HTTP服务器,HTTP底层走的仍然是TCP),我们都可以在真正的TCP服务器前面增加代理服务器。
757 0
Socks5协议中文文档
译者:Radeon(Radeon bise@cmmail.com) 译文发布时间:2001-6-18 目录 1.介绍 2.现有的协议 3.基于TCP协议的客户 4.请求 5.地址 6.应答 7.基于UDP协议的客户 8. 安全性考虑 9. 参考书目 1.介绍 利用网络防火墙可以将组织内部的网络结构从外部网络如INTERNET中有效地隔离,这种方法在许多网络系统中正变得流行起来。
840 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载