Socks5代理服务

假期的时候把socks5代理的RFC全部读完了,有些体会不敢独享,在这里写出来大家一起评论评论,如有错误敬请提出。

下面假设使用TCP连接方式。首先需要和代理服务器之间建立连接,这里没什么复杂的,简单的connect(serverIP, serverPort)就可以了。连接成功之后,需要使用send()发送命令字,以便确定是否需要验证,下面是RFC里面的命令字格式:

项目 版本 方式数目 连接方式
项目长度 1 1 1-255

首先"版本"这一项固定是 X"05"(socks version 5),方式数目告诉server究竟提交了几种连接方式的请求,至于连接方式则可以有多个。下面就是方式列表:

连接方式 含义
X’00’ 无需验证,直接继续
X’01’ GSSAPI
X’02’ 需要用户名/密码
X’03’ to X’7F’ IANA ASSIGNED
X’80’ to X’FE’ 保留方式,可以自己灵活选用
X’FF’ 未包含符合要求的方式

接下来是server的回应:

项目 版本 允许的连接方式
项目长度 1 1

版本不必说,仍然固定是 X"05",允许的连接方式则是在你提交的众多连接方式中,由server选出一个可以接受的,然后返回来;如果没有,那么返回就是 X"FF"。其中一般用到的就是 X"00"和 X"02"了。它们之间的区别就在于 X"02"方式需要发送用户名/密码,验证通过后的过程则和 X"00"方式没有任何区别。

客户端识别到server返回 X"02"之后,发送下列格式验证字串:

项目 VER 用户名长度 用户名 密码长度 密码
项目长度 1 1 1-255 1 1-255

注意:这里的VER有别于上边,固定是 X"01"。用户名/密码最大长度是255。

server端验证完毕后返回结果:

项目 VER 验证结果
项目长度 1 1

验证结果是 X"00"的话,就表示验证通过,否则都是不过…

接下来的过程一样,就是发送请求命令字了:

项目 版本 命令字 保留 地址类型 地址 端口
项目长度 1 1 X"00" 1 不固定 2

版本固定 X"05";命令字分三种: CONNECT X"01",BIND X"02",UDP X"03"。CONNECT就是普通的TCP连接;BIND要求你的client支持接受server的连接请求(FTP协议就是一个典型的例子);UDP则是一个特例,我还没有完全理解… 保留项固定是 X"00"。

地址类型有三种:X"01"、X"03"、X"04",分别对应IP-V4、DOMAINNAME、IP-V6,而接下来的地址长度也根据地址类型的不同而变化。IP-V4的长度是4位,DOMAINNAME的长度则根据实际情况变化,但是地址的第一位的内容要设成域名字符串的长度,IP-V6就是16位。

端口长度固定两位,没什么可说的。

而server返回的内容格式也大致相同

项目 版本 返回值 保留 地址类型 地址(BND) 端口
项目长度 1 1 X"00" 1 不固定 2

返回值可能是下列值中的一个:

连接方式 含义
X’00’ 成功
X’01’ general SOCKS server failure
X’02’ 连接不符合server规格
X’03’ 目标网络无法到达
X’04’ 目标主机无法到达
X’05’ 连接拒绝
X’06’ TTL expired
X’07’ 命令不支持
X’08’ 地址格式不支持
X’09 to X’FF’ 保留
时间: 2024-09-13 12:14:04

Socks5代理服务的相关文章

代理服务器软件性能比较

WinGate WinGate可以算是代理服务器软件中的"元老"了,性能十分成熟,能够提供大量的代理服务,功能十分强大.现在最新的版本是5.0.1.WinGate提供了十几种协议的代理,能够实现Internet上绝大部分应用,对服务器性能的要求不高,可以运行于Windows9x和Windows NT,2000平台上,能够为Windows3.1/3. 2/9x/NT/2000客户提供代理服务,还可以为Novell网络的用户提供代理服务.WinGate提供的功能主要有: * WWW缓存,支

Tunnel:论如何在内网中自由渗透

背景 能够成功地通过web漏洞获取到webshell,对于一次完整的渗透测试来说,仅仅相当于万里长征的第一步.这么说,可能比较夸张吧,并不是所有渗透测试都会遇到几百台机器的大内网. 在PTES(渗透测试执行标准)中,把渗透测试分成了七个主要的过程,也就是说现在通常说的前期交互.目标识别.信息收集.漏洞分析.漏洞利用.后渗透测试.报告编制这七大步骤.如果你看过PTES标准,你应该会跟我有一样的感觉,后渗透测试部分的内容,几乎等于其他六个部分的总和.当然,也只是在系统规模达到一定程度的时候,才会明显

ShadowSocks — GMail之殇

      除去广为人知.人见人爱的VPN,其实还有十八般兵器存在于科学上网界,其中ShadowSocks可以说是其中一把功能齐全的瑞士军刀.服务器端提供了各种版本,如Python.Node.js.Go.C libev等等,安装配置过程极其简单:而用户端则可以在windows.mac.iOS和android上轻松运行,很好很强大. Shadowsocks是什么?      码农对于shadowsocks应该不陌生,而一般普通网民可能知之甚少.shadowsocks实质上也是一种socks5代理服

linux中使用Privoxy将shadowsocks转为http代理

大家都知道shadowsocks只提供了SOCKS5的代理,而没有提供http代理,而很多软件仅提供了http代理的支持,比如老高需要使用shell命令行扶墙,或者使用git同步android的源代码,再或者更新android SDK,该怎么办呢? 老高在此介绍一个软件Privoxy,它可以作为代理的代理,为我们解决上述问题! Privoxy is a non-caching web proxy with advanced filtering capabilities for enhancing

ShadowSock配置实现科学上网的方法

说到"科学上网",真是让人佩服国人的毅力和创造力."科学上网"这个词,你可以慢慢去体会一下.今天twitter上fqrouter作者发布了关闭服务的公告.在网友评选的2014年最受欢迎的科学上网软件排名中,fqrouter是总成绩第一,效果第二好的软件,仅次于shadowsocks,fq是一个非常好的安卓APP应用,干净.整洁.管用.速度快,无法继续提供服务确认令人惋惜.     fq的关闭,让小伙伴儿们把目光转向了shadowsocks,那么到底什么是shadow

dante-server在64位Ubuntu上无法运行解决方法

dante-server是一个很好的socks4/socks5代理服务软件.在64位Ubuntu上运行会有错误日志: symbolfunction(): compiletime configuration error?  Failed to open "libc.so": /usr/lib/x86_64-linux-gnu/libc.so: invalid ELF header 出现这种错误解决办法很简单:  代码如下 复制代码 cd /lib/x86_64-linux-gnu/ ln

SQL Server 2005代理服务应用软件组成

代理服务是一种复杂的技术,具有很多可配置的移动组件.详细信息如下: 信息 信息是指在服务代理应用程序中调用的基本信息单元.对于服务代理来说,信息的接收总是按照其被发送的顺序进行,并且保证仅发送和接收一次.同时保证信息不丢失.有时发送的信息不能立即被收到.如果遇到这种情况,服务代理保存信息,并尝试以后再次发送.确认书将在信息之前被发送,来确保被他们传输的数据是所需要的.信息传输的最大值非常大,达2GB. 会话 当在服务代理应用程序中发送一个信息时,它需要使用一个会话(或对话).会话被创建成一个特殊

iptables下udp穿越结尾篇----iptables与socks5

iptables与socks5 从"iptables和natcheck"一文可知,只要在两端都采用了iptables作NAT后,即使两侧都通过了natcheck的兼容性测试,但iptables两侧永远也不能互相穿越. 怎么办呢,一种办法是在公网上添加中转服务器,两侧内网机器之间的UDP通讯都由中转服务器来中转(其实只要中转一侧足矣).这种方法的好处是,因为中转服务器在公网,任何NAT后面的机器都可以和中转服务器建立连接,也就是说,不同内网之间的机器总是可以通过中转服务器实现双向通信的.

Linux系统中将Tor的Socks5代理转为HTTP代理的教程

  你可以通过不同的 Tor 工具来使用 Tor 服务,如 Tor 浏览器.Foxyproxy 和其它东西,像 wget 和 aria2 这样的下载管理器不能直接使用 Tor socks 开始匿名下载,因此我们需要一些工具来将 Tor socks 转换成 http 代理,这样就能用它来下载了. 注意:本教程基于 Debian ,其他发行版会有些不同,因此如果你的发行版是基于 Debian 的,就可以直接使用下面的配置了. Polipo 这个服务会使用 8123 端口和 127.0.0.1 的 I