Android平臺(tái)手機(jī)防盜系統(tǒng)的安全解決方案
引言
Android是Google開(kāi)發(fā)的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,被譽(yù)為第一個(gè)完整、開(kāi)放而且免費(fèi)的移動(dòng)平臺(tái)[1].因3G技術(shù)的不斷發(fā)展和Android平臺(tái)的優(yōu)勢(shì),Android移動(dòng)應(yīng)用開(kāi)發(fā)成為目前熱門(mén)的技術(shù)之一,基于Android平臺(tái)的智能手機(jī)數(shù)量也越來(lái)越多。由于Android手機(jī)的便利性和實(shí)用性,很多人會(huì)把銀行卡密碼、電話密碼、網(wǎng)絡(luò)支付密碼、重要日程提醒等個(gè)人信息和一些隱私數(shù)據(jù)存放到手機(jī)里。如果手機(jī)被盜,不僅短信、通訊錄、照片等隱私泄漏,還可能導(dǎo)致親戚朋友上當(dāng)受騙,會(huì)對(duì)人們的工作和生活帶來(lái)很大的影響。
為了解決這一問(wèn)題,本文提出了在手機(jī)被盜后,通過(guò)防盜追蹤模塊來(lái)監(jiān)測(cè)手機(jī)SIM卡是否被更換,從而確定自己的手機(jī)是否被盜。并利用即時(shí)通信模塊向被盜手機(jī)發(fā)送遠(yuǎn)程控制指令,來(lái)保護(hù)個(gè)人隱私并追蹤找回被盜手機(jī)。在手機(jī)鎖定后通過(guò)屏蔽手機(jī)的按鍵、攔截電話和短信以及關(guān)閉手機(jī)的USB調(diào)試連接,使手機(jī)不能使用,除非進(jìn)行解鎖。該系統(tǒng)將防盜追蹤、即時(shí)通信和遠(yuǎn)程控制等模塊有機(jī)地結(jié)合在一起,具有良好的研究?jī)r(jià)值和應(yīng)用前景。
1系統(tǒng)總體設(shè)計(jì)
手機(jī)防盜系統(tǒng)是以手機(jī)終端為載體,借助通信運(yùn)營(yíng)商提供的GPRS數(shù)據(jù)連接業(yè)務(wù)或者移動(dòng)WiFi網(wǎng)絡(luò)以及短信業(yè)務(wù),實(shí)現(xiàn)遠(yuǎn)程控制。在實(shí)現(xiàn)遠(yuǎn)程控制之前,用戶首先需要通過(guò)GPRS數(shù)據(jù)連接或者移動(dòng)WiFi網(wǎng)絡(luò),根據(jù)配置好的網(wǎng)絡(luò)環(huán)境啟動(dòng)并運(yùn)行服務(wù)器,然后再根據(jù)啟動(dòng)服務(wù)器的IP地址、端口號(hào),以及服務(wù)器上配置好的用戶名和密碼,激活安裝在Android終端上的客戶端軟件。在手機(jī)客戶端軟件激活之后,云端的服務(wù)器便跟手機(jī)客戶端之間建立了可靠的通信連接;連接建立成功后,用戶便可以按照手機(jī)云平臺(tái)的通信協(xié)議實(shí)現(xiàn)服務(wù)器跟客戶端之間的數(shù)據(jù)通信。手機(jī)客戶端將需要上傳的數(shù)據(jù)或操作生成的業(yè)務(wù)數(shù)據(jù),封裝成固定的Java Bean數(shù)據(jù)包的格式發(fā)送到云端的服務(wù)器,或者是云端服務(wù)器將網(wǎng)頁(yè)側(cè)下發(fā)的命令字段封裝成Java Bean數(shù)據(jù)包的形式,再下發(fā)給手機(jī)終端。手機(jī)終端將接收到的數(shù)據(jù)包進(jìn)行解析,并同時(shí)完成對(duì)手機(jī)相應(yīng)的命令操作,然后返回處理的結(jié)果[2].
通過(guò)對(duì)整個(gè)系統(tǒng)的分析,從系統(tǒng)的總體架構(gòu)入手,對(duì)各個(gè)功能模塊進(jìn)行了劃分,并明確了系統(tǒng)各模塊之間的聯(lián)系。通過(guò)分析C/S模式和B/S模式各自的特點(diǎn),結(jié)合系統(tǒng)的實(shí)際需要,采用了C/S模式和B/S模式相結(jié)合的架構(gòu)[3],用戶不僅能通過(guò)安全號(hào)碼來(lái)控制被盜的手機(jī),在緊急情況下,還可登錄Web端的手機(jī)防盜管理系統(tǒng)來(lái)遠(yuǎn)程操控被盜的手機(jī)。第一時(shí)間對(duì)被盜的手機(jī)進(jìn)行全方位的監(jiān)聽(tīng),使小偷不能對(duì)手機(jī)進(jìn)行任何操作,既保護(hù)了隱私數(shù)據(jù),又給找回手機(jī)爭(zhēng)取了寶貴的時(shí)間。還可以通過(guò)GPS定位來(lái)獲取被盜手機(jī)當(dāng)前所在的位置,盡快找回被盜的手機(jī)。系統(tǒng)總體架構(gòu)如圖1所示。
圖1系統(tǒng)總體架構(gòu)
圖1說(shuō)明了整個(gè)系統(tǒng)的架構(gòu)設(shè)計(jì),在手機(jī)被盜之后,用戶可以通過(guò)安全號(hào)碼手機(jī)控制被盜的手機(jī),還可以通過(guò)PC的瀏覽器登錄到Web端的手機(jī)防盜管理系統(tǒng),通過(guò)即時(shí)通信模塊向被盜手機(jī)發(fā)送遠(yuǎn)程控制指令,從而執(zhí)行手機(jī)報(bào)警、數(shù)據(jù)刪除、鎖定手機(jī)、GPS定位等功能。當(dāng)被盜手機(jī)接收到這些指令,也會(huì)進(jìn)行相應(yīng)的處理,完成后將處理結(jié)果通過(guò)即時(shí)通信模塊發(fā)送到Web端并顯示。這兩種控制方式都是在后臺(tái)秘密地進(jìn)行,小偷不會(huì)有任何察覺(jué),從而更安全可靠地追蹤手機(jī)。
2防盜追蹤模塊的設(shè)計(jì)與實(shí)現(xiàn)
防盜追蹤模塊通過(guò)監(jiān)聽(tīng)手機(jī)的開(kāi)機(jī)廣播,實(shí)時(shí)監(jiān)測(cè)手機(jī)中插入的SIM卡是否合法,如果合法,不作任何處理;否則,將獲取新卡的SIM卡卡號(hào),并將該SIM卡卡號(hào)作為短信的內(nèi)容發(fā)送至用戶指定安全號(hào)碼的手機(jī),從而使用戶獲取被盜手機(jī)的SIM卡號(hào)碼,對(duì)手機(jī)進(jìn)行遠(yuǎn)程控制。與此同時(shí),將開(kāi)啟轉(zhuǎn)發(fā)被盜手機(jī)新短信的服務(wù)。下面說(shuō)明該模塊的具體功能。防盜追蹤模塊處理流程如圖2所示。
圖2防盜追蹤模塊處理流程
①設(shè)置、修改合法的SIM卡卡號(hào):在安裝完程序第一次啟動(dòng)的時(shí)候,系統(tǒng)會(huì)自動(dòng)讀取當(dāng)前手機(jī)的SIM卡卡號(hào),并將該卡號(hào)作為合法的SIM卡卡號(hào)寫(xiě)入自動(dòng)生成的配置文件中。由于每張SIM卡卡號(hào)(即IMSI序列號(hào))是唯一的,因此該卡號(hào)將作為判斷以后手機(jī)中插入的SIM卡是否合法的主要依據(jù)。此外還允許用戶隨時(shí)修改該SIM卡序列號(hào)。
②獲取新SIM卡號(hào)碼和IMSI序列號(hào):用戶的手機(jī)在丟失或被盜以后,手機(jī)SIM卡往往會(huì)被更換,在手機(jī)重新啟動(dòng)時(shí),系統(tǒng)會(huì)自動(dòng)獲取當(dāng)前SIM卡的卡號(hào),然后與之前配置文件中保存的卡號(hào)對(duì)比,如果不一致,系統(tǒng)會(huì)將該SIM卡卡號(hào)作為短信內(nèi)容向用戶指定的安全號(hào)碼發(fā)送通知短信,讓用戶可以通過(guò)安全號(hào)碼手機(jī)對(duì)被盜手機(jī)進(jìn)行遠(yuǎn)程操作,盡快找回被盜手機(jī)。
③開(kāi)啟轉(zhuǎn)發(fā)新短信的服務(wù):后臺(tái)轉(zhuǎn)發(fā)新短信的服務(wù)一直在運(yùn)行,每一次用戶重新開(kāi)機(jī)的時(shí)候,就會(huì)將配置文件中的SIM卡卡號(hào)跟當(dāng)前手機(jī)中的SIM卡卡號(hào)進(jìn)行對(duì)比,如果結(jié)果不一致,就會(huì)啟動(dòng)該服務(wù),將用戶手機(jī)最新收發(fā)的短信記錄按照一定的格式自動(dòng)發(fā)送至用戶指定的安全號(hào)碼手機(jī)。
3即時(shí)通信模塊的設(shè)計(jì)與實(shí)現(xiàn)
即時(shí)通信模塊為Web端手機(jī)防盜管理系統(tǒng)和手機(jī)防盜系統(tǒng)客戶端提供了實(shí)時(shí)通信的渠道,讓用戶在登錄Web端手機(jī)防盜管理系統(tǒng)之后,可以實(shí)時(shí)地對(duì)被盜手機(jī)進(jìn)行遠(yuǎn)程控制,保護(hù)用戶隱私,并追蹤找回被盜手機(jī)。即時(shí)通信模塊包括服務(wù)器和客戶端兩部分,通過(guò)在服務(wù)器與客戶端之間建立網(wǎng)絡(luò)連接,從而實(shí)現(xiàn)即時(shí)通信。
即時(shí)通信模塊的處理流程如圖3所示。
圖3即時(shí)通信模塊的處理流程圖
3.1服務(wù)器端的設(shè)計(jì)與實(shí)現(xiàn)
本系統(tǒng)采用開(kāi)源的Openmobster手機(jī)云平臺(tái)來(lái)搭建即時(shí)通信服務(wù)器,并根據(jù)系統(tǒng)的需要進(jìn)行了改進(jìn)和優(yōu)化。該平臺(tái)是一個(gè)向本地手機(jī)程序提供“云”服務(wù)的平臺(tái),它內(nèi)嵌了一個(gè)基于J2EE開(kāi)放源代碼的應(yīng)用服務(wù)器JBoss.在JBoss服務(wù)器啟動(dòng)后,可以通過(guò)PC的瀏覽器啟動(dòng)控制臺(tái)。JBoss的控制臺(tái)界面簡(jiǎn)陋,和其他商業(yè)化服務(wù)器的控制臺(tái)差別很大,不夠直觀。因此考慮將控制臺(tái)改造成網(wǎng)頁(yè)的形式,這樣既可以方便用戶操作,界面也更直觀。
為了該平臺(tái)的服務(wù)器跟手機(jī)終端之間實(shí)現(xiàn)通信,需要在JBoss控制臺(tái)程序中新增一條命令,相應(yīng)地在服務(wù)器端也要新增處理這個(gè)命令的代碼,用控制臺(tái)發(fā)命令,讓服務(wù)器發(fā)Push消息給手機(jī)上的Service.服務(wù)器端的總體設(shè)計(jì)流程主要分為以下幾步:
①對(duì)控制臺(tái)代碼進(jìn)行分析,找出控制臺(tái)的命令與類的對(duì)應(yīng)關(guān)系。
②因此新增了一個(gè)FindCommand類,并且修改了配置文件,使控制臺(tái)可以運(yùn)行新命令。
③在服務(wù)器端新增了一個(gè)對(duì)應(yīng)控制臺(tái)新命令的findPhoneCommand類,繼承自MobileServiceBean,放在服務(wù)器端處理新增的命令。
④在服務(wù)器端建立一條Push通道。findPhoneCommand類在收到命令時(shí)就會(huì)通過(guò)這個(gè)Push通道向手機(jī)上的Service發(fā)Push消息。
⑤將控制臺(tái)改造成網(wǎng)頁(yè)的形式來(lái)發(fā)命令。
3.2客戶端的設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)客戶端包括手機(jī)即時(shí)通信客戶端和Web即時(shí)通信客戶端。
Web即時(shí)通信客戶端基于JavaEE,利用Openmobster云平臺(tái)的Jboss服務(wù)器對(duì)JSP網(wǎng)頁(yè)文件進(jìn)行熱部署,通過(guò)登錄到即時(shí)通信服務(wù)器端與手機(jī)客戶端進(jìn)行通信。
移動(dòng)互聯(lián)網(wǎng)中,Android智能終端通過(guò)WiFi或GPRS連接到互聯(lián)網(wǎng)。手機(jī)即時(shí)通信客戶端通過(guò)激活手機(jī)設(shè)備連接到服務(wù)器,然后以Java Bean的傳輸協(xié)議形式,對(duì)協(xié)議進(jìn)行解析并執(zhí)行相應(yīng)的命令操作。最后再將處理的結(jié)果封裝成Bean的對(duì)象,在客戶端與服務(wù)器之間進(jìn)行傳輸。
4遠(yuǎn)程控制模塊的設(shè)計(jì)與實(shí)現(xiàn)
4.1 Web遠(yuǎn)程控制模塊的設(shè)計(jì)與實(shí)現(xiàn)
Web遠(yuǎn)程控制模塊在C/S模式的基礎(chǔ)上,增加了B/S模式,旨在增強(qiáng)對(duì)被盜手機(jī)的控制。當(dāng)手機(jī)丟失,安全號(hào)碼手機(jī)不能及時(shí)用來(lái)控制被盜手機(jī),這時(shí)通過(guò)Web網(wǎng)頁(yè)來(lái)進(jìn)行遠(yuǎn)程控制,它能在第一時(shí)間鎖定手機(jī),保護(hù)手機(jī)上的隱私數(shù)據(jù)不被竊取,為盡快找回手機(jī)提供幫助。Web控制模塊實(shí)現(xiàn)流程如下:
①用戶通過(guò)瀏覽器打開(kāi)網(wǎng)頁(yè),選擇需要下發(fā)的命令,然后輸入用戶名和密碼,點(diǎn)擊“確定”后調(diào)用JSP代碼。JSP代碼將網(wǎng)頁(yè)請(qǐng)求封裝的各功能選項(xiàng)字段取出,封裝進(jìn)一個(gè)數(shù)據(jù)對(duì)象中。
②在服務(wù)器端定義的用于下發(fā)的Channel會(huì)定期調(diào)用相關(guān)接口,對(duì)上面封裝的數(shù)據(jù)對(duì)象進(jìn)行檢查,一旦發(fā)現(xiàn)有新插入的數(shù)據(jù),會(huì)通過(guò)對(duì)應(yīng)的接口取出該數(shù)據(jù),將其封裝到Bean對(duì)象中,通過(guò)Openmobster推送給手機(jī)終端。
③終端后臺(tái)模塊中的服務(wù)同樣建立了對(duì)應(yīng)云端Channel的處理。一旦收到Channel的下發(fā)通知,通過(guò)發(fā)送Intent的方式啟動(dòng)一個(gè)Activity[4],這個(gè)Activity在啟動(dòng)過(guò)程中可以通過(guò)Bean的相關(guān)接口讀出對(duì)應(yīng)用戶名和通道下發(fā)的Bean對(duì)象,通過(guò)Bean的一些方法解析并獲取下發(fā)通知中的各功能項(xiàng)數(shù)據(jù)字段,調(diào)用Android平臺(tái)提供的各接口,完成對(duì)手機(jī)的遠(yuǎn)程控制。
④將遠(yuǎn)程控制處理的結(jié)果封裝到一個(gè)新的Bean對(duì)象里,然后注冊(cè)一個(gè)用于上傳的Channel,最終將結(jié)果上傳到服務(wù)器的數(shù)據(jù)庫(kù)并顯示在網(wǎng)頁(yè)界面上。
Web遠(yuǎn)程控制模塊的處理流程如圖4所示。
圖4 Web遠(yuǎn)程控制模塊的處理流程
4.2短信遠(yuǎn)程控制模塊的設(shè)計(jì)與實(shí)現(xiàn)
短信控制模塊的設(shè)計(jì)主要是基于監(jiān)聽(tīng)手機(jī)短信數(shù)據(jù)庫(kù)的變化,從而獲取短信并判斷短信的類型。如果是特殊格式的指令短信,則首先將手機(jī)調(diào)為靜音模式并關(guān)閉系統(tǒng)的消息通知,然后再根據(jù)指令進(jìn)行具體的操作。待操作完成以后,回復(fù)短信發(fā)件人告知指令執(zhí)行完畢,刪除此條短信并將手機(jī)恢復(fù)到之前的情景模式;否則,不作任何處理,進(jìn)入普通短信的系統(tǒng)處理流程。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)