亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android Wear的智能設備數(shù)據(jù)安全防護技術研究

        2016-11-08 12:29李惠
        現(xiàn)代電子技術 2016年19期
        關鍵詞:麥克風內核鬧鐘

        李惠

        (六盤水師范學院 計算機科學與信息技術系,貴州 六盤水 553001)

        基于Android Wear的智能設備數(shù)據(jù)安全防護技術研究

        李惠

        (六盤水師范學院 計算機科學與信息技術系,貴州 六盤水553001)

        隨著移動技術的發(fā)展與智能操作系統(tǒng)的推廣,智能設備在為用戶提供便利的同時,也存在一些數(shù)據(jù)安全隱患。針對Android Wear智能手表,提出了一種通過在Linux內核層對麥克風、藍牙和ADB等數(shù)據(jù)端口進行開關控制,以實現(xiàn)對手表中的數(shù)據(jù)進行保護的技術。該技術使用了兩種不同的途徑實現(xiàn)對三個數(shù)據(jù)端口的控制。同時,還實現(xiàn)了一種內核程序的用戶交互方法,在文件系統(tǒng)驅動程序中截獲用戶層程序對特定文件的讀寫操作,可以顯示數(shù)據(jù)端口的當前開關狀態(tài),并對開關狀態(tài)進行控制,而不需要增加或修改應用層程序,最后通過實驗驗證了該技術的可行性。

        Android Wear;智能手表;數(shù)據(jù)保護;數(shù)據(jù)端口開關控制

        0 引 言

        Android Wear智能手表作為一種新式的可穿戴設備給人們的生活帶來了極大的便利[1]。智能手表作為隨身穿戴的設備,很可能被非法分子作為竊聽他人隱私的媒介,智能手表中的重要數(shù)據(jù)可能通過藍牙泄露出去,當手表遺失或被竊后,他人可以使用ADB命令或手機助手軟件將手表中的數(shù)據(jù)拷貝出去,從而給用戶帶來嚴重的損失。通過研究Android Wear智能手表的數(shù)據(jù)保護技術,讓用戶可以在開會或其他涉及重要隱私信息的場合,選擇將手表中可能導致數(shù)據(jù)泄露的端口關閉,從而起到數(shù)據(jù)保護的作用[2]。

        1 數(shù)據(jù)保護技術的原理與控制

        由于無法獲得Android Wear系統(tǒng)源碼,所以本文通過修改Linux內核層的代碼,增加對麥克風、藍牙和ADB驅動的控制,一方面可以防止惡意軟件的錄音竊取用戶重要信息;另一方面還可以防止重要數(shù)據(jù)通過藍牙和ADB泄露出去。本節(jié)主要從麥克風、藍牙和ADB三個方面分別介紹它們的實現(xiàn)原理,以及如何從內核層實現(xiàn)對它們的開關控制。

        1.1麥克風的工作原理與控制

        麥克風是Android音頻系統(tǒng)中的輸入設備,通過分析音頻系統(tǒng)的架構,了解麥克風的工作原理與實現(xiàn)方式,進而在Linux內核層找到控制麥克風的關鍵代碼。Android音頻系統(tǒng)自上而下分為應用層、Java框架層、本地框架層、本地庫、硬件抽象層和驅動層[3]。通過Makefile和config變量定位麥克風驅動對應的文件。查看/ sound目錄下的Makefile文件,內核編譯時將根據(jù)這些變量是否為y來選擇相應的文件進行編譯。在 LG G Watch手表默認內核配置文件/arch/arm/configs/dory_defconfig中查找和聲音有關的內核配置變量如下:

        CONFIG_SOUND=y

        CONFIG_SND=y

        CONFIG_SND_SOC=y

        CONFIG_SND_SOC_DORY_MI2S=y

        通過不斷在子目錄及相應的Makefile中跟蹤內核配置變量,確定最終被編譯進內核中和聲音有關的文件有/sound/sound_core.c和/sound/soc/msm/dory-mi2s.c。在兩個文件中的各個函數(shù)中都加入自定義的printk函數(shù)來輸出日志信息,然后通過ADB命令查看日志輸出,發(fā)現(xiàn)當向手表輸入語音指令時,其中dory_mi2s_startup為啟動函數(shù)[4]。

        1.2藍牙的工作原理與控制

        Android藍牙架構包括四層,分別為應用層、框架層、C框架層、內核層。根據(jù)內核編譯系統(tǒng)的工作原理,通過追蹤內核配置變量,找到和藍牙有關的驅動程序有/drivers/bluetooth/bluesleep.c和 /drivers/bluetooth/bluetooth-power.c,然后通過在各函數(shù)中插入日志信息,查看函數(shù)調用流程,進而在關鍵函數(shù)中添加控制邏輯。然而通過實驗發(fā)現(xiàn)該方法并不完全有效,雖然可以切斷當前的藍牙連接,但是手表和手機之間仍然可以再次建立連接,這無法滿足本文的需求。于是提出了另外一種更為通用的方法,為了關閉某個功能模塊,首先找到該模塊所使用的可執(zhí)行文件或重要的庫文件,然后在文件系統(tǒng)打開文件函數(shù)中添加對該文件的攔截,使得文件打開失敗,從而使得該功能模塊無法執(zhí)行。查找藍牙模塊相關文件的過程如下:

        使用adbshell命令連接到手表;使用ps|grepbluetooth查找與藍牙有關的進程,得到:

        Bluetooth 3234 2913 591888 32592 ffffffff b6f094a8 S com. android.bluetooth

        從命令的輸出中可以看到藍牙模塊是由Android層的一個服務進程com.android.bluetooth來維護的,其進程號為3234。使用cd/proc/3234進入到該進程目錄;使用catmaps|grepbluetooth查看藍牙所使用的相關庫文件,結果如圖1所示。

        圖1 藍牙進程maps

        藍牙模塊使用了兩個庫文件/system/lib/hw/bluetooth.default.so和/system/lib/libbluetooth_jni.so。接下來在/fs/namei.c文件的do_filp_open函數(shù)中添加對上述兩個庫文件的攔截。上面的方法可以阻止藍牙的再次打開,如果手表已經和手機建立了連接,上述的方法并不能斷開當前的連接,因此還需要將藍牙模塊的進程kill掉[5]。在內核中kill掉進程需要遍歷所有的進程,然后比較當前進程的名字是否為目標進程,如果是,則向該進程發(fā)送SIGKILL信號。

        1.3ADB的工作原理與控制

        當用戶啟動ADBclient時,Client首先檢查是否有ADBserver正在運行。如果沒有,則啟動一個ADBserver進程。當Server進程啟動時,它綁定本地TCP5037端口,通過該端口接收ADBclient發(fā)送的命令。所有的ADBclient都使用5037端口與ADBserver通信[6]。

        ADBserver與連接到PC上的Android設備或模擬器建立連接。Server通過掃描5555~5585范圍內的奇數(shù)端口來發(fā)現(xiàn)Android設備或模擬器。當Server發(fā)現(xiàn)一個ADBdaemon時,便會和那個端口建立連接。每個Android設備或模擬器需要兩個端口,偶數(shù)端口用于控制臺連接,奇數(shù)端口用于用戶ADB連接。一旦ADBserver建立與設備或模擬器的連接,便可以通過ADB命令來控制和訪問這些設備或模擬器。因為ADBserver管理與設備或模擬器之間的連接,所以可以通過ADBclient控制任何的設備或模擬器[7]。

        通過對ADB工作原理的分析,得知手表中通過adbd守護進程與電腦建立連接,因此只要禁止該程序的執(zhí)行,便可以達到關閉ADB的目的。和控制藍牙模塊類似,首先找到adbd可執(zhí)行程序的路徑,使用ps|grepadbd命令,得到:

        shell 2158 1 8788 232 ffffffff 00026394 S/sbin/adbd

        adbd的路徑為/sbin/adbd,然后在/fs/namei.c文件的do_filp_open函數(shù)中添加對/sbin/adbd的攔截,主要代碼如下:

        struct file*do_filp_open(int dfd,struct filename*pathname,

        const struct open_flags*op,int flags)

        {struct nameidata nd;

        struct file*filp;

        i(fg_adb_switch==0)

        {if(strcmp(pathname->name,"/sbin/adbd")==0){returnERR_PTR(-ENOMEM);}}…}

        同樣,為了關閉已經建立的ADB連接,需要kill掉adbd進程,使用kill_proc(“adbd”)實現(xiàn)。

        2 用戶交互界面

        根據(jù)Android系統(tǒng)的分層架構可以知道,用戶使用智能手表,實際上是使用手表中的應用軟件,和用戶直接打交道的是位于最上層的App[8]。然而提出的數(shù)據(jù)保護方案的核心功能實現(xiàn)位于內核態(tài),因此需要解決的是如何讓用戶通過使用上層的應用軟件來觸發(fā)內核中相應的動作(主要是對麥克風、藍牙和ADB的開關切換)。在不修改和添加智能手表中應用軟件的前提下,實現(xiàn)用戶交互界面的設計,主要采用的方法是尋找手表中自帶應用與系統(tǒng)文件的讀寫交互,在內核文件系統(tǒng)讀寫函數(shù)中添加判斷邏輯,當寫特定文件時,根據(jù)寫入文件的數(shù)據(jù)來觸發(fā)對數(shù)據(jù)端口開關的控制;當讀取特定文件時,通過修改返回的數(shù)據(jù)來顯示內核的狀態(tài)。

        2.1輸入界面的設計與實現(xiàn)

        Android Wear系統(tǒng)中自帶一個鬧鐘應用,當設定鬧鐘時會有寫文件的操作,寫文件時會調用內核文件系統(tǒng)中vfs_write函數(shù),這樣內核便可以將設定鬧鐘的時間作為用戶的輸入,根據(jù)時間的不同,對麥克風、藍牙和ADB進行相應的開關控制。

        2.1.1查找鬧鐘對應的應用程序

        Android Wear系統(tǒng)啟動后,安裝包管理器會解析系統(tǒng)中所安裝的應用,并為其建立對應的數(shù)據(jù)結構,同時會將所有應用的基本信息保存在文件中。這樣的文件共有兩個,它們位于/data/system目錄,分別是packages. list和packages.xml??梢詮膒ackages.list中查看系統(tǒng)中所有應用的安裝包信息,可以從packages.xml中獲得該安裝包所在路徑。

        從命令的輸出中看到和時鐘有關的應用有三個,從安裝包的名字可以看出,其中com.google.android.deskclock是谷歌公司開發(fā)的,com.lge.wearable.worldclock是LG公司開發(fā)的,/data/data/com.google.android.clockwork. packageinstaller是程序安裝器。LG公司沒有必要為手表開發(fā)一個鬧鐘程序,因此com.google.android.deskclock應該就是要找的鬧鐘程序的包名。

        2.1.2查找鬧鐘程序所寫的文件

        進入com.google.android.deskclock程序的私有數(shù)據(jù)目錄:

        #cd/data/data/com.google.android.deskclock

        使用ls命令查看該目錄下有哪些文件,得到cache,lib,shared_prefs。shared_prefs目錄下一般保存一些xml格式的應用配置文件,在該目錄下發(fā)現(xiàn)alarms.xml和stopwatch.xml兩個文件,從名字可以看出alarms.xml就是要找的鬧鐘配置文件,而stopwatch.xml應該是跟秒表有關。alarms.xml內容如下:

        <xmlversion=′1.0′encoding=′utf-8′standalone=′yes′>

        <map>

        <intname="hour"value="8"/>

        <intname="minute"value="0"/>

        </map>

        得出alarms.xml中的內容正好是最近一次設置的鬧鐘時間。

        2.2在內核中讀取設置的鬧鐘時間

        當用戶設置鬧鐘時,程序會向/data/data/com.google. android.deskclock/shared_prefs/alarms.xml文件寫入設置的鬧鐘時間。根據(jù)Linux虛擬文件系統(tǒng)的相關知識,寫文件時會調用內核中的vfs_write函數(shù),該函數(shù)位于內核源碼/fs/read_write.c文件中。在vfs_write函數(shù)中,對所寫文件名進行判斷,如果是鬧鐘文件,則在寫文件后,從鬧鐘文件中讀取設置的時間值,根據(jù)具體的時間值對數(shù)據(jù)端口進行相應的開關設置。從vfs_write函數(shù)傳入的參數(shù)可以獲得所寫文件的 structfile指針,使用 dentry_path_raw函數(shù)可以得到該file對象對應的絕對路徑,然后使用strcmp函數(shù)比較該路徑是否為鬧鐘文件的路徑。用設置鬧鐘的hour值當做用戶的輸入,讀取hour值的主要流程如圖2所示。

        圖2 讀取鬧鐘時間流程圖

        2.3輸出界面的設計與實現(xiàn)

        輸出界面用來顯示麥克風、藍牙和ADB的當前開關狀態(tài),需要在手表自帶應用中找到一個合適的位置來顯示內核狀態(tài)信息,為了不影響手表軟件原有功能,最好找一個顯示一些固定靜態(tài)信息的頁面。通過分析現(xiàn)有應用,找到Settings下面的About界面,該頁面顯示手表系統(tǒng)的一些固定信息,比如Model、設備名、軟件版本等,其中有一項是Regulatory Information(監(jiān)管信息),點擊該項后,顯示如圖3所示頁面,從外觀看,該頁面顯示的應該是一個固定的圖片。當上層應用讀取該圖片內容時,會調用底層內核文件系統(tǒng)中的vfs_read函數(shù),通過修改返回的內容,使得該頁面顯示想要顯示的信息。

        圖3 Regulatory Information頁面截圖

        2.3.1查找Regulatory Information圖片的路徑

        使用dex2jar工具將安裝包中的classes.dex反編譯為classes_dex2jar.jar,然后使用jd-jui可視化工具打開classes_ dex2jar.jar,根據(jù)包名找到DeviceInfoListActivity類的定義,在該類中找到和Regulatoryinformation有關的代碼,發(fā)現(xiàn)點擊RegulatoryInformation時,程序跳轉到RegulatoryInformationActivity類中,該類的onCreate函數(shù)如下:

        public void onCreate(Bundle paramBundle)

        {super.onCreate(paramBundle);

        setContentView(2130903057);

        ((ImageView)findViewById(2131492945)).setImageBitmap(BitmapFactory.decod

        eFile("/system/etc/regulatory_info.png"));}

        從代碼中可以看出,該頁面顯示的是一個ImageView控件,該控件對應的圖片路徑為/system/etc/regulatory_info.png,即是要找的圖片。

        2.3.2使用BMP圖片替換PNG圖片

        壓縮格式的PNG不利于使用代碼對其修改,為了方便修改圖片的顯示內容,使用格式最簡單的BMP位圖文件。需要修改vfs_read函數(shù),當讀取的文件為/system/etc/regulatory_info.png時,將bmpdata數(shù)組中的數(shù)據(jù)拷貝到用戶端,這樣當用戶查看手表監(jiān)管信息時,將會顯示所需位圖。

        2.3.3修改位圖內存數(shù)據(jù)

        為了在位圖中顯示信息,需要修改bmpdata[]數(shù)組中的數(shù)據(jù),修改BMP文件的圖形數(shù)據(jù)區(qū)域。對于256色位圖,每個像素點使用8位二進制數(shù)表示,這8位二進制表示的是顏色表中的一個顏色索引。顏色表用來描述位圖中的顏色,它有若干個表項,每個表項代表一種顏色,使用RGBQUAD結構表示。

        在內核源碼/drivers/video/console/目錄下有很多字庫文件,使用其中的font_sun12x22.c文件。它使用寬為12像素,高為22像素的矩陣表示一個字符。位圖數(shù)據(jù)區(qū)記錄了位圖中每個像素的顏色,其掃描順序為從左到右,從下到上。要想在位圖中顯示字符,還需要知道每個字符對應的像素矩陣。

        3 實驗與測試

        3.1實驗目標

        通過設置鬧鐘為特定時間,對內核數(shù)據(jù)端口進行開關控制,并可以從Regulatory Information查看內核數(shù)據(jù)端口的狀態(tài)。

        鬧鐘時間與數(shù)據(jù)端口開關的對應關系,如表1所示。

        表1 鬧鐘時間與端口開關對應關系表

        設計的輸出界面只能顯示數(shù)字和英文字符,在顯示時同時顯示三個數(shù)據(jù)端口的狀態(tài),用MIC表示麥克風,用BT表示藍牙,ADB表示ADB。用0表示關閉狀態(tài),用1表示打開狀態(tài)?!癕IC:0BT:1ADB:1”表示麥克風處于關閉狀態(tài),藍牙處于打開狀態(tài),ADB處于打開狀態(tài)。

        3.2測試

        3.2.1麥克風的測試

        正常情況下,用手指點擊手表屏幕,手表進入喚醒狀態(tài),此時只要說“OK Google”,手表就會做出反應。

        關閉麥克風:通過設置鬧鐘為11點將麥克風關閉,然后再對手表說“OK,Google”,手表沒有反應,由此可以證明麥克風功能已經成功關閉。同時,可以在Regulatory Information中看到麥克風端口狀態(tài)為0。

        打開麥克風:通過設置鬧鐘為1點重新打開麥克風,可以在RegulatoryInformation界面看到麥克風的狀態(tài)為1,此時對手表說“OK,Google”,手表重新恢復響應。

        3.2.2藍牙的測試

        正常情況下,手機可以和手表建立藍牙連接,當連接時,手機上會提示連接密碼確認。

        關閉藍牙:通過設置鬧鐘為12點將藍牙關閉,手表與藍牙的連接斷開,且再次連接手表時,顯示無法和手表通信,因此可以證明藍牙功能已成功關閉。

        打開藍牙:通過設置鬧鐘為2點將藍牙重新打開,此時手表并不會自動和手機建立藍牙連接,需要在手表上點擊手表設置中的Bluetoothdevices,它會提示重新啟動藍牙,點擊確認按鈕之后手表與手機會自動建立連接。

        3.2.3ADB的測試

        關閉ADB:如圖4所示,在正常情況下,電腦可以通過ADB命令和手表通信,通過設置鬧鐘為13點將ADB關閉,當前的ADB連接會立刻斷開,且當再次輸入adbshell命令時,會顯示Devicenotfound,因此可以證明ADB功能已成功關閉。

        圖4 ADB開關測試圖

        打開ADB:通過設置鬧鐘為3點將ADB再次打開后,此時輸入adbshell,無法連接手表,需要拔下數(shù)據(jù)線再重新插上,再使用adbshell,可再次連接到手表。

        4 結 論

        Android Wear系統(tǒng)是谷歌專為智能手表等可穿戴設備設計的系統(tǒng),出于碎片化的擔心,谷歌并沒有開放Android Wear的系統(tǒng)源碼,因此本文提出一種從內核層對可能造成數(shù)據(jù)安全問題的三個端口進行開關控制,從而起到數(shù)據(jù)保護的作用。通過對麥克風、藍牙和ADB工作原理的分析,在內核層實現(xiàn)了對這三個數(shù)據(jù)端口的開關控制。同時,設計了用戶交互界面,使得用戶可以方便地輸入指令,控制內核對三個數(shù)據(jù)端口進行開關切換,同時內核還可以將數(shù)據(jù)端口的開關狀態(tài)顯示給用戶。

        最后通過測試證明了本技術方案可以對各數(shù)據(jù)端口進行有效控制,實現(xiàn)了對數(shù)據(jù)的保護。課題使用LGGWatch智能手表作為對象進行實驗,由于不同的硬件平臺對應的驅動程序可能不同,預裝的應用程序也可能存在差異,所以在移植性上還存在不足,這是今后努力的一個方向。另外,目前指令的輸入還缺少用戶身份識別模塊,如何對用戶進行有效的身份識別是另一個需要研究的方向。

        [1]徐尤華,熊傳玉.Android應用的反編譯[J].電腦與信息技術,2012(1):50-51.

        [2]蔡潔.基于高通平臺的Android系統(tǒng)分區(qū)管理[J].硅谷,2014(19):44-46.

        [3]張歡慶,高麗,宋承祥.基于ARM的嵌入式Linux交叉編譯環(huán)境的研究與實現(xiàn)[J].計算機與數(shù)字工程,2012(2):151-153.

        [4]夏盛新.基于Android的移動開放平臺SDK的設計與實現(xiàn)[D].西安:西安電子科技大學,2014.

        [5]SCHMIDT A D,BYE R,SCHMIDT H G,et al.Static analysis of executables for collaborative malware detection on Android[C]//Proceedings of 2009 IEEE International Conference on Communications.Dresden:IEEE,2009:1-5.

        [6]金智義,張戟.嵌入式Android系統(tǒng)的啟動研究[J].佳木斯大學學報(自然科學版),2011(4):521-523.

        [7]王景存,高峰.基于ARM9的Bootloader的分析及設計[J].現(xiàn)代電子技術,2010,33(2):44-46.

        [8]蔡潔.基于高通平臺的Android系統(tǒng)分區(qū)管理[J].硅谷,2014(19):44-46.

        Research on Android Wear based data security protection technology for intelligent device

        LI Hui
        (Department of Computer Science and Information Technology,Liupanshui Normal University,Liupanshui 553001,China)

        With the development of mobile technology and promotion of intelligent operating system,some hidden dangers in data security also occurred in the intelligent devices while they were providing the convenience for their users.For the Android Wear smart watch,a data protection technology is presented,which can protect the data in the watch by means of switch control in Linux kernel level to control the data ports of microphone,Bluetooth and ADB.This technology uses two different approaches to control the three data ports.A user interaction method of kernel program was implemented,which can intercept the specific files′read-write operation of the user layer program in file system drive program,display the current switch status of the data ports,and control the switch status without increasing or modifying the application layer program.The feasibility of this technology was verified with experiment.

        Android Wear;smart watch;data protection;data port switch control

        TN92-34;TM417

        A

        1004-373X(2016)19-0020-05

        10.16652/j.issn.1004-373x.2016.19.005

        2015-12-01

        貴州省教育部基金項目:基于計算思維的“計算機科學導論”教學模式改革研究與實踐(GZSJG10977201404)

        李惠(1985—),女,山東泰安人,工學碩士,講師。從事計算機網絡(Android軟件開發(fā))研究。

        猜你喜歡
        麥克風內核鬧鐘
        多彩創(chuàng)意鬧鐘
        強化『高新』內核 打造農業(yè)『硅谷』
        天然鬧鐘
        Binaural Rendering based on Linear Differential Microphone Array and Ambisonic Reproduction
        小鬧鐘的提醒
        能幫我設個鬧鐘不等四則
        基于嵌入式Linux內核的自恢復設計
        基于數(shù)字麥克風的WIFI語音發(fā)射機
        Linux內核mmap保護機制研究
        麥克風的藝術
        老熟妇高潮喷了╳╳╳| 日本区一区二区三视频 | 日本a级一级淫片免费观看| 国产福利一区二区三区在线视频| 亚洲日韩av一区二区三区中文| 久久久久久好爽爽久久| 欧美亚洲国产精品久久高清 | 男女高潮免费观看无遮挡| 日韩av在线手机免费观看| 风情韵味人妻hd| 国产手机在线αⅴ片无码观看| 国产欧美日韩综合在线一区二区| 国产精品亚洲美女av网站| 视频在线亚洲视频在线| 夜晚黄色福利国产精品| 亚洲欧美日韩成人高清在线一区| 国外亚洲成av人片在线观看| 国产女人91精品嗷嗷嗷嗷| 亚洲国产精品美女久久久| 视频一区精品中文字幕| 日本免费在线不卡一区二区| 国产农村乱辈无码| 一本一本久久a久久精品综合麻豆| 久久久久久久中文字幕| 亚洲国产成人aⅴ毛片大全| 国产亚洲精品综合在线网站| 欧美性受xxxx黑人猛交| 丰满爆乳在线播放| 九九九精品成人免费视频小说| 日韩av无卡无码午夜观看| 国产一区二区三区青青草 | 人妻体体内射精一区中文字幕| 欧美老妇交乱视频在线观看| 在线播放免费播放av片| 丝袜足控一区二区三区 | 欧美国产激情二区三区| 五十路丰满中年熟女中出| 欧美日韩性高爱潮视频| 亚洲国产精品色一区二区 | 国产高潮精品一区二区三区av| 国产亚洲精品97在线视频一|