http://coup-de-grace.oss-cn-beijing.aliyuncs.com/113-0.png?x-oss-process=style/blog_width_800

最近在整理笔记,rebuild一下脑内 indices.

这次从中间网络与协议部分开始整理,免得出现老是abandon的情况

说起来有关这一块,不看这个博客说不过去的.

我个人也是从里面摘抄很多内容.最近几年没有更新真遗憾啊,想必他晋升后比较忙了.

Socks5

建立 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.

ss protocol

链接

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.

文章本来就没打算写太长…心领神会吧.