Nios34 的博客

我支持自由软件运动、世界版权自由与网络中立活动!

首页 | PGP 密钥 | 关于


文章归档: June 2021 March 2021 February 2021

逃离中国的数字利维坦

nios34于 February 21, 2021 发表在默认分类中。
《以诺书》中,利维坦是在上帝创造世界的第六天制造的两只怪物中的一只,她是混沌的巨龙,有说像巨蛇有说像鳄鱼,也有说是巨鲸的模样。 自英国哲学家霍布斯的名著《利维坦》问世以后,利维坦成为强势的国家(政府)的代名词。

为何?

比尔·盖茨曾说过:“你甚至不知道和你交流的对方是一条坐在电脑前会敲击键盘的狗。”。

这在 2021 年的现在是个伪命题。以中国举例,百度会精准的推送给你你喜欢玩和吃的狗狗玩具和狗粮。QQ 和微信时时监控着你的位置和你的好朋友。支付宝也许会有你的人脸信息,路边的监控因此将你识别。当然,你在微信和支付宝的流水也不那么安全。总而言之,下面这张漫画很好的呈现了现状。

dog.small.jpg

“他们怎么知道我是狗”

当然,还有一些关于这些行为的消息。常见的我就不多说了,例如:手机 QQ 获取 IMEI、电脑微信存全凭截图、N 多应用读取剪切板这类的就不多说了。我们看些其它的:

-6dc98abc48b8a2e7.jpg

“当然,不止可以用来抓失足妇女,这样是可悲的。 ;-(”

据估计,中国是闭路监控安装数量最多的国家,同时也是人均最多的国家。海康威视的“黑科技”要揪出一个人也不难。再加之基站数据等信息,庞大的数据网将他的触手几乎伸向了我们每一个角落。所以说,逃离中国的数字利维坦是很重要的。

怎么办?

第一条(也是最重要的一条):尽量或者彻底使用现金支付。第三方的网络的支付通常会记录你的信息。

第二条:使用自由软件。如果你想免费使用专有软件并以自己的隐私为代价的话,就去用专有软件吧。

第三条:使用洋葱路由。也许你已经连一条底裤都不剩了,但这样别人不能鉴别你,你泄漏的信息也不会同这时的你联系起来。(btw,这个站点在 t0r 下的访问速度不错)

第四条:戴口罩。防止视频监控的也许有效的手段。不然,为什么反××要禁止带口罩。

第五条:尽量使用去中心化网络。使用诸如 Matrix(即时通讯)、BitTorrent(文件共享协议)的应用。

一些疑问

Q:你怕这些干啥?你又不犯罪。
A:可能你想的隐私和我想的不一样吧。

文章到这里结束。希望大家在监控下好好活着。 :-)

用小爱同学和树莓派控制任何东西的开关

nios34于 February 19, 2021 发表在默认分类中。
使用点灯科技的 Blinker 控制所有东西的开关。

这篇文章不包含任何技术内容,但它绝对可以让你达成标题所说的内容。

必要准备

你应该准备以下的东西:

  • 小爱音箱(这仅仅是因为我不喜欢 MIUI 的小爱同学)(可选)
  • 树莓派

其它的嘛,应该没了。或许你还需要一部手机。:-)

注册账户

要使用点灯科技的产品当然要注册了。对于我们来说,它的使用是免费的!

首先,前往 diandeng.tech,下载手机应用。打开应用后,界面中间靠右有个用户注册按钮,点它注册。

注册完成后,登录。这个部分完成了。

注册设备

登录后,你发现右上角有个加号,点它。点击独立设备,选择你想要的接入方法。具体选择如下:

如果你的树莓派插了网线,选 WiFi 接入。如果你的树莓派连了 WiFi,选 WiFi 接入。如果你的树莓派用的是蓝牙,选蓝牙接入。简单易懂。

服务商建议选择阿里云(你应该也没别的选择)。现在你应该有了一个 Secret Key,将它记下来。它大概长这样:d941525a5af8

到这里,你就应该已经注册了一个名为“新的设备”的设备。你最好把它的名字改掉,因为现在如果你要打开它需要说这句话:“打开新的设备”。奇怪极了。

安装库

安装 python3 和 pip,使用下面的命令:

apt install -y python3 python3-pip

然后拉下 Blinker 的 Python 库:

git clone https://github.com/blinker-iot/blinker-py.git

在你因为 Github 的垃圾速度砸碎你的树莓派之前,你可以先试试把命令里的 github.com 换成 hub.fastgit.org。我假设你现在已经进入了那个库的目录,运行下面的命令安装依赖:

pip3 install -r requirements.txt

在你因为 PyPI 的垃圾速度砸碎你的树莓派之前,你可以试试在命令中加上 -i https://pypi.tuna.tsinghua.edu.cn/simple。这个命令一般来说,应该不能一次就运行成功。耐心一点,从它的报错信息,找到缺少的对应 lib。然后使用 apt 安装它们。
现在你完成了最难的部分,来让我们安装这个库:

python3 setup.py install

到这里,你已经安装完了所有所需的库。

配置脚本

建立一个文件,将下面的代码扔进去:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from Blinker.Blinker import Blinker, BlinkerButton, BlinkerNumber, BlinkerMIOT
from Blinker.BlinkerConfig import *
from Blinker.BlinkerDebug import *
from time import sleep
import controller

auth = 'd941525a5af8'

BLINKER_DEBUG.debugAll()

Blinker.mode('BLINKER_WIFI')
Blinker.miotType('BLINKER_MIOT_OUTLET')
Blinker.begin(auth)

def miotPowerState(state):
    ''' '''

    if state == "true":
        controller.turnon()
    elif state == "false":
        controller.turnoff()

    BlinkerMIOT.powerState(state)
    BlinkerMIOT.print()

def miotQuery(query):
    pass

BlinkerMIOT.attachPowerState(miotPowerState)
BlinkerMIOT.attachQuery(miotQuery)

if __name__ == '__main__':

    while True:
        Blinker.run()
        sleep(1)

聪明的你,应该留意到了 auth 变量需要修改。将它换成你的 Secret Key。
然后在同一个目录下,建立一个包含 turnon 函数和 turnoff 函数的文件名为 controller.py 文件。
turnon 和 turnoff 的作用想必不用多说。将你想让小爱同学调用的代码放进去。

运行脚本

python3 xxx.py

只要进程不退出,就说明没问题。

在米家导入那个设备

打开你的米家应用,点击“我的”。向下滑,应该能看到“其他平台设备”,进入。点击“添加”,找到“点灯科技”,登录你的帐号。
点击“点灯科技”的选项(或者也许你已经在里面了),你应该能看到你的设备名。如果没有,同步设备。

大功告成

如果你没有修改它的默认名字,你现在应该可以通过说“打开新的设备”来调用 turnon 函数了(反之亦然)。如果你把设备名修改成火狐浏览器,那就说“打开火狐浏览器”(这部分的源代码放在下面了)。

这是一个有用的例子

import os

def turnon():
    # 因为我使用 nios34 这个用户名登录,并以 root 权限运行脚本(这是必须的)。
    # 所以 firefox 这个命令以我的身份执行。
    os.system("sudo -u nios34 firefox")

def turnoff():
    # 鲨疯辽。
    os.system("sudo -u nios34 pkill firefox")

扩展链接

家用宽带搭建 Postfix&Dovecot 邮件服务器

nios34于 February 17, 2021 发表在默认分类中。
如果尝试过用 apt 安装 postfix 的朋友应该知道,里面的配置有:Internet Site、Internet with smarthost、Satellite system 和 Local only 五种。那么既然已经有了公网 IP,我们就折腾一下 Postfix 的 Internet 模式吧!

一个邮件服务器可以保护你的信件免受 ** 的监控,还方便进行备份。也可以用来接收家里服务器的日志,例如:Cron 会将脚本的运行结果邮寄到 root。并且我现在就在使用我的自建邮箱接受验证码(

在搭建自己的邮件服务器前,你需要一下几样东西:

  • 域名(作为邮件的域)
  • 一台家庭服务器(由于架设邮件服务器)
  • 一台 VPS(作为 Smarthost 代发邮件)(可选)

好的,让我们开始吧!

通信配置

找到你的 DNS 服务商,建立下面的解析:

@               MX         ddns.domain.name
ddns            A          XXX.XXX.XXX.XXX 

这里的名字并不重要,你可以将其替换成其他的。

进入路由,配置端口映射。主要涉及如下几个端口:

  • 25 TCP (SMTP)
  • 465/587 TCP (SMTPS)
  • 143 TCP (IMAP)

MTA - Postfix

MTA(全称 Mail Transfer Agent)是负责将邮件递送出去的应用。这里使用的实现为 Postfix。

先安装。在 Armbian 下使用这条命令:sudo apt install libsasl2-modules postfix -y。配置界面出现时,选择 Internet Site 或者 Internet with smarthost (如果有的话)。

打开 /etc/postfix/main.cf,编辑下面几个字段:

  • myhostname = ddns.domain.name
  • mydestination = ddns.domain.name, domain.name, localhost.linuxbabe.com, localhost
  • myorigin = domain.name

保存后,打开 /etc/postfix/master.cf,按如下说明编辑:

让其部分变成如下所示的样子(取消注释,增加东西)。

submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth

我们还需要加密对邮件服务器的请求,所以,配置 SSL/TLS。使用 Let's ENC 或者 IDC 提供的 SSL 证书安装。至于安装路径,检查 /etc/postfix/main.cf 这个文件。

其字段 smtpd_tls_cert_file 和 smtpd_tls_key_file 分别代表了要安装证书与密钥的位置。注意,这里使用 Nginx 格式的证书,即 crt 文件加 key 文件。、

安装好证书后,追加 smtpd_use_tls=yes 到 main.cf 文件。 Postfix 配置完成了。

MDA - Dovecot

MDA(全称 Mail Delivery Agent)是负责接受邮件和查看邮件的应用。这里使用的实现为 Dovecot。

安装 Dovecot:apt install dovecot-core dovecot-imapd -y

安装后,删除(备份一下也不错)配置文件 /etc/dovecot/dovecot.conf。然后新建,并加入如下内容:

disable_plaintext_auth = no
mail_privileged_group = mail
mail_location = mbox:~/mail:INBOX=/var/mail/%u
userdb {
    driver = passwd
}
passdb {
    args = %s
    driver = pam
}
protocols = " imap"

protocol imap {
    mail_plugins = " autocreate"
}
plugin {
    autocreate = Trash
    autocreate2 = Sent
    autosubscribe = Trash
    autosubscribe2 = Sent
}

protocol imap {
    mail_plugins = " autocreate"
}
plugin {
    autocreate = Trash
    autocreate2 = Sent
    autosubscribe = Trash
    autosubscribe2 = Sent
}

service auth {
    unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
    }
}

ssl=required
ssl_cert = </path/to/cert.crt
ssl_key = </path/to/cert.key

不要忘记修改证书的路径!

为了更方便的接收验证码(?),我们加上一些别名。打开 /etc/aliases,在后面插入类似这样的文本:

verify: nios34

这样,所有到 verify@domain.name 的邮件都会到 nios34@domain.name 去。使用这个命令,最后更新别名的数据,执行:newaliases

运行邮件服务

启动邮件服务,使用下面的命令:

service postfix restart
service dovecot restart

你或许想让它开机自启:

systemctl enable postfix
systemctl enable dovecot

It didn't work!

发现连不上是很正常的,因为我没有告诉你帐号密码 :-p。要创建一个邮件用户,和创建 Unix 用户是一样的。使用 adduser 或者 useradd 就可以了。

如果出现登陆不了的情况,请进行手动设置。例如,你的邮箱是 aaa@domain.name,你要确保登陆的用户名是 aaa 而非 aaa@domain.name

发现发不出邮件也是很正常的,因为你的 IP 在 spamhaus 的垃圾邮件数据库中。你需要访问 spamhaus.org 解封 IP。、

如果提示的是 DNS 错误,那么你就可以换 Smarthost 了。这说明对方邮件服务器需要检查 IP 的反向 DNS (PTR 记录)。而不管是中国电信、中国联通还是中国移动,都没有那种东西。

It works!

这个简单又没卵用的教程就到这里结束了。:-)
演示

重新部署整个玩客云并安装甜糖

nios34于 February 16, 2021 发表在技术博文中。
前情提要:今早,未知狐(看到他的友链了吗,就在下面,点它)给我介绍了个能用闲置流量赚钱的软件——甜糖。我当然是直接冲冲冲。我找到了一个玩客云的一键安装脚本。图方便,我直接跑了起来。在脚本的自动重启结束后,ssh 没了。

重装 Armbian

其实这么做的原因不止有系统炸了,主要还是其他人折腾过这个系统(往上面装 docker 和 k8s 是真的 NB)。

第一步,当然是拆机。用尖锐一点的物品抵住 SD 卡插槽,然后把外面一层塑料膜翘出来。然后,你会看到一片面板上有 6 个螺丝。将它们拧下来放好。

第二步,刷机前的准备。现在,面板已经被拆除。我们可以看到里面的主板。将主板直接拔出,然后将一跟 USB 2.0 公对公连接线(没有的话,拿两根数据线剪开然后同颜色的线拧一起)插入靠近 HDMI 接口的 USB 口。

第三步,刷机。短接主板上的针脚,电脑刷机。(技术细节:知乎

大功告成!

挂载文件系统

玩客云自带的几个 G 肯定是不够用的。我们需要挂载更多!这里我的玩客云接上了:一个 32 GB U盘、一个 120 GB 硬盘盒和一张 16 GB TF卡。我决定使用 systemd 自动完成它们的挂载。我之所以不用 fstab,是因为 systemd 在挂载失败后还会继续启动而 fstab 如果出错只会进入单用户模式。那时,我会再次面对之前的处境。文件的内容很简单,格式和下面的相同。

[Unit]
Description = Here is your description.

[Mount]
What = /dev/sdXX
Where = /path/to/mountpoint
Type = ext4                   # Or whatever.
Options = defaults            # Or you place something intersting here.

[Install]
WantedBy = local-fs.target

要注意的是,如果你的挂载点是 /path/to/point,那你的配置文件名称应该为 path-to-point.mount。而且,软链接不会起作用!其它的挂载点同理,据说当路径里有 - 时,你需要把它改成 _。写完以后,保存到 /etc/systemd/system 下。下面是操作的方法:

$ systemctl start path-to-point.mount # 挂载文件系统 VICE VERSA

$ systemctl enable path-to-point.mount# 开机自动装载 VICE VERSA

$ systemctl status path-to-point.mount# 查看挂载情况

陆续写好了 TF 卡、硬盘和 U 盘的配置文件,另一个问题接踵而至——挂载失败。 dmesg 告诉我 Unrecognised features on journal。这是因为这个 ext4 系统是在高版本建立的,它具有我这个版本不具备的新特性。解决方法很简单,即干掉那个特性。

# e2fsck /dev/sda1

# tune2fs -O ^has_journal /dev/sda1

直接秒杀,问题解决。

部署 Cloudflare DDNS

这里 DDNS 直接使用 Gayhub 上的脚本。链接如下:https://github.com/yulewang/cloudflare-api-v4-ddns/。在 Cloudflare 上抄下自己的 Global API Token 然后将其填入 ShellScript就完事了。我想让它每小时检查一次 IP 变化,所以我在 crontab -e 中追加 0 * * * * /path/to/abc.sh

不同介质间备份

这里我也使用了上一节的定时任务,同步的命令是 rsync -ax --delete /path/to/data /path/to/backupfolder。其基本上与 rm -rf /path/to/backupfolder/data && cp -rf /path/to/data /path/to/backupfolder/data 等价,只不过更省时间就是了。

匿名 FTP 服务器

这里就略了,老一套没意思。地址是:http://home.050821.xyz:8448/。欢迎大家来下载资源(那种的没有 :-p)。

甜糖

部署甜糖,我也要使用 systemd。这样能更方便的监控其运作。建立一个叫做 tiantang.service 的文件,内容同下:

[Unit]
Description = Put your description here.

[Service]
Type = forking
ExecStart = /path/to/ttnode_172 -p /path/to/cachefolder

[Install]
WantedBy = multi-user.target

写完以后,同样地,扔到 /etc/systemd/system 去。操作方式也和 mount 一样,只不过去掉后缀。比如:systemctl start tiantang

似乎镜像中 eth0 的 MAC 地址是一样的,所以为了避免你的流量为别人做工。在第一次运行时,安装并使用这个命令 macchanger -r eth0。它会暂时改变你的 MAC 地址直至下一次重启,这是避免重复的好办法。

当然如果你已经启动过一次,那就请先删掉 /path/to/.yfnode 这个文件夹。随后的运行会初始化一个新的 ID 给你。

到这里,我的玩客云的部署已经完成了。最后上一张我配置目录的结构。 :-)

2021-02-16 22-43-13.png

最新文章

文章分类

友情链接