再造轮子: shadowriver 一个纯 JVM/Scala 实现的 Android VPN 应用程序

2017-05-10 16:14:58 +08:00
 wuhx

https://github.com/wuhx/shadowriver

一年前写的东西,因为解决不了性能问题,丢着一直没管。 抽空特地整理了一下,也算是做个总结。

需求是在 App 内能看到或修改其他 App 的网络数据包。

主要的想法是在 JVM 内实现了一个简单 TCP/IP 协议栈,直接把从 VPN 接口收到的数据包解开,检查 payload 并通过 tunnel 发送出去。而不是象 SS 那样通过第三方的 ss-tunnel,tun2socks 等 C 程序做。

4335 次点击
所在节点    程序员
11 条回复
hemoely
2017-05-10 16:24:29 +08:00
顶楼主精神
ayanamist
2017-05-10 16:25:47 +08:00
有一个叫 Packet Capture 的 app
liangzhitao
2017-05-10 16:39:40 +08:00
楼主用 scala 写 Android 是用的什么 IDE ?
xy19009188
2017-05-10 16:48:01 +08:00
能给个 release 么
wuhx
2017-05-10 17:08:40 +08:00
@xy19009188
sbt run
会下载所有依赖,包括 Android Sdk

@liangzhitao
IntelliJ
gamexg
2017-05-10 17:33:11 +08:00
牛人,
曾经想写个 vp n转s s 的程序,写了一部分就没能坚持下去。
futurexu
2017-05-10 17:51:45 +08:00
66666
wuhx
2017-05-10 18:02:00 +08:00
@ayanamist
特地安装试用了一下,很接近我想做的东西了,再加几个功能就完美了:
1. 兼容 ShadowSocks,可以当 VPN 用。
2. 支持解码插件,用户可以自己写解码插件,Packet Capture 只支持解码 HTTP 协议,并且 gzip 都不能解码。
3. 支持按 App 设置规则,可以当防火墙用。
AsisA
2017-05-10 18:44:40 +08:00
@wuhx Packet Capture 支持 https,安装它的证书即可
taowen
2017-05-11 09:46:43 +08:00
精神可歌可泣。居然手撸 TCP/IP 状态机。
wuhx
2017-05-11 10:03:00 +08:00
@taowen 是的,借机重新翻了一遍《 TCP/IP 详解》,也算很有收获

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/360413

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX