前一阵子突然对网络安全和数据传输这方面有了点兴趣,加上朋友介绍了新的CrossWall的工具,便也想自己做个小工具试试看。
因为我觉得如果只是简单的使用工具,而不去深入理解原理,作为一个程序员就不会有进步。
这里只是分享一下我的思路和简单的例子,并没有使用复杂的数据加密和协议(像SSR)。
但仍然需要购买海外服务器,具体哪个我就不介绍了,只要海外的都行。
一. 思路:
原理其实很简单,
①通过代理服务器拦截所有的本地Http和Https请求
②通过Sockets接收到请求后,截取请求头并加密(为了不让防火墙拦截),将加密后的请求头再拼回原请求,并发送到海外的服务器
③海外服务器接收到加密后的请求后,对header解密,并将请求发送到对应的目标服务器(如Google)
④将目标服务器返回的数据流加密后返回给本机
⑤将海外服务器返回的数据解密后返回给浏览器
第④⑤步加密解密我并没有做,因为我只是通过将header加密解密就通过了防火墙。
由此可见,防火墙似乎并没有对数据本身做Check,只是校验了Header。
这也可以理解,因为返回的数据本身是很难验证的,而且现在网络那么发达,如果对每一条请求做太多的验证会影响整个互联网的访问速度,防火墙服务器的处理压力也会变得很大。
防火墙能封国外IP还是因为它不仅能拦截,还能主动探测端口,这个就不在这里讨论了。
另外,我对Header的加密,也只是简单的将字节加了1位而已,毕竟加密不是这里讨论的重点。
二. 本机Client端:
2.1. 目录结构:
2.2. Client.java:
定义了客户端的启动界面,可以设置海外服务器的IP和Port。
2.3. Register.java:
通过register.jar和ICE_JNIRegistry.dll修改注册表,设置代理服务器拦截Http和Https请求。
注意测试的时候和打成Jar包以后,static方法不太一样。
2.4. Proxy.java:
代理服务器的修改方法类
2.5. ClientProxy.java:
将客户端发送过来的数据转发海外服务器,并将海外服务器返回的数据转发给客户端。
2.6. HttpHeaderClient.java
客户端解析头部
2.7. codeUtils.java
加密解密类
三. 海外服务器Server端:
3.1. Server.java
海外服务器的Socket启动程序
3.2. ServerProxy.java
海外服务器的数据处理
3.3. HttpHeaderServer.java
海外服务器的头部处理
3.4. pom.xml
3.5. 其他:
将register.jar和ICE_JNIRegistry.dll放在lib目录下(64位的Register注册表修改包网上自己搜吧)
四. 运行方法:
4.1.由于需要修改注册表,用到了lib下面的ICE_JNIRegistry.dll文件。
在Register.java里面的static方法中,有设置dll的路径。
要执行编译后的jar包就用上面那种方法,调试的时候可以用下面的。
4.2.我是通过IDEA中的Build Artifacts编译了两个Jar包
ssrClient.jar是在本机运行。
ssrServer.jar是在国外的服务器运行。
4.3.运行本机的ssrClient.jar:
(1)把ssrClient.jar和ICE_JNIRegistry.dll放在C:ssr目录下
(2)cmd中执行
(另外说一句,我这里的Password是一开始准备使用AES加密用的,现在没用到)
(3)界面中修改海外服务器的IP地址,点击StartProxy
(4)修改注册表中的代理服务器好像有延迟,如果不行,就手动在IE里面改代理服务器算了。
4.4.运行海外服务器的ssrServer.jar:
(1)环境CentOS+jdk1.8.0_172,配置文件/etc/profile修改好
(2)ssrServer.jar到/usr/local/ssr目录中(没有就自己建)
(3)执行
4.5.测试:
输入打开www.google.com:
本机的ssrClient显示如下:
海外服务器的ssrServer显示如下:
五. 资料:
Github代码:https://github.com/sunroyi/sunSocks
本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com
本文链接:http://www.dbeile.cn/news/389.html