挖井

类库大魔王的挖井日记

挖一口属于自己的井


Avege WIP

Avege最早的目标是成为一个redsocks的另一个实现,用Go做方便地跨平台,同时相比redsocks原版要多增加shadowsocks协议的支持。可是后来却只实现了shadowsocks协议,就只顾着做其他功能去了。

曾经也想过把socks/http协议作为后端支持做了,但是当时粗略地看了一下代码,觉得当前的代码结构并不好加新协议的支持,同时自己对这些协议的支持需求并不强烈,于是便放下了。

前几天Qt 5.7.1出来了,于是便要升级。Qt官方的CDN实在太渣,在大陆直连根本没速度,那些镜像站又没一个能正常工作的,于是只好走代理。本来代理线路速度是很快的,但居然被QoS限制了,遇到几百MB的大package要下载时,每次下载了几十MB百来MB时必然会断掉,而且Qt的升级程序居然没有断点续传,那个package得重新下载,屡试不爽!后来想着试试shadowsockr的混淆吧,我用的是libev版,居然非常顺利地跑满了电信百兆宽带!于是我就想Avege需要这个混淆功能!

混淆功能并没有多少文档可以参考,只能对照着libev版的C代码翻译成Go代码,虽然python版C#版也有实现,但是相对来说我更熟悉C一点,不过我仍然看着一头雾水,一串串的字符串和魔鬼数字,就是一串串的密码啊!搞了整整一天,也只把tls1.2_ticket_auth这个混淆插件的实现翻译了一下,还没联调测试。

然后我就想着先拿libev版的用着,或许Avege可以把后端换成socks5连起来用。得益于Go利用代码的便利性,在github上找到一个proxyclient包,正好满足我的需求。又仔细看了一遍Avege的代码,这次发现要新加其他协议作为后端居然不需要修改多少代码!只要让读取配置文件部分能识别新的配置项,在连接后端时调用新的方法,就能正常工作了!

测试了一下,socks5的话速度并没有多少损失,http的话速度会降到200-300KBps左右,暂时可以满足了!

算是给Avege填了一个坑啊。下一步就是坑混淆的坑了。

本文地址:

https://minidump.info/blog/2016/12/avege-wip/

上一篇

供STL使用的可调用体的演进

很早的时候,“道祖”Andrei Alexandrescu在“道经”《Modern C++ Design》中就有个简单的小结,列举了C++(当时还是C++98)中的可调用体: C风格的函数 C风格的函数指针 函数的引用,本质上和const函数指针类似 仿函数functor,即自定义了o...…

CPPOOPGPXP 全文阅读
下一篇

SSR混淆协议Go版移植手记(一)

这几天断断续续地移植着SSR的一个混淆插件tls1.2_ticket_auth,至今仍然没能正常工作起来,忧郁啊。稍微记录一点读ss-go和ssr-csharp/ssr-libev的代码所得,以便日后翻阅。本身ss协议的定义已经有公开的文档了,很简单,每个客户端连接服务端时,最开始是一串随机数...…

Shareware 全文阅读