本發(fā)明涉及信息安全技術領域,特別涉及一種針對iPhone百度地圖導航路徑的提取方法。
背景技術:
隨著移動通信技術所提供服務水平和服務種類的不斷提高和擴充,手機已日益成為人們工作生活中不可或缺的聯系工具,然而與此同時,利用手機進行詐騙、誹謗和偽造等犯罪活動也屢見不鮮。手機取證正是打擊這類犯罪的一個有效手段。從概念上講手機取證就是從手機SIM卡手機內/外置存儲卡以及移動網絡運營商數據庫中收集、保全和分析相關的電子證據,并最終從中獲得具有法律效力、能被法庭所接受的證據的過程。目前牽涉到手機的犯罪行為大致有三種:一是在犯罪行為的實施過程中使用手機來充當通信聯絡工具;二是手機被用作一種犯罪證據的存儲媒質;最后一種方式是手機被當作短信詐騙、短信騷擾和病毒軟件傳播等新型手機犯罪活動的實施工具。這些都充分地表明進行手機取證技術的相關研究對于維持社會穩(wěn)定、保障人民權益和打擊犯罪行為具有充分的必要性和極大的迫切性。
百度地圖是在中國地區(qū)使用非常廣泛的地圖導航類手機應用,基于龐大的用戶量,針對百度地圖數據的恢復就更加具有普遍性的意義。而目前針對百度地圖定位痕跡數據的恢復都是對百度地圖中某一些包含的定位信息的文件進行恢復,這種恢復是單點式的恢復,通常而言只能恢復用戶到達過的地點,并不能構建出真實的用戶運動軌跡。而針對電子取證而言數據的完整性是非常重要的一個環(huán)節(jié),這種單點式恢復定位痕跡的方法無疑是具有缺陷的,它無法滿足數據的完整性。
技術實現要素:
本發(fā)明針對現有技術的缺陷,提供了一種針對iPhone百度地圖導航路徑的提取方法,能有效的解決上述現有技術存在的問題。
一種針對iPhone百度地圖導航路徑的提取方法,包括以下步驟:
S1:iPhone應用實體映射信息獲??;
S2:百度地圖數據包準備;
S3:百度地圖導航路徑數據提??;
S4:百度地圖導航足跡提??;
S5:導航軌跡和導航足跡關聯解析;
S6:導航軌跡可視化展現。
作為優(yōu)選,所述S1的具體步驟如下:
S10:創(chuàng)建應用信息實體,實體至少應當包含應用數據區(qū)域路徑,應用包名,創(chuàng)建應用實體信息集合L;
S11:啟動iTunes服務“Apple Mobile Device Service”,若啟動成功執(zhí)行S12,若失敗則結束;
S12:調用iTunes服務提供接口“AFCFileInfoOpen”訪問文件夾“private/var”和“Applications”目錄,若都能夠訪問成功,則執(zhí)行S13,否則結束;
S13:提取應用數據,調用iTunes服務提供接口“AFCFileRefOpen”對該目錄“/private/var/mobile/Containers/Data/Application”進行循環(huán)遍歷,若存在結果則執(zhí)行S14;否者遍歷結束執(zhí)行S2;
S14:當遍歷存在文件夾時,記錄為p,創(chuàng)建應用實體PE,將PE的應用數據區(qū)域路徑設置為“/private/var/mobile/Containers/Data/Application”+“/”+p;
S15:調用“AFCFileRefOpen”,訪問“/private/var/mobile/Containers/Data/Application”+“/”+p+“/Library/Preferences”目錄,獲取該目錄下面的.plist文件,直接讀取文件的方式獲取該文件的文件名,記為pkgname,pkgname就是文件夾p對應的真實應用包名;將PE的應用包名設置pkgname,并將PE加入合集L;
S16:執(zhí)行S13繼續(xù)遍歷。
作為優(yōu)選,所述S2的詳細步驟如下:
S21:判斷L的實體集合之中是否包含應用信息實體;若包含執(zhí)行S22,若不包含則結束;
S22:循環(huán)遍歷應用信息實體集合L,并獲取信息實體的包名字段數據記錄為pkg,當pkg與“com.baidu.map”字符串匹配時,記錄該實體為Ebaidu,執(zhí)行S23,否則繼續(xù)遍歷,當遍歷結束仍舊未執(zhí)行S23,代表該手機不存在百度地圖應用,結束;
S23:獲取Ebaidu中記錄的應用路徑,記為Pbaidu,調用iTunes服務提供接口“AFCFileInfoOpen”,對Pbaidu執(zhí)行遍歷,若存在結果執(zhí)行S24,否者遍歷結束執(zhí)行S3;
S24:調用iTunes服務提供接口“AFCFileRefRead”對遍歷結果執(zhí)行拷貝文件操作,拷貝到任意本地文件夾,記錄本地文件夾名為localpath;
S25:循環(huán)調用“AFCFileInfoOpen”完成對百度地圖所有數據的完整拷貝。
作為優(yōu)選,所述S3的詳細步驟如下:
S30:創(chuàng)建導航實體類,其中至少應當包含以下字段:起始點經度、起始點緯度、結束點經度、結束點緯度、導航起始時間、關聯足跡文件名和足跡集合,創(chuàng)建導航數據集合NL,用于存放多個導航實體類;
S31:遍歷localpath目錄,當存在數據時記錄數據為lp,若不存在則結束;
S32:對lp進行字符串比較,當lp等值于“Documents”時,執(zhí)行S33,否則繼續(xù)執(zhí)行S31;
S33:構建導航路目錄:localpath+“Documents/trackDB.sqlite”,直接調用文件判定方法,判斷trackDB.sqlite文件是否存在,當存在時執(zhí)行S34,當不存在時執(zhí)行S4;
S34:加載數據庫解析方案,讀取表:ZBMTRACKCAR、ZRACKWALK,ZBMTRACKCUSTOM的數據,獲取該表的游標,對游標進行數據遍歷,當存在數據時執(zhí)行S35,不存在數據時執(zhí)行S4;
S35:創(chuàng)建導航實體類N,獲取該表的ZCTIME、ZENDLAT、ZENDLON、ZSTARTLAT、ZSTARTLON、ZGUID字段的值;同時將這些值分別賦值給導航實體類N中的導航起始時間、結束緯度、結束經度、起始緯度、起始經度、足跡文件關聯文件名字段;
S36:將N加入導航數據實體集合NL然后執(zhí)行S34,繼續(xù)遍歷獲取數據。
作為優(yōu)選,所述S4的詳細步驟如下:
S40:創(chuàng)建足跡實體類,其中至少應當包含經度,緯度字段,同時創(chuàng)建足跡映射map集合M,M的鍵是導航足跡文件名,值是關于導航足跡的實體集合;
S41:構建導航足跡文件目錄:localpath+“Documents/footMark/”,遍歷該目錄,當存在結果時,記錄結果為R,執(zhí)行S42,不存在結果時執(zhí)行S5;
S42:R是導航足跡文件,同時也是一個標準的excel文件,每一行代表導航之中經過的每一個地理位置;excel文件的第一列是足跡的經度,第二列是足跡的緯度,直接調用文件類方法,獲取R文件的文件名記錄為fmp,創(chuàng)建足跡實體集合fml;
S43:調用第三方excel解析控件,列如Workbook、npoi等,以文件的每行為基礎,循環(huán)解析excel文件R,當存在數據時執(zhí)行S44,不存在數據時,對M進行設置值,鍵為fmp,值為fml,然后再執(zhí)行S41;
S44:創(chuàng)建導航足跡實體FM,將解析到的第一列設置為fm的經度,第二列設置為fm緯度,并將fm加入到fml中;
S45:繼續(xù)執(zhí)行S43,繼續(xù)解析下一行的數據。
作為優(yōu)選,所述S5的詳細步驟如下:
S51:判斷NL是否有數據,當NL集合存在數據時遍歷NL,記錄結果為navi,并執(zhí)行S52,否則結束;
S52:獲取NL中保存的關聯足跡文件名記錄為nl_fm;
S53:直接以nl_fm為鍵獲取M中對應的結果,當獲取結果存在時,記錄為m_fm執(zhí)行S54,否則執(zhí)行S51;
S54:將m_fm作為navi的足跡集合字段保存,然后執(zhí)行S51。
作為優(yōu)選,S6的詳細步驟如下:
S61:當集合NL存在數據時,遍歷NL,記錄結果為shownavi,并執(zhí)行S62,當不存在數據時執(zhí)行S65;
S62:獲取shownavi數據中的起點經緯度坐標,終點經緯度坐標;起點和終點的經緯度坐標均采用摩卡托坐標形式保存,采用摩卡托坐標系逆向解析方案,獲取到對應地圖上的導航軌跡的起點和終點的經緯度坐標,解析結束之后,在地圖上標注該條導航的起點和終點;
S63:獲取shownavi的足跡集合字段值,并記為showfoot,判斷showfoot是否存在數據,當存在數據時執(zhí)行S64;不存在時,將起點與終點坐標進行連接,形成導航軌跡并執(zhí)行S61;
S64:對該軌跡進行軌跡準確性修正,其詳細步驟如下:
S641:通過遍歷showfoot,獲取到該集合中保存的足跡實體,記為foot,并執(zhí)行S642,不存在數據時,執(zhí)行S644操作;
S642:獲取foot中保存的足跡經度和緯度,形成一個足跡坐標,該坐標采用摩卡托坐標形式保存,采用摩卡托坐標系逆向解析方案,獲取到對應地圖上的真實坐標;
S643:在地圖上執(zhí)行足跡坐標的標注,并繼續(xù)執(zhí)行S641操作;
S644:足跡集合解析結束,將地圖中標注的坐標點根據解析的順序連接起來,從而完成導航軌跡的準確性修正。經過修正可以直觀的在地圖上展示出用戶在該條導航軌跡中經過的每一個足跡點;
S65:結束解析。
與現有技術相比本發(fā)明的優(yōu)點在于:全面解析iPhone手機百度地圖的數據,準確的找到導航路徑和導航足跡的數據,并完成軌跡可視化展現;可以幫助公安機關快速了解iPhone手機持有人的行動軌跡,提高辦案效率,幫助破案。
具體實施方式
為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下舉實施例,對本發(fā)明做進一步詳細說明。
一種針對iPhone百度地圖導航路徑的提取方法,包括以下步驟:
S1:iPhone應用實體映射信息獲??;
S2:百度地圖數據包準備;
S3:百度地圖導航路徑數據提??;
S4:百度地圖導航足跡恢復;
S5:導航軌跡和導航足跡關聯解析;
S6:導航軌跡可視化展現。
所述S1的具體步驟如下:
S10:創(chuàng)建應用信息實體,實體至少應當包含應用數據區(qū)域路徑,應用包名,創(chuàng)建應用實體信息集合L;
S11:針對iphone手機數據的提取是建立在iphone管理工具iTunes服務提供的接口之上的,首先需要啟動iTunes服務“Apple Mobile Device Service”,若啟動成功執(zhí)行S12,若失敗則結束;
S12:調用iTunes服務提供接口“AFCFileInfoOpen”訪問文件夾“private/var”和“Applications”目錄,若都能夠訪問成功,則執(zhí)行S13,否則結束;
S13:提取應用數據,“/private/var/mobile/Containers/Data/Application”目錄下面保存手機中包含的所有應用數據,每一個應用對應一個獨立的文件夾;調用iTunes服務提供接口“AFCFileRefOpen”對該目錄進行循環(huán)遍歷,若存在結果則執(zhí)行S14;否者遍歷結束執(zhí)行S2;
S14:當遍歷存在文件夾時,記錄為p,創(chuàng)建應用實體PE,將PE的應用數據區(qū)域路徑設置為“/private/var/mobile/Containers/Data/Application”+“/”+p;
S15:調用“AFCFileRefOpen”,訪問“/private/var/mobile/Containers/Data/Application”+“/”+p+“/Library/Preferences”目錄,獲取該目錄下面的.plist文件,直接讀取文件的方式獲取該文件的文件名,記為pkgname,pkgname就是文件夾p對應的真實應用包名;將PE的應用包名設置pkgname,并將PE加入合集L;
S16:執(zhí)行S13繼續(xù)遍歷。
S2的詳細步驟如下:
S21:判斷L的實體集合之中是否包含應用信息實體;若包含執(zhí)行S22,若不包含則結束;
S22:循環(huán)遍歷應用信息實體集合L,并獲取信息實體的包名字段數據記錄為pkg,當pkg與“com.baidu.map”字符串匹配時,記錄該實體為Ebaidu,執(zhí)行S23,否則繼續(xù)遍歷,當遍歷結束仍舊未執(zhí)行S23,代表該手機不存在百度地圖應用,結束;
S23:獲取Ebaidu中記錄的應用路徑,記為Pbaidu,調用iTunes服務提供接口“AFCFileInfoOpen”,對Pbaidu執(zhí)行遍歷,若存在結果執(zhí)行S24,否者遍歷結束執(zhí)行S3;
S24:調用iTunes服務提供接口“AFCFileRefRead”對遍歷結果執(zhí)行拷貝文件操作,拷貝到任意本地文件夾,記錄本地文件夾名為localpath;
S25:循環(huán)調用“AFCFileInfoOpen”完成對百度地圖所有數據的完整拷貝。
S3的詳細步驟如下:
S30:創(chuàng)建導航實體類,其中至少應當包含以下字段:起始點經度、起始點緯度、結束點經度、結束點緯度、導航起始時間、關聯足跡文件名和足跡集合(一個保存足跡的字段,因足跡是由很多數據組成的,所以需要這個集合字段),創(chuàng)建導航數據集合NL,用于存放多個導航實體類;
S31:遍歷localpath目錄,當存在數據時記錄數據為lp,若不存在則結束;
S32:對lp進行字符串比較,當lp等值于“Documents”時,執(zhí)行S33,否則繼續(xù)執(zhí)行S31;
S33:構建導航路目錄:localpath+“Documents/trackDB.sqlite”,直接調用文件判定方法,判斷trackDB.sqlite文件是否存在,當存在時執(zhí)行S34,當不存在時執(zhí)行S4;
S34:trackDB.sqlite包含ZBMTRACKCAR(駕車導航)、ZBMTRACKCUSTOM(普通導航)、ZRACKWALK(步行導航)三個關于導航數據的表。由于三張表結構完全一致,因此提取方式統一如下所描述;
加載任意數據庫解析方案,讀取表:ZBMTRACKCAR、ZRACKWALK,ZBMTRACKCUSTOM的數據,獲取該表的游標,對游標進行數據遍歷,當存在數據時執(zhí)行S35,不存在數據時執(zhí)行S4;
S35:創(chuàng)建導航實體類N,獲取該表的ZCTIME、ZENDLAT、ZENDLON、ZSTARTLAT、ZSTARTLON、ZGUID字段的值;同時將這些值分別賦值給導航實體類N中的導航起始時間、結束緯度、結束經度、起始緯度、起始經度、足跡文件關聯文件名字段;
S36:將N加入導航數據實體集合NL然后執(zhí)行S34,繼續(xù)遍歷獲取數據。
S4的詳細步驟如下:
S40:導航數據的關聯軌跡恢復是針對百度地圖導航過程中沿途記錄的足跡進行數據恢復。創(chuàng)建足跡實體類,其中至少應當包含經度,緯度字段。同時創(chuàng)建足跡映射map集合M,M的鍵是導航足跡文件名,值是關于導航足跡的實體集合;
S41:構建導航足跡文件目錄:localpath+“Documents/footMark/”,遍歷該目錄,當存在結果時,記錄結果為R,執(zhí)行S42,不存在結果時執(zhí)行S5;
S42:R是導航足跡文件,同時也是一個標準的excel文件,每一行代表導航之中經過的每一個地理位置;excel文件的第一列是足跡的經度,第二列是足跡的緯度,直接調用文件類方法,獲取R文件的文件名記錄為fmp,創(chuàng)建足跡實體集合fml;
S43:調用第三方excel解析控件,列如Workbook、npoi等,以文件的每行為基礎,循環(huán)解析excel文件R,當存在數據時執(zhí)行S44,不存在數據時,對M進行設置值,鍵為fmp,值為fml,然后再執(zhí)行S41;
S44:創(chuàng)建導航足跡實體FM,將解析到的第一列設置為fm的經度,第二列設置為fm緯度,并將fm加入到fml中;
S45:繼續(xù)執(zhí)行S43,繼續(xù)解析下一行的數據。
S5的詳細步驟如下:
經過步驟三和步驟四,得到導航數據集合NL,和導航足跡map集合M。
S51:當NL集合存在數據時,遍歷NL,記錄結果為navi,并執(zhí)行S52,否則結束;
S52:獲取NL中保存的關聯足跡文件名記錄為nl_fm;
S53:直接以nl_fm為鍵獲取M中對應的結果,當獲取結果存在時,記錄為m_fm執(zhí)行S54,否則執(zhí)行S51;
S54:將m_fm作為navi的足跡集合字段保存,然后執(zhí)行5.1操作。
S6的詳細步驟如下:
經過以上步驟獲取到完整的導航數據集合NL,該集合中包含了百度地圖所有的導航軌跡數據,以及對應的導航足跡點,通過以下步驟將數據進行可視化恢復。
S61:當集合NL存在數據時,遍歷NL,記錄結果為shownavi,并執(zhí)行S62,當不存在數據時執(zhí)行S65;
S62:獲取shownavi數據中的起點經緯度坐標,終點經緯度坐標;起點和終點的經緯度坐標均采用摩卡托坐標形式保存,采用摩卡托坐標系逆向解析方案,獲取到對應地圖上的導航軌跡的起點和終點的經緯度坐標,解析結束之后,在地圖上標注該條導航的起點和終點;
S63:獲取shownavi的足跡集合字段值,并記為showfoot,判斷showfoot是否存在數據,當存在數據時執(zhí)行S64;不存在時,將起點與終點坐標進行連接,形成導航軌跡并執(zhí)行S61;
S64:由于該條導航軌跡存在足跡點,因此開始對該軌跡進行軌跡準確性修正,其詳細步驟如下:
S641:通過遍歷showfoot,獲取到該集合中保存的足跡實體,記為foot,并執(zhí)行S642,不存在數據時,執(zhí)行S644操作;
S642:獲取foot中保存的足跡經度和緯度,形成一個足跡坐標,該坐標采用摩卡托坐標形式保存,采用摩卡托坐標系逆向解析方案,獲取到對應地圖上的真實坐標。
S643:在地圖上執(zhí)行足跡坐標的標注,并繼續(xù)執(zhí)行S641操作;
S644:足跡集合解析結束,將地圖中標注的坐標點根據解析的順序連接起來,從而完成導航軌跡的準確性修正。經過修正可以直觀的在地圖上展示出用戶在該條導航軌跡中經過的每一個足跡點;
S65:結束解析。
本領域的普通技術人員將會意識到,這里所述的實施例是為了幫助讀者理解本發(fā)明的實施方法,應被理解為本發(fā)明的保護范圍并不局限于這樣的特別陳述和實施例。本領域的普通技術人員可以根據本發(fā)明公開的這些技術啟示做出各種不脫離本發(fā)明實質的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護范圍內。