最近在整理笔记,rebuild一下脑内 indices.
这次从中间网络与协议部分开始整理,免得出现老是abandon的情况
说起来有关这一块,不看这个博客说不过去的.
我个人也是从里面摘抄很多内容.最近几年没有更新真遗憾啊,想必他晋升后比较忙了.
建立 Socket 连接前建立的 Auth 连接.
成功握手后就是单纯的转发,相比 http proxy不涉及重写 header,即便是回写过程也能透明的执行.
从 Socks4 开始的演进就不提了,wiki 中详述.
经典的流程及报文如下
# 握手阶段
client -> ss: 0x05 0x01 0x00
ss -> client: 0x05 0x00
# 建立连接
client -> ss: 0x05 0x01 0x00 0x03 0x0a b'google.com' 0x00 0x50
ss -> client: 0x05 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x10 0x10
# 传输阶段
client -> ss -> remote
remote -> ss -> client
简言之就是我们的最简实现要在响应的 REP 上得到 0x00
.
client <---> ss-local <--[encrypted]--> ss-remote <---> target
[target address][payload]
{
"server": "0.0.0.0",
"port_password": {
"443": "889900"
},
"method": "aes-256-cfb",
"obfs": "origin",
"local_address": "0.0.0.0",
"local_port":1085
}
不多说了,encryption.
文章本来就没打算写太长…心领神会吧.