DNS 配置

GFW真是太不要脸了,现在给google来了个中间人攻击,把他的证书替换了,真是吊的飞起。现在就算用dnscrypt也没有用了。因为GFW没有阻止ip,直接就是攻击。CTMD。不过我偶然发现只要DNS不是解析到中国的就不会遭受中间人攻击。因为CDN的关系,DNS可以根据客户端ip来解析对应的服务器ip。我如果解析到美国的google ip就不会被中间人攻击。当然,全局的转发也是可以的,比如socks,但速度还是有区别的。

注意:这里说的都是在教育网,没有在其他网络尝试。

unbound + dnscrypt + opendns

opendns的ip是208.67.222.222,208.67.220.220 {443, 53, 5353},支持加密传输。这在之前dnscryptunbound已经讨论过。但这种方法已经不适合。因为他会解析到google对应东南亚的ip。

ssh tunnel + nc

这个是比较蛋疼,也比较复杂。我也没有试过,总体来说,先建立ssh本地转发tunnel,然后用nc将udp转为tcp,经ssh tunnel转发。那么解析的ip就不一样了。具体看链接

ssh tunnel + unbound

我认为这是最合适的方法。先要启用unbound tcp-upstream,并设置forward-zone。我的unbound.conf文件见文末。然后启用ssh tunnel:  ssh -L 9053:8.8.8.8:53 server-ip  。最后是修改resolv.conf文件。只要改为 nameserver 127.0.0.1 ,一切ok,测试结果见文末。

ssh reverse tunnel + unbound

这个也行,原理跟上面类似,但这里用的是ssh reverse tunnel。比如  ssh -R 9053:8.8.8.8:53 user@china-host 。这个命令要在国外主机运行,他的意思是连接到china-host,并将通过china-host:9053的流量,经过国外主机(本主机)转发到8.8.8.8:53。有点小复杂。原理是一样的,也是能跑起来的。

测试结果

链接

  1. unbound conf
  2. udp to tcp
  3. ssh port forwarding

 

Android Root 原理

题外话:最近确实很闲,因此想要升级nexus 7了。可是安装了twrp recovery之后,OTA升级总是不成功,出现error: has unexpected content。前面也讲过怎么擦除后升级。 也可以只擦除system和boot分区,这样不会影响数据。但总这样不是办法,网上说用Philz Touch Recovery,感觉还是不靠谱,索性就换了个cyanogenmod(CM)的ROM。感觉很OK!接下去就了解了一下root的原理。

Root原理

android约等于linux。这就导致android对root的处理方式也类似与linux。看他的su源文件。截取如下:

就是说只有ROOT用户和SHELL用户(adb shell)可以获得root权限,之后启动setuid的shell。这不是坑爹吗。所以我们要改的话要把下面的条件去掉,然后编译。 (怎么编译后面讲) 其实这只对4.3以前的android有效,现在android增加安全方面的考虑,禁止setuid了。而现在的root方式比较复杂,可以看superuser的源代码。

编译su

有人就喜欢动手尝试,我也是。编译这个需要懂交叉编译。有点麻烦,而且编译出来的是静态的,先不管。所以直接使用NDK,Superuser也是采用这种方法。其实可以编译任意c代码。写个helloworld就行了。

替换su

既然su可以用shell运行,那连上电脑不就行了。但是无论是adb shell还是adb root都不行,adbd cannot run as root in production builds,这有点蛋疼。简单方法果然不行,所以还是要用recovery,怎么刷recover,就不提了。我用的是TWRP,总感觉比CWR好用。然后方法就多了,可以先把su复制到普通文件夹,然后在TWRP中移动到/system/xbin。或者直接adb sideload,这个方法要写edify脚本,见链接。

SuperUser

实际上root复杂的多,像SuperUser要对能获取root权限的app进行管理,否则肯定会悲剧。参照源码,可以得到如下流程图(来自http://www.imooc.com/video/2570)。

superuser

编译android

还是闲的蛋疼,所以试着编译android。可是主页上说要16G内存才行,我加上swap才8G。不管先试。tmd,编译了4个多小时,还是没编出来。观察编译过程,主要是chromium在编译,最后内存飙到7G,我也顶不住了,就放弃了。看个内存跳舞的图。android也快出x64的了,详见01.org

memory-building

链接

  1. Edify script language,  Make Flash Zip
  2. android su source code,  superuser su,  linux susuperuser
  3. building
  4. imooc

Tor与暗网

今天chromium更新了。intel驱动能用了,可是字体渲染又一坨屎了。将就着用吧。

前几天在知乎上看到有人问什么是暗网。我也不知道。看了下面人的回答,发现这是个值得一去的地方。暗网就是Deep Web。原以为暗网就是搜索引擎搜索不到,或者不让搜索引擎搜索的网站。后来才发现,这是特指,只能通过tor连接,并以.onion结尾的域名的匿名网站。总之就是,只能通过tor接触这些网站。还有continental contents,以一张图来说明他们的关系。但是经过我一天的查看,我没有意识到Deep Web的规模。先说如何接触这些网站吧。

deep-web-links
from: web

Tor准备:

之前的文章已经讲过。那时很年轻,现在也是,完全没有意识到Tor底下的事情。现在假定已经能连接Tor网络。

Tor DNS:

光有tor网络还不行,DNS也必须是从Tor网络走的。根据描述,可以使用Tor网络解析域名。而根据FAQ,.onion的域名是没有ip的,不需要解析。所以DNS不从Tor走的话,浏览器会直接出错。因此根据指示,我们要转发DNS请求。在torrc里添加:

然后根据unbound之前也说过。 只要把40的转发端口改成9053就行了。然后要做的就是在浏览器内开启switchsharp,并且配置为socks v5。就可以找.onion的入口地址玩玩了。而且有了tor dns,就不怕dns-encrypt被封了。

Tor Browser:

其实安全的还是用官方的浏览器。反正我后来照做了。也不用设置DNS,比较方便。直接用就行了。而且android上也有。

吓尿:

里面的内容我见到的不是很多。但是也有点不舒服。阴暗面比较多(学到了很多这种类型的单词),但是也有正面的。里面还有电子书网站。。虽然我根本不敢下载,谁知道有没有病毒。我觉得我以后都不想再上这些网站了。但感觉这个搜索网站还可以。http://3g2upl4pq6kufc4m.onion/

最后是一张证据图。hiddenwiki

链接:

  1. Guide to Tor hidden network
  2. The hidden wiki
  3. How do I access hidden services?