用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 ,如需转载请自行联系原作者
相关文章
|
7天前
|
数据采集 安全 JavaScript
C#医院手术麻醉信息管理系统源码 对接院内HIS、LIS、PACS
手麻系统的功能涵盖了麻醉临床业务管理、麻醉运营业务管理以及手术进程管理等,实现了将多种麻醉病历文书与医院HIS系统的有效关联,让手术室人员、设备资源和信息资源高度共享;实现了手术安排、各种统计报表等科室管理和科研工作的需求,可借其收集临床数据、进行整合分析,为围术期临床信息、管理、科研提供整体解决方案;该系统的运行,为医护人员提供了流程化、信息化、自动化、智能化的临床业务综合管理。
21 5
|
4月前
|
存储 C# 图形学
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
【Unity 3D】C#数据类型和变量、命名规范的讲解(附源码)
47 1
|
4月前
|
搜索推荐 算法 C#
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
【Unity 3D】C#中冒泡排序、选择排序、插入排序等算法的详解(附源码 超详细)
46 1
|
3天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
20天前
|
安全 JavaScript 前端开发
C#医院手麻系统源码,手术麻醉管理系统源码
手术麻醉管理系统贯穿患者入院至出院全程,整合术前术后流程,如手术排班、麻醉计划、术中监护及术后恢复。采用C#.net6.0、Vue、Ant-Design等技术,与sqlserver2019数据库结合。系统提供麻醉记录、手术安全核查、费用管理等功能,确保信息数字化和流程规范化。通过自动化记录和数据分析,增强手术安全,优化资源分配,并支持医疗质控与研究。
C#医院手麻系统源码,手术麻醉管理系统源码
|
21天前
|
存储 监控 安全
C#手术麻醉系统源码 大型医院手麻系统4大需求是什么?
C#编写的大型医院手术麻醉系统旨在满足四大核心需求:智慧医院建设,要求实时患者信息共享与监控;医院等级评级,强调安全评估与术后管理;电子病历评级,规定手术预约、麻醉信息的标准化;科室需求,包括系统互联、流程信息化、数据追溯、操作简便、文书完整、快速响应、生命体征动态采集及质量控制。系统提升手麻工作的效率与安全性,确保手术顺利进行。
|
1月前
|
数据挖掘 C# 开发工具
采用C#语言开发的全套医院体检系统PEIS源码功能介绍
体检系统,是专为体检中心/医院体检科等体检机构,专门开发的全流程管理系统,通过软件实现检测仪器数据自动提取,内置多级医生工作台,细化工作将体检检查结果汇总,生成体检报告登记到计算机系统中。通过软件系统进行数据分析统计与评判以及建立体检相关的体检档案。从而实现体检流程的信息化,提高工作效率,减少手动结果录入的一些常犯错误。 在实际应用中,医院体检系统能够解决传统体检中手工操作带来的问题,如工作量大、效率低下、易漏检、重检或错检等。通过与医院信息系统(如HIS、LIS、PACS等)的连接,系统能够满足体检中心的日常工作流程,提供更好的管理、统计和查询分析功能。同时,基于网络基础的系统可以在网上传输
23 1
|
2月前
|
前端开发 JavaScript BI
C#区域医院云LIS信息管理系统源码
区域医院云LIS可协助区域内所有临床实验室相互协调并完成日常检验工作,对区域内的检验数据进行集中管理和共享,通过对质量控制的管理,最终实现区域内检验结果互认。其目标是以医疗服务机构为主体,以医疗资源和检验信息共享为目标,集成共性技术及医疗服务关键技术,建立区域协同检验。
33 2
|
2月前
|
开发框架 前端开发 NoSQL
C#医院区域云LIS系统源码
LIS操作流程标本流转----标本核收----标本上机检验----费用汇总----报告审核----报告发布----报告打印等基础流程
37 3
|
3月前
|
运维 数据挖掘 C#
C#大型LIS检验信息系统项目源码
LIS系统能实现临床检验信息化,检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后,自动生成打印报告,通过网络存储在数据库中,使医生能够通过医生工作站方便、及时地看到患者的检验结果。
30 0