方案简介
假如手机被人盗窃后,用户可以远程开启托管模式,实时获取盗窃人的个人信息,包括后台拍照、短信转发、通话记录转发等,从而达到“以盗治盗”的效果。同时,利用手机的移动性灵活性作为一个移动的监控台,配上制作的硬件报警系统和外部摄像头,即可实现对远方某一区域的实时安全监控。本作品在安卓原生系统的手机上进行了以上功能的真机测试,试验结果基本达到预期功能指标。
近几年,Android系统的普及十分迅速。2013年季度Android操作系统在全球智能手机市场中的占有率已经超过65%,比2012年同期增加了30.3%,然而手机的普及却带来了新的问题。据统计,在中国每天都有1千部手机被丢失,而手机丢失后,用户隐私极易被侵犯。手机的安全问题主要包括2类,即 手机防盗与隐私保护的问题,该方案有效解决了这两个问题 。
另一方面,随着智能手机的迅猛发展与物联网的兴起,智能手机作为物联网的移动终端前景大好。智能手机可以用来保护家居安全,比如通过手机远程视频查看来实现火警安防。这类用手机作为物联网的移动终端在市面上尚未有成熟完整的解决方案,主要问题是涉及软硬件结合,实现难度较大。该 方案也设计了一套小型物联网,将手机作为移动终端来实时监控家居安全 。
Android系统概述
Android应用主要包括activities、services、content providers和broadcastreceivers四种组件,考虑到本文核心内容,着重介绍一下activity和broadcastreceivers这两大组件。
Activity概述
应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。在Intent的描述结构中,有两个重要的部分:动作和动作对应的数据。典型的动作类型有:MAIN(activity的门户)、VIEW、PICK、EDIT等。而动作对应的数据则以URI的形式进行表示。例如:要查看一个人的联系方式,需要创建一个动作类型为VIEW的intent,以及一个表示这个人的URI.通过解析各种intent,当向前导航时,activity将会调用startActivity(Intent myIntent)方法。系统会找到匹配myIntent的Intent对应的activity.新的activity接收到myIntent的通知后,开始运行。
BroadcastReceiver广播接收器
BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作,等等。在onReceive方法内,我们可以获取随广播而来的Intent中的数据,这非常重要,就像无线电一样,包含很多有用的信息。Android中的广播机制设计的非常出色,很多事情原本需v要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。
系统测试
防盗托管模式
在托管模式下,用另外一部手机发送短信给被盗手机,被盗手机会自动将所收短信转发给安全号码,并且删除在发件箱中所发的短信,使盗窃者难以察觉自己已被监控。用被盗手机拨打或接听电话,被盗手机也会后台发送电话记录给安全号码,真正实现了对盗窃者个人信息与日常行踪的掌控。
视频监控部分
图6 组装整合之后效果
图6中已将安卓手机B放入纸盒暗箱中,报警指示灯插入纸盒暗箱孔内。此时接通电源,在可燃气体传感器附近点燃打火机。一会儿手机A(也就是用户用的主手机)就会收到一条来自纸盒暗箱内手机发来的报警短信,打开应用启动远程视频即可查看家中情况(如图7)。
图7 打开应用进行监控
结论
本方案探讨了Android的发展情形与当前热点问题,并提出了一套解决方案,与现今市场上的热门应用相比,本作品创新如下:
(1)开发出一套独特的防盗托管模式,在手机被盗后可以获取盗窃人与外界的联系与行踪,实时掌握盗窃人的动态,达到“以盗治盗”的效果,这与市场上大量安全软件如360卫士、安全管家等相比,本功能是开创性的。
(2)实现了基于Android手机的物联网雏形,结合硬件电路与路由器完成了对家中火灾的监控,弥补了市场上利用手机移动终端来监控家居安全的这方面缺陷。
2.远程视频监控
手机远程视频监控为本作品另一个分支,初步体现了移动物联网的理念,实现了它的一个雏形。通过安置摄像头监视环境,硬件传感器电路感知环境,发现异常立即自动发送短信通知手机远程视频查看实时状况。该部分功能结构流程图如图2所示。
图2 远程视频部分流程
外部拓展硬件
远程视频监控涉及的硬件包括:一个自行设计制作的可燃气体灯光报警器,一部带有光线传感器的安卓智能手机,一个经过改装之后的TP-LINK W703N迷你无线路由器,一个普通家用无线路由器,一个网络摄像头(这里使用的是天敏S605摄像头)。
各组件配合完成如下功能:利用可燃气体灯光报警器感知网络摄像头监视的区域,若环境气体浓度超标则亮强光;在安卓手机中装入编写的预制软件,利用安卓手机自带的光线传感器时刻监测报警器灯光的亮度,若超过阈值后则自动发送预制的报警短信给装有安防精灵的手机端;手机端收到报警短信之后通过应用联网查看家中的摄像头监视区域视频。
感知环境——传感器电路的制作
报警传感器电路是由降压整流,稳压电路,气敏传感元件,比较电路和音响电路等组成。该报警电路在可燃气体的浓度超过一定浓度时,发出声、光报警信号,提醒用户注意。
图3 可燃气体灯光报警器电路原理图
气敏传感元件采用气敏半导体QM-N5型,由于要求灯丝电压稳定,故供电电压经IC2(7805)三端稳压器稳压输出5V的稳定的额定工作电压。因此电路的工作原理可大致概括为:当可燃气体浓度才超过一定值时,气敏半导体器件的A-B极间电阻变小,该电阻与R1的分压变小。IC3采用的是半个双电压比较器LM393,平时,同相端(3脚)的电压高于反相端(2脚)的电压(由RP1和R2分压),电压比较器输出低电平(<0.7V),使IC4强迫处于复位状态。
当由于可燃气体浓度增加时,导致IC3的3脚电平升高,且高于2脚的基准电压时,比较器输出高电平,555置位,由555和R3,R4,C1组成的振荡器起振,振荡频率f=1.44/(R3+2R4)C1,图3所示参数的频率约为1KHZ.扬声器发出1KHZ的音响报警,同时LED发光闪烁。
报警通知——另一部安卓手机的应用
用来处理报警事件。考虑到现今普通的智能手机价格非常大众化,因此决定弃用复杂的GSM模块转而直接使用性价比更高的智能手机(这里称为手机B,用户所用的主手机称为手机A)。要求安装上我们编写的专用安卓应用,启动后在后台一直运行。这时将手机B装入暗盒中,只留光线传感器对准报警器的报警灯。当发现报警灯亮度达到程序设置的光线阈值后,则后台应用响应事件,立即将预存在程序中的报警短信发送给指定号码(即手机A),手机A在接收到通知后便可以打开应用查看家中情况。
数据传输——路由器的改造设置
改造机理和步骤如下:改装无线迷你型路由器TP-LINK TL-WR703N.这个路由器比较小巧,方便安装携带。进行一系列改装改造。包括将一个Linux开源项目OPENWRT系统固件刷入路由器中,把普通的无线路由器通过刷入开源的Openwrt系统,使之成为一个运行了Linux系统的小电脑。图4为WR703N的拆机图:
图4 WR703N拆机
路由器上也需编写一套程序,目的是把USB摄像头的视频进行编码,然后通过WIFI返回传给上位机。同时路由一般都预留有TTL串口,TTL串口是用来调试或者刷机用的,我们把这个TTL串口引出来将我们编写的程序刷入路由器中。
通过在家庭无线路由器里增设一个端口访问映射并设置与WR703N的级联Client模式,让家庭无线路由器作为WR703N迷你路由的上位机。使得当外界访问家庭路由器指定的视频传输端口时就会转发到WR703N中,由路由器提供回传摄像头拍摄的数据。图5为视频监控所需所有硬件设备。
图5 视频监控硬件
图中右上角为改造之后的WR703N路由器,左下角为自行制作的可燃气体报警器电路(含有两个LED,红色为电源指示灯,绿色为报警指示灯)。
右下角为带有光线传感器的安卓手机(手机B),手机下面是一个挖了孔的纸盒(用作手机暗箱)左上角为天敏S605网络摄像头。
系统设计
在本软件所设计的防盗系统中,除了市场上流行的防盗功能(如手机定位,换卡通知,响铃报警等),本文还自行设计了一套新型防盗数据获取技术,可控制手机进入防盗托管模式,在该模式下,可远程控制手机进行后台拍照并将盗窃人照片上传到邮件,并且实时检测盗窃人收发的短信和通话记录,截取短信内容,将短信转发给指定号码,同时也可以获取盗窃人的sim卡信息,达到对盗窃人信息的充分掌握,结合本应用的GPS手机定位功能可以更加有效的指认盗窃人、找回被盗手机。
为了实现上述检测防盗系统,我们从手机托管模式检测、短信截取和电话记录监听方面分别进行分析与设计。由于篇幅限制,类似拍照上传、报警响铃、GPS定位等功能在市场上比较常见,这里不再赘述。
1 防盗托管
防盗托管模式检测
为实现托管模式,必须先接收正确的指令,并且只有用户先前指定的安全号码所发送的指令才能生效,其他号码都不能远程控制用户手机(如图1所示)。这就需要后台实时广播检测是否有正确的相关指令。和之前提到一样,系统做任何事都会发出一个广播,针对本应用的需要,只须在对接收到短信时发出的广播作出响应,可以自动过滤其他动作,这样可以给系统节省一笔不小的开支。在Android系统中,接收短信的广播通知为“android.provider.Telephony.SMS_RECEIVED”。
图1 防盗托管流程图
短信截取和电话记录监听转发
当手机收到一条短信后,软件会后台获取短信内容和来信人号码,若为安全号码,则转向执行判定程序,判定内容是否存在相关指令,若为托管指令,则手机自动进入托管模式,托管模式下的手机会实时检测手机是否接收或发送短信,并将短信内容和号码转发给安全号码。需要注意的是,短信的所有数据首先需要通过bundle.get(“pdus”)来获得,并存储在Object[]数组中。这里Bundle类是一个keyvalue对,两个activity之间的通讯可以通过bundle类来实现,做法就是:新建一个bundle类,bundle类中加入数据(key-value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value),新建一个intent对象,并将该bundle加入这个intent对象,这里的intent即是定义为系统收发短信的Activity的intent.之后再解析Object数组中的数据,从而提取出短信内容和发信人号码。
当盗窃人收到来电并进行通话后,应用也会后台检测并发送电话记录给安全号码。大致实现方法是通过使用broadcast-Receiver来接收指定的电话广播,并判断手机通话状态。安卓平台开放了三个手机状态的API,分别是通话,空闲和响铃,考虑到本应用的需求,只需在通话过程中触发响应并获取来电人号码即可,后通过短信的方式将其发送给安全号码。应用后台检测并响应短信接收广播的部分代码如下: