在树莓派上实现人脸识别和身份鉴定

介绍

预计在不久后的将来,人脸识别和身份认证技术将在我们的日常生活中扮演一个非常重要的角色。这项技术为我们开辟了一个全新的世界,它几乎适用于我们生活的方方面面。面部识别/身份认证的使用案例包括安全系统、认证系统、个性化智能家居和家庭护理助理等。

我们将搭建什么?

本教程将帮助你建立一个可以训练 HARASCALDES 模型的树莓派,该模型可用于检测已识别的/未识别过的人,使用监控摄像头进行实时监控,并利用物联网 JumpWay 来发送传感和警告消息,进而允许你的设备利用其他物联网 JumpWay 网与其他设备进行通信。

本教程将利用 TechBubble Technologies 物联网 JumpWay Python MQTT 库进行通信,利用 OpenCV 实现计算机视觉,在本地端口上建造移动 Web 流和安全的 NGNX 服务器,以便可以安全地从外部访问视频流。

这个例子是我们最初的 TASS 版本,因为我们的进步依靠了很多更先进的计算机视觉库和框架,所以我们决定将代码进行开源。

Python 版本

2.7 版本
3.4 或更高版本

软件要求

1、Jessie

2、TechBubble IoT JumpWay Python MQTT Client

(https://github.com/TechBubbleTechnologies/

IoT-JumpWay-Python-MQTT-Clients)

3、Linux 驱动

4、Nginx

硬件要求

1、树莓派
2、Linux 兼容摄像头

准备工作

在开始之前,有几个教程你应该看一下,尤其是如果这是你第一次按照我们的树莓派教程,或者如果这是你第一次使 TekBaseIO-JavaWoW 开发程序。

如果这是你第一次在物联网项目中使用 TechBubble IoT JumpWay,在你创建 IOT 设备之前需要注册开发帐户,并在进行一些基本的设置。

访问下面的物联网 JumpWay 开发者使用文档(5-10 分钟阅读/设置 https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/),并查看引导来进行注册并设置你的位置、区域、设备和应用程序(大约 5 分钟)。

物联网 JumpWay 开发者程序文档

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/)

准备你的树莓派

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/1-Raspberry-Pi-Prep.md)

设置区域名字 & 树莓派的 SSL

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)

在你的树莓派上配置 OpenCV

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/2-Installing-OpenCV.md)

在你的树莓派上配置 Linux 驱动

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md)

在树莓派上为 Linux 驱动安装

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/6-Secure-Nginx-Server-For-Motion.md)

用 IPTables 确保树莓派的安全

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/4-Securing-Your-Raspberry-Pi-With-IPTables.md)

准备你的树莓派

花一些时间来确保你的树莓派的硬件和包都是最新的,并且确保你的准备过程严格按照树莓派 3 的教程文件(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/1-Raspberry-Pi-Prep.md),设备是安全的。

复制 Repo

你将需要将 echBubble IoT JumpWay (https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples)树莓派实例 Examples 示例库下载到你的树莓派上,并导航到你想下载的目录,以下命令是将其下载到主目录最简单的方式。

git clone https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples.git

安装要求

接下来,你需要将计算机视觉库导航到目录并按照要求进行安装,如果你已经将库复制到你的主目录上,那么这一部分的命令如下:

cd IoT-JumpWay-RPI-Examples/Computer-Vision/Python
pip install –upgrade pip
pip install -r requirements.txt

安装 OpenCV

OpenCV 需要遵循树莓派教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/2-Installing-OpenCV.md)进行安装,它是我们将使用的一种计算机视觉库。

安装 Linux 驱动

我们将使用 Linux 驱动把视频流传送到树莓派本地端口上,OpenCV 在这里连接到视频流并从中读取图像帧。

为了建立 Linux 驱动,遵循安装教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md)在你的树莓派教上安装 Linux 驱动。

这里有一些修改,在驱动安装教程的第 9 部分中,它告诉你如何修改媒体的保存目录,在本教程中,你应该将这些设置更改为:

/home/YOURUSERNAME/IoT-JumpWay-RPI-Examples/Computer-Vision/Python/media

不要忘记注意第 10 部分中关于关闭图像保存来节省磁盘空间的问题。

设置域名和 SSL

我们希望我们提供的教程可以确保帮助人们学会创建安全的项目。为了使视频流安全工作,你需要设置指向你的树莓派域名,你也需要设置 SSL 证书来确保用于视频流的服务器是安全的。

树莓派域名和 SSL 设置教程会向你详细解释如何做到这一点,如果有疑问,你可以让你的注册员或主机来协助你。

(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)

如果你将这个存储库复制到你的主目录中,你需要使用如下的 CSR 和密钥生成的路径:

/etc/nginx/key.key
/etc/nginx/csr.csr

一旦你从证书颁发机构收到你的签名 crt.crt 和 ca.crt 文件,你需要将它们上传到:

/etc/nginx/ca.crt
/etc/nginx/crt.crt

为 Linux 驱动安装安全的 NGINX 服务器

我们将使用 NGNIX 作为我们的服务器解决方案,并在 Qualys-SSL 实验室 SSL 报告中将其设置为 A 级+ SSL 等级。

为了做到这一点,我们提供了一个可以在 RasBuriPi 上的 Linux 驱动上安装 NGINX 服务器的指南(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/6-Secure-Nginx-Server-For-Motion.md)。

在开始这一步之前,你需要在你的树莓派上安装 Linux 驱动(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md),并为你的树莓派设置域名和 SSL(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)。

用 Iptables 保证树莓派的安全

下一个你应该采取的安全步骤是设置 Iptable。遵循 Securing Your Raspberry Pi With IPTables 文件(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/4-Securing-Your-Raspberry-Pi-With-IPTables.md)来实现这一点。

视频流

如果你遵循了以上步骤,如果它们还没有运行,你需要按照下面的步骤操作。

sudo service motion start

sudo /etc/init.d/motion start

启动 NGINX

sudo service nginx start

sudo /etc/init.d/nginx start

重要的是:这种流式传输是一个新的特性,我们仍然在消除一些扭结,如果你想让 OpenCV 直接访问网络摄像头,而不需要驱动/NGNIX 流,那么在 TASS.py 重取消注释 43 行,注释 44 行和 45 行。

连接证书和传感设置

下一步是在互联网 JumpWay 开发者控制台中安装设备实例。遵循 IoT JumpWay Location Device Doc (https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/blob/master/4-Location-Devices.md)来设置你的设备。你将需要设置一个有闭路监控的设备,并且添加了传感器/执行器部分。

检索你的连接证书并用新的连接证书和相机 ID 设置更新配置文件 JSON 文件(你需要在创建它之后进入设备页面以获得正确的摄像头 ID)。

“IoTJumpWaySettings”: {
“SystemLocation”: 0,
“SystemZone”: 0,
“SystemDeviceID”: 0,
“SystemDeviceName” : “Your Device Name”,
“SystemCameraID”:0
}
“IoTJumpWayMQTTSettings”: {
“username”: “Your MQTT Username”,
“password”: “Your MQTT Password”
}

训练你的数据

现在基本构架已经搭建好,是时候用你自己的照片训练你的模型了。当你下载这个 RPO 时,在那个被处理的文件夹中已经有一个经过训练的模型和被处理的图像,但是这个模型不会识别你。你需要选择自己在不同的位置和灯光下的照片。你训练模型的照片越多,它就越精确,如果你的设备没有识别你,你只需要用更多的图像来训练它。

你可以添加你喜欢的图片(这取决于你的树莓派 3 可用的空间),有很多像你这样人。为了将训练数据导航到训练文件夹中并创建目录,目录应该是一个数字,而且不是那个已处理文件夹中的数字。

一旦你建立了图像的文件夹,进入 Tas.Py 文件改变第 34 行(self.train = 0)为 self.train = 1,并启动程序。程序将循环检测你的图像,如果它检测到脸部,它将以模型所需的格式重新创建一个图像,将其保存到匹配文件夹处理后的目录中中,并删除原始图像以节省空间。如果它没有检测到面部,它将简单地删除原始图像,因为它是无效的面部识别。

一旦处理阶段完成,你的新模型将自动开始训练,训练完成后,它将自动运行主面部识别程序。把你的脸放在你连接的摄像头前面,看着程序的输出你是谁。

注意:从处理目录中删除 read me 文件。

执行程序

sudo python/python3 TASS.py

自主物联网通信

当你的设备每次检测到一个人时,设备会把传感器数据传送到 TechBubble IoT JumpWay(https://iot.techbubbletechnologies.com/),当运动传感器检测到入侵者时会发出警报。你可以使用传感器值和警告消息与连接到 IoT JumpWay Location 的其他设备实现自主通信。

在「设备编辑」页面上,向下滚动到「执行器/传感器」下的「创建规则」部分。你可以在这里利用下拉菜单创建规则,允许你的设备发电子邮件给你,或者在状态更新、传感器数据和警告的情况下自主地与其网络上的其他设备进行通信。

查看数据

每次你的设备检测到一个人或一个入侵者,它将发送数据到 TechBubble IoT JumpWay。你将能够访问 TechBubble IoT JumpWay 开发区中的数据(https://iot.techbubbletechnologies.com/developers/dashboard/)。

一旦登录到开发区,访问 TechBubble IoT JumpWay Location Devices Page 页面(https://iot.techbubbletechnologies.com/developers/location-devices),找到你的设备,然后访问传感器/执行器页和警告页,查看从你的设备发送的数据。物联网 JumpWay 树莓派计算机视觉实例缺陷/问题

当你在运行物联网 JumpWay 树莓派计算机视觉实例遇到困难时请保持一种释然,当你遇到麻烦时你也可以在提问区寻求帮助。

物联网 JumpWay 树莓派实例贡献者

TechBubble 科技公司创始人:Adam Milton Barker(https://github.com/AdamMiltonBarker)
TechBubble Technologies Dev 公司:Andrej Petelin(https://github.com/AndrejPetelin)
原文链接:https://www.hackster.io/AdamMiltonBarker/facial-recognition-identification-on-raspberry-pi-1c7495
转自雷锋网:https://club.leiphone.com/page/TextTranslation/624

树莓派常用工具

树莓派官方系统 Raspbian(lite版和桌面版注意分清):

下载地址:https://www.raspberrypi.org/downloads/raspbian/

默认帐号:Username: pi Password: raspberry

镜像烧录工具 Win32diskimager(用来将镜像文件写入 MicroSD 卡):

下载地址:https://sourceforge.net/projects/win32diskimager/files/latest/download

SSH客户端 Putty(远程连入树莓派命令行操作工具):

下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

WinSCP客户端(远程传输文件到树莓派的工具):

下载地址:https://winscp.net/eng/download.php

SD卡格式化工具:

下载地址:https://www.sdcard.org/downloads/formatter_4/

 

 

Raspbian 中国软件源(2018.7.13版)

使用树莓派 Raspbian 系统的中国用户,通常会遇到从官方站更新和安装软件时候速度比较慢的问题,IoT前哨站整理了一些东亚地区速度比较快的软件源供大家使用(如果有不能用的可通知我们剔除,有新的可信的也可以让我们加进去)。

相关镜像站:

浙江大学
http://mirrors.zju.edu.cn/raspbian/raspbian/

中国科学技术大学
http://mirrors.ustc.edu.cn/raspbian/raspbian/

阿里云
http://mirrors.aliyun.com/raspbian/raspbian/

清华大学
http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/

华南农业大学(华南用户)
http://mirrors.scau.edu.cn/raspbian/

大连东软信息学院源(北方用户)
http://mirrors.neusoft.edu.cn/raspbian/raspbian/

重庆大学源(中西部用户)
http://mirrors.cqu.edu.cn/raspbian/raspbian/

新加坡国立大学
http://mirror.nus.edu.sg/raspbian/raspbian

韩国KAIST大学
http://ftp.kaist.ac.kr/raspbian/raspbian/

使用方式:

编辑/etc/apt/sources.list 文件,参考如下命令:

sudo nano /etc/apt/sources.list

如果是 stretch 版本,用以下内容取代(以此类推):

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free

# Uncomment line below then ‘apt-get update’ to enable ‘apt-get source’
#deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi

保存文件后用root权限执行:

apt update即可。

可根据自己的情况选择就近的站点。

 

怎样为树莓派安装Rust开发包和相关实用软件?

随着软件业的蓬勃发展,越来越多的新技术开始呈现在大家面前。比如Golang和Rust这两门计算机编程语言。

Golang可能大家接触的多一些,毕竟容器和区块链等大量开发者在用。稍晚一年出现的Rust,可能有些朋友不熟悉。

Rust是Mozilla主导开发的注重安全、速度和并发的系统级编程语言,随着Rust的成熟,Mozilla开始尝试用Rust开发Firefox的组件,其中包括核心引擎Servo/Project Quantum。

普通PC和Mac电脑咱们这里就不说了,这里讲讲如何在树莓派上安装Rust开发包和那些没有加入“系统软件库”的Rust软件。

这里还是拿出我的Raspberry Pi Zero W。

在确保网络状态良好的情况下,在命令行执行:

sudo curl https://sh.rustup.rs -sSf | sh

默认安装选1即可,它会自动安装稳定版的Rust for ARM。这里可以看到版本号是1.27.0。

安装成功后可以写个hello world试试是否可以正常编译。

cat > hello.rs << EOF

rustc hello.rs

这个命令可以生成二进制文件直接执行。

从图中我们能看到,树莓派已经可以编译rust程序了。然后我们用cargo这个rust包管理工具来安装一个文件搜索工具 —— fd-find。

执行:cargo install fd-find

下载和编译的过程比较漫长。当然,如果你是高性能PC可以很快。单核ARM的话你就慢慢等吧。

差不多一场世界杯足球赛的耗时,终于编译完成了这个fd-find(我这里用了84分 2.69秒)。

最后就是享受劳动成果了,试试这个由Rust语言开发,传说中可取代“find”命令的小工具吧。

速度快,更简洁,支持正则表达式。还可以和其他Shell命令融合。

欢迎大家和我探讨IoT物联网终端上的开发和应用。

版权声明:本文为“IoT前哨站”原创,转载请注明原文作者和出处。

与树莓派谈共享 —— Windows有现成的NFS客户端?

很多树莓玩家都在用 Winscp 等软件在 Windows 和树莓派之间来回传文件。虽然也能用,但感觉总不像Windows网上邻居的共享那么方便。

如果只跟Windows共享,用Samba倒也可以。如果要让Windows和Linux都能挂载树莓派上的共享区域呢?

其实很多朋友不知道,为了方便跟 Unix/Linux 交互,微软早就在Windows系统里准备了NFS客户端,找到“打开或关闭Windows功能”,将相关工具开启即可使用。

Windows 7及后续版本都支持,不管是服务器版还是桌面版。

步骤如下:首先在远程树莓派上设置好NFS,我的设置和共享目录如图所示。

然后在本地Windows进控制面板,打开“Windows 功能”选项卡,选择相关组件。

功能开启成功后可以对 NFS 客户端进行设置,比如选择TCP协议还是UDP协议。一般我共享视频播放的时候,会选择UDP协议。具体怎么设置请自己考虑。

软挂载和硬挂载的区别:

对硬挂载文件系统来说,如果因为某种原因远程系统的响应失败,比如NFS服务端挂掉等,则NFS客户端将会持续地尝试建立连接,这样可能导致执行df等命令出现挂死的现象。

而对软挂载文件系统来说,同样情况下,在指定的时间间隔后NFS客户端将会放弃尝试建立连接而发送一个错误消息。

默认采用硬挂载文件系统,系统硬挂载尝试失败时,对用户输入的响应也会停止。正是因为这样,有的用户更喜欢采用软挂载,它会使系统在尝试挂载失败后停止尝试。

设置完成后,可以用以下命令进行挂载树莓派上的目录,映射到本地的X盘。

挂载成功后,你会看到Windows系统中多了一个X盘符,点进去会发现树莓派共享出来的目录。

下命从X盘拷贝一个视频到桌面看看,内网速度1.16MB/秒。还凑合。当然,你也可以往里面粘贴文件,读写均可,跟网上邻居一样好用。

本文来自“IoT前哨站”,转载请注明出处。

用 Adafruit 和 树莓派 读取 DHT11 温湿度传感器

DHT11 温湿度传感器尽管不是使用效率最高的温湿度传感器,但价格便宜被广泛应用。之前我们介绍了用树莓派从 DHT11 温度湿度传感器读取数据的教程,其原理理解起来较为复杂,下面我们介绍另一种基于Adafruit DHT 库读取 DHT11 数据的方法。

DHT11 规格

DHT11 有四个引脚,但是其中一个没有被使用到。所有有的模块会简化成3个引脚。

湿度检测范围 : 20-80% (5% 精度)
温度检测范围 : 0-50°C (±2°C 精度)

该厂商不建议读取频率小于2秒,如果这么做数据可能会有误。

硬件连接

需要在电源和数据脚之间串联一个上拉电阻(4.7K-10K),通常情况下,购买DHT11模块的话都自带了这个电阻。不同的模块型号引脚位置略有不同,下面以图上模块为说明:

数据引脚可以根据你的需要自行修改。

Python 库

DHT11 的读取需要遵循特定的信号协议完成,为了方便我们使用Adafruit DHT 库。

软件安装

开始之前需要更新软件包:

sudo apt-get update
sudo apt-get install build-essential python-dev

从 GitHub 获取 Adafruit 库:

sudo git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT

给 Python 2 和 Python 3 安装该库:

sudo python setup.py install
sudo python3 setup.py install

示例程序
Adafruit 提供了示例程序,运行下面的命令测试。

cd ~
cd Adafruit_Python_DHT
cd examples
python AdafruitDHT.py 11 17

这两个参数分别表示 DHT11 和数据引脚所接的树莓派 GPIO 编号。成功的话会输出:

Temp=22.0* Humidity=68.0%

如何在其他 Python 程序中使用这个库
参照下面的方法引入 Adafruit 库,然后就可以使用 “read_retry” 方法来读取 DHT11 的数据了:

import Adafruit_DHT

# Set sensor type : Options are DHT11,DHT22 or AM2302
sensor=Adafruit_DHT.DHT11

# Set GPIO sensor is connected to
gpio=17

# Use read_retry method. This will retry up to 15 times to
# get a sensor reading (waiting 2 seconds between each retry).
humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)

# Reading the DHT11 is very sensitive to timings and occasionally
# the Pi might fail to get a valid reading. So check if readings are valid.
if humidity is not None and temperature is not None:
    print(‘Temp={0:0.1f}*C Humidity={1:0.1f}%’.format(temperature, humidity))
else:
    print(‘Failed to get reading. Try again!’)

另外,温度传感器还有 DS18B20,这个传感器虽然没有湿度数据,但是其易用且稳定,有兴趣的朋友可以进一步了解。

来自:树莓派实验室

OpenCat:他用树莓派做了个猫

OpenCat是由中国机器人专家李荣仲创建的机器猫项目。他从头开始创造机器人猫,包括现实的动作和Alexa整合。

Evolution in this video:

李荣仲的起步来自于一些模型板材和Raspberry Pi初学者工具包,他说目前这些“仍然集成在猫身上”。你可以在这个视频中看到OpenCat的发展:

创客用Raspberry Pi来为OpenCat提供动力,并不是因为Pi是“小而便宜的计算机”。 而是因为“在Linux环境下易于访问硬件接口”。

OpenCat的一个早期迭代,使用建模棒来创建主体

OpenCat:用Raspberry Pi构建机器猫

荣仲研究了许多哺乳动物的步态,并相信“通过简单的幅度调整,改变相位持续时间和其他微小参数可以产生不同的步态”。OpenCat“不受(作为)猫的限制”。

他用一块Arduino的Slave扩展板来直接操作机器人,让Raspberry Pi负责更高级的功能,如Alexa整合。

目前,OpenCat使用Alexa“触发某些行为”,也会依靠自身视觉来行动。正如荣忠所说,语音助手“现在可以在机器宠物上运行,并以传统宠物般的方式与人交流。 [这]可能会鼓励更多的人在家里接受机器人技术。”

荣仲目前正在努力使OpenCat项目在财务上收支平衡 —— 无论这意味着卖OpenCat套件还是别的什么。

让我们保持关注。

和前作相比,树莓派3B+的功耗怎样?

如果你在运行一个电池供电的 Pi,你知道它能运行多久吗?我们这里做一些简单的测试,以便于你制定电力预算。

实验方式:

一个 HDMI 屏幕和一个 USB 键盘/鼠标转换器连接,一个5.2V的供电 (电流限制 = 3 安培)线路, 通过电表校准的20安培分流器,由uUSB电源输入Pi。

拍摄视频没有保存到SD卡,但观看1080p视频是在SD卡上完成的。

拍摄视频测试结束后,摄像机模块没有插电。Pi3 B+ 有连接Wi-Fi,但没有蓝牙设备在使用。

了解局限性:

了解任何设备测试和结果的局限性是很重要的。

比较一下台式电源、钳位表和电表的实际读取数据,可以对结果有一定程度的信心。

电表给出时间平均读数(每秒钟更新几次),精确到到小数点后面两个位,这对于我们的目的来说已经足够好了。

我们感兴趣的是随着时间的推移,电力的使用会怎样变化。这样你可以计算出实际使用时,电池包或太阳能电池板要买什么样的。

结果:

我们一共测试了四个不同状态下树莓派的功耗情况。

分别是“空闲”、“载入LXDE”、“观看1080p视频”、“录制视频”。结果如下:

图1

图2

从这两张图来看,树莓派3B+的功耗明显最高,但是具体高多少,大家看过图之后应该也明白了。

评价:

把3B+与3B比较,你将发现前者比后者要多用170mA的电流,即使在空闲状态。这完全是拜新的千兆以太网所赐。如果平时不用,希望可以将其关闭。

在观看或拍摄视频时,GPU处理大部分工作,而这一点在新板子上保持不变。另外一个显着的区别是加载LXDE后的CPU负载,你可以看到3B+比3B高得多。更快的任务处理需要更多的功耗,这在图表中可以看到。

当然,虽然 Raspberry Pi 3B+ 比旧款的3B至少多用170 mA,但CPU更快,可以做更多事情。

原作:Raspi.tv  编译:IoT前哨站

版权声明:本文为“IoT前哨站”编译,转载请注明作者和出处。

挖矿?算力微薄的物联网终端黑客也不嫌弃

各种数字货币的价格上涨,让很多不怀好意的黑客动起了脑筋。

思科公司的安全团队Talos在2018年1月份发表报告证实,门罗币(Monero)挖矿蠕虫正在取代比特币勒索软件,成为黑色经济里获利最丰厚的部分。

报告指出,超过52.6万台 Windows 计算机(其中大部分是运行Windows的服务器)被挖矿蠕虫感染,这些蠕虫的制造者控制了历史上最大规模的挖矿僵尸网络,用来开采门罗币。按照当时的市场价格,获益大约价值1600万人民币(以每个门罗币1800元人民币计算)。

而在2018年3月的RSA大会上,国际安全公司Avast的首席技术官Ondrej Vlcek称,随着物联网领域发展,个人电脑用户不再是恶意加密货币挖矿软件的唯一受害者。现在物联网设备和智能手机也很容易被劫持,沦为挖矿机器。

甚至还有人在Ubuntu Snap Store内发现捆绑挖矿程序的恶意应用,而这个App商店里有大量应用是为低功耗物联网终端设计的。

结构简单的物联网终端能挖到币吗?

众所周知,用高性能的GPU和ASIC挖矿才有利可图。结构简单,算力微薄的嵌入式物联网终端,也能挖矿吗?

为了帮大家弄清这一问题,我特意找了一款迷你摄像头来做挖矿测试。如图所示。

该迷你摄像头的核心是一块Raspberry Pi Zero W。厚度和一块钱硬币差不多,面积约为华为P10手机的1/4大小。价格10美元左右。

硬件配置:
• BCM 2835 Chip 1GHz, single-core CPU
• 512MB RAM

选择挖矿种类:
• Monero(XMR)

矿池名称:
• Minergate.com

将配置好的挖矿程序载入Raspberry Pi Zero W,执行命令连入门罗币矿池。不到一会儿,挖矿程序开始有产出了。如图所示。

事实证明,这类结构简单的物联网终端虽然算力很小,但确实能挖到币。

算力那么小,怎么还有人搞物联网蠕虫挖矿?

由于算力微薄,一个迷你摄像头挖矿赚不了钱。但是像无线路由器、智能摄像头这类物联网终端,大多无人值守,也没有安装防毒软件,一感染就是一大批。

以Check Point软件部门发现的华为HG532产品远程代码执行漏洞(CVE-2017-17215)为例,该漏洞被Mirai 物联网蠕虫变种利用后,单在南美就发现9万台以上的设备被感染。它们即使不被用做数字货币挖矿,也会被用做DDoS等其他恶意用途。

再微薄的算力,乘以10万+,收益怎么也得上去了。况且现在很多物联网设备的配置也不低,至少比这个迷你摄像头的单核32位ARM要强很多。

小结:

容易得手+难以发现+规模巨大+稳定收益,物联网蠕虫的制造者们乐此不疲。不断将新病毒释放到IoT世界,损人利己。只是天网恢恢,疏而不漏。物联网知名蠕虫Mirai的始作俑者,来自美国新泽西州年仅21岁的Paras Jha最近终于被捕。但这个消息似乎并没有让此类攻击降温。

Avast公司曾对美国2300多名电脑用户进行调查发现,47%的用户认为恶意挖矿没什么可怕的,其中13%的用户相信挖矿病毒不会窃取数据。可见安全意识的培养任重道远,我们重视自己的手机和电脑安全,也同样要注意生活中不起眼的物联网设备安全。

未来,联网的智能终端会更多。希望大家不要让“Everything IoT”变成“Everything Mining”。

用Ngrok穿透防火墙访问内网的树莓派

通常在公网要访问一台内网的设备,比内网互相访问要麻烦。原因不一定是防火墙阻碍,而是内网设备一般都没有公网IP。

那你想用家里的电脑访问办公室电脑中的文件或其他资料的话该怎么办?我们是否有一些高效的办法来访问路由器或防火墙背后的联网设备?

大家可能会想出改路由规则、配置防火墙等等方法。但是很多公司的路由和防火墙是不允许普通员工登陆调试的。

这里要介绍一个叫做Ngrok的服务,它几乎允许我们跨网络(LAN/WAN)连接任意设备。

假设我们要从外网访问内网一个树莓派的SSH服务,我们需要先拥有一个Ngrok网站的一个帐号,然后为树莓派下载正确的Ngrok程序,执行相关命令,就可以获得一个公网地址了。

具体操作如下:

1、访问 https://dashboard.ngrok.com/user/signup 并注册帐号。

完成账号注册后,你会得到一个令牌字符串,你等会需要使用这个字符串来认证你的树莓派。

2、部署Ngrok

让你的树莓派下载Ngrok:

wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip

解压,得到一个名叫“ngrok”的文件。

3、让树莓派先做一下认证。

./ngrok authtoken 你得到的令牌字符串

4、运行Ngrok,把树莓派的SSH服务映射到公网。

./ngrok tcp 22

现在,你将会看到如下所示的信息:

上图表示,TCP 连接到“0.tcp.ngrok.io:12119”的访问都将指向我这个树莓派的22端口。

5、用Putty登录0.tcp.ngrok.io,看看是否可以从公网访问树莓了。

OK,搞定了。快试试网速怎么样。

注:如果要固定访问地址,需要额外付费。如果只是临时用用,免费版的足够。有任何问题和建议欢迎给“IoT前哨站”微博或微信公众号留言。