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

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

dnscrypt 安全的dns

可以说DNS是整个Internet中,最薄弱的部分(虽然其他某些部分也不安全)。因为这个dns是UDP的,可以随便被修改,这样就会让你上冒牌网站了。想想就吓尿了。这也被我们伟大的墙利用了,当然这只是小手段。最近(2014.2.14)左右,youtube可以“直接”上了。瞬间让我看到了希望。习大大果然不同凡响。

为什么说是“直接”上呢?因为墙降低了手段,只用了DNS污染,只要DNS正确就能上youtube。这就方便多了,网速也很快。虽然我不怎么上youtube,但这是一种自由的象征。

不仅如此,如果你遭受了ARP攻击,而采用下面的DNS查询方式可以免于被DNS污染。可见安全的DNS是非常重要的,当然也是非常有意思的。

DNSCrypt 是由来已久的,目前有很多“free, DNSCrypt-enabled resolvers”,像opendns(我就用过这个,感觉很可以,所以就一直用着了。我就担心这些dns被墙掉)。而只有服务器也不行啊,需要工具与服务器交流。我使用的是dnscrypt-proxy。公开源码,可以自己编译。arch直接安装就好了。

完成以上这几个步骤,可以打开测试地址,默认的dns解析服务器是opendns的,配置文件是/etc/conf.d/dnscrypt-proxy,可以进行修改,具体man dnscrypt-proxy。

如果测试成功,就可以进行下一步,不行的话也试试下一步再重启。

光有DNSCrypt还不是完美的,因为他没有cache,每次有query他都会重新访问OpenDNS。这样效率就低了,可以看看有cache和没有cache的区别。

没有cache:

cpu8

有cache:

cpu9

我是用unbound解决这个问题的,当然还有代替工具powerdns这样的,但是用不来。

修改/usr/lib/systemd/system/dnscrypt-proxy.service, port 40。或者修改/etc/conf.d/dnscrypt-proxy,里面的DNSCRYPT_LOCALPORT=40。

准备完毕,可以开机启动服务。

最好重启一下。

最后有个问题,就是这里的53端口被监听了,我就不能建ap了,这个还不知道原理,以后再思考一下怎么解决。

链接:

gnupg(gpg) 加密文件

GnuPG是opengpg的开源实现,用来加密数据和验证签名。 集成很多密码协议,使用也比较简单。

首先来个开胃小菜:这是使用手动输入密码的AES对称加密协议来加密test.txt文件,默认输出为test.txt.gpg, 使用 -armor后可以让加密数据转化为ascii文本,便于传输。

接下去是正式gpg用法。具体可以 man gpg。

生成密钥:

会询问key的类型,长度等等,还有id和email一 一写上去。这里会要求输入passphrase,一定要注意安全。这个passphrase是整个系统中最薄弱的部分,man里也这样提到了,因为这个可以被brute crack。最后会提示多动动键盘什么的,估计要3分钟左右,这不是死机,实在产生足够随机的伪随机数。所以要多动键盘,运行一下其他任务什么的,如果不这样做,等待的时间更长。

使用下面的命令,就可以把key转换成ascii,可以email给好友,让他发加密的文件给你,增加安全性。或者直接把key上传到服务器,让其他人都能找到你的key。不要怀疑安全性。

 

有了key就可以加密解密了。有很多地方需要使用密码,密码不能太简单,也不能重复,忘记了就麻烦了,所以最好是记下来,记到哪呢? 我的做法是这样的。记到文件里,然后使用pgp加密,然后传到网盘啊什么地方的备份一下,要更新密码时再解密再加密。虽然效率低,但安全。如果你觉得密码单一不是问题的话,我可以给你看几个被拖库的数据库,看看你在不在里面。

key管理,可以直接使用gpg –edit-key user_id. 进入控制台后,有addkey delkey等命令,不详细说了,直接help就好了,别忘了save,否则什么有不会改变。下面是各个key后面字母的含义。

参考:

    1. 手动输入密码对称加密
    2. 什么是subkey
    3. 快速入门
    4. digital ocean 在vps上使用gnupg
    5. 增加熵
    6. archlinux GnuPG
    7. 字母含义
    8. 不错的指导
    9. 补充