Tor 匿名网络

Tor (The Onion Router) 是第二代洋葱网络的实现。Tor可以实现匿名上网,也就是说查不到你的ip。为何查不到,这个原理我还没有深入了解,简单的说就是你的数据经过不同的relay到达“随机”的出口,然后出口ip就成了你访问的ip,外界了解不了内部的网络情况。那么Tor是怎么实现包的发送和接收呢? 根据我目前的理解,Tor首先建立circuit,跟目前的网络协议不一样,Tor是有连接的,就像打电话一样,要先拨号。

直接从源安装是可以的。

下面就介绍如何配置客户端的obfsproxy。网上很多讲的都是服务器端的,容易造成误解。

在中国,Tor需要使用bridges,而且不能是普通的bridges,要obfs2或obfs3的,混淆过的bridge,这样墙就检测不出你用的是Tor了。为什么不让用Tor,相信你懂的。找bridge查看官网有2种方法。一是直接登录BridgeDB,一步步操作即可,那验证码真是太坑了。记得使用加强版bridge。二是发邮件给bridges@bridges.torproject.org,主题为transport obfs2,正文为空,对方就会发给你3个地址。(坑爹的是,我试的那天正好服务器维护,我试了半天没有获取地址,那个网站也上不去,还以为是我网络有问题。)

有了obfs的bridge后.

  1. 安装obfsproxy,是python模块,所以使用pip install obfsproxy,即可
  2. vim .vidalia/torrc,加入以下的 ClientTransportPlugin obfs2,obfs3 exec /usr/bin/obfsproxy --managed 路径可能有所不同。
  3. 打开vidalia, 点击setting,Advance设置控制端口密码。Network勾选My ISP block,填入获得的bridge,不要忘记obfs。如下所示。

cpu13

 

配置之后,就可以启动tor了。看到下面的场景,都要哭了。

cpu11

 

chrome使用switchsharp设置代理端口为默认的9050即可实现代理,网速还可以。

Tor的安卓版本名为Orbot,直接play中可以下载,没有root的话,需要下载专门的浏览器,Orbot会自动推荐。已经root的话就方便了,可以全局代理,但是也不安全。这个Tor的对于主机的安全问题现在我还不是很清楚,以后再讲。android同样要配置bridge,操作与pc一样。下面是成功界面,速度也还可以。

Screenshot_2014-03-03-20-31-36 Screenshot_2014-03-03-20-31-04

 遇到的问题:

首先看看Tor在linux上的使用。由于openssl版本不对,我从源安装的Tor没法用。出现以下log:

所以我还尝试了自己编译,发现问题不在这里。好吧,我傻逼了,试了alpha和stable的都不能成功连接,以为是openssl不兼容,其实是我自己没有配置好obfsproxy,使用obfs的时候,没有在ip地址前加obfs2,而且没有加ClientTransportPlugin,所以跪了。

Nexus 7 手动更新4.4 和安装MultiROM

保留用户数据的更新

google下载Factory Images,解压之后看看里面的shell脚本写了什么,然后不要flash分区userdata就行了。如

recovery我用的是TWRP所以就下载TWRP的更新。

然后root


如果你想完全擦除,更新,就这么来。

注意,以下操作会格式化你的设备,请谨慎操作,备份数据。

由于要更新到Android 4.4 KitKat,但是没有收到OTA,因为我本来就有安装MultiROM,所以有可能因此检查到的更新都是4.3. 但是我已经更新到4.3了啊。好吧,先不管他,手动升级MultiROM和Android好了。

在此之前,先说明一下android的分区,参考Android Partitions。共有两部分(有可能存在误区):

  • internal memory partition
    • /boot
    •     启动分区,跟普通linux的boot差不多,里面是linux压缩的内核。小心操作,变成砖就不好了。
    • /system
    •     系统分区,放android整个系统。还有系统应用,和预先按照的应用。刷了这个分区完全不要紧,有recovery和boot在,再刷个ROM就行了。
    • /recovery
    •     如其名,“恢复”,具体介绍。官方的recovery基本没用。所以刷recovery才是真正应该做的事,他能提供很多底层的操作。感觉最好的还是 TWRP
    • /data
    •     数据分区。安装的app,设置什么的。恢复原厂设置就是格了这个分区。
    • /cache
    •     缓存。放一些经常使用的文件数据,刷了他会自动恢复。
    • /misc
    •     这里面好像比较重要,涉及硬件比如USB的配置,反正不会用到,不动就是了。
  • sdcard
    • /sdcard
    •     这个应该是最熟悉的,是我们唯一能看到的。放视频啊什么的。备份这个大概就能保留你想要保留的东西了。

 

因为直接升级4.4,没搞定而改变了策略,打算全部格了重来. 所以我直接下载了Factory Image.然后整个格了重装了.如果不想格式化,可以直接尝试 nexus 7 wifi OTA,然后用 adb sideload. 反正我是失败了. 完全重新安装,正好瘦瘦身,而且google自己有备份,应用会自动安装回来.所以不怕了.这次我操作的设计 /data /boot /system /recovery。

下载4.4文件:Google  Factory Image

这里注意啊,分清mobile 和 wifi 简直就是坑爹.  我是完全重新安装,大部分都被我格式化了.当然还必需有adb,准备完毕后。

原厂文件刷入ok了.就能进入展现的android界面.

接下去就是刷recovery 和 安装MultiROM.

首先参考 xda MultiROM,下载3样东西:

  1. MultiROM
  2. Modified recovery (TWRP 2.6.3.0)
  3. Kernel w/ kexec-hardboot patch (stock 4.4)

其实MultiRom可以不下载,直接去APP store 下载一个app, 这样还可以更新,更加方便.

刷ROM什么的都要enable debug,如果连上电脑adb devices还是没有反映,就试试下面的命令.其中idVendor可以用dmesg看到.18d1是Nexus 7 的.

接下去就是正式刷Recovery. 用的是TWRP,我觉得比CWR更好用.

重启把 MultiROM的zip文件放到根目录下,然后重启在TWRP中安装即可.

还要root:

 

GNURadio 安装与起步

      GNURadio就是软件定义无线电,在无线电爱好者和学术方面都有很高的人气。与GNURadio配合使用的就是USRP。USRP有很多厂家生产,有虚拟仪器的,有ettus research的,有一个显而易见的共同点就是都很贵,都1万左右,我们学生是玩不起的,还好学校导师在进行这方面的研究,于是我也有资源来学习真实硬件的使用,而不只是在GNURadio软件平台上应用。不是说软件仿真不重要,如果软件仿真都失败了,肯定原理上存在问题,而软件仿真成功也不意味着硬件就行,硬件和软件还是有很大差别的。

       那首先需要安装GNURadio,注意只有Linux平台才行。按照 GNURadio的主页 就可以进行安装,但我1年前就走了很多弯路,所以必须写清楚。我这里说的都是从源码编译。

☘   如果有硬件,必须先安装uhd(USRP Hardware Driver)。参见wiki
首先解决依赖关系。ubuntu只要运行下面的命令即可,其他linux也相应安装这些包。

uhd安装完成后就可以接下去,安装GNURadio.有时这个lib不再ldconfig的路径,那么就需要把uhd的安装目录加入到ld.so.conf或者ld.so.conf.d,如下(因系统而异):

☘   安装GNURadio。首先也要解决依赖关系,参考build guideubuntu build。ubuntu12.04的话,输入下面命令即可。

然后下载源码,不要告诉我找不到。解压之后,cd到解压后的目录。

编译大概20分钟,到这里应该就安装成功了,然后启动试试。

☘   启动 $ gnuradio-companion
一般会跳出来path什么的,没事只要在.bashrc(shell的配置文件)中加入:

就好了,也有可能不太一样,但原理是一样的,具体的PATH可以自己找。再次运行,就会出现图形界面,初学者都是从这开始的。

GNURadio_main

运行成功后就可以自己摸索了。
这里有几个小问题:

1. 有时跳出 Unable to set the thread priority. 这时就在/etc/security/limits.conf加入@username – rtprio 50,username是你的登录名。

2.有时出现mem warning什么的。那么在 /etc/sysctl.conf 加入:
net.core.rmem_max=50000000
net.core.wmem_max=1048576

3.与USRP2通信是靠以太网的,所以需要配置ip。
address: 192.168.10.1
netmask: 255.255.255.0
gateway: 192.168.0.1

设置方法有很多,最方便的就是在上网那里新建连接,把参数输进去。