一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法
【專利摘要】本發(fā)明公開了一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,包括以下步驟:S1:高德地圖開放接口版本判斷;S2:智能手機移動應(yīng)用關(guān)聯(lián),獲取關(guān)于智能手機的基本信息;S3:高德接口產(chǎn)生的緩存定位痕跡數(shù)據(jù)提??;S4:高德接口緩存加密痕跡數(shù)據(jù)解密操作;S5:逆解析定位痕跡。本發(fā)明的有益效果如下:擴展了智能手機定位痕跡的取證內(nèi)容,使得取證結(jié)果更加的全面、完整、有效和可信;應(yīng)用廣泛,使得數(shù)據(jù)提取的對象得到擴展;產(chǎn)生的數(shù)據(jù)具有相似規(guī)律,結(jié)構(gòu)統(tǒng)一,便于數(shù)據(jù)提取;產(chǎn)生的部分數(shù)據(jù)不需Root,任意手機均可提取。
【專利說明】
一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別涉及一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法。
【背景技術(shù)】
[0002]目前基于智能手機應(yīng)用定位權(quán)限的濫用和應(yīng)用本地化特色的原因,定位痕跡權(quán)限的使用越來越廣泛,這種情況使得用戶的位置信息十分容易暴露。同時基于產(chǎn)品正規(guī)化,數(shù)據(jù)安全意識的覺醒,一些移動應(yīng)用開發(fā)商開始對應(yīng)用重要數(shù)據(jù)實行加密。目前市面上針對定位痕跡取證的產(chǎn)品才開始起步,并沒有做到深度數(shù)據(jù)挖掘,但是就電子取證而言,數(shù)據(jù)的完整性是至關(guān)重要的一環(huán),因此定位痕跡數(shù)據(jù)提取的門檻開始增高,但還沒有針對高德地圖接口緩存加密痕跡數(shù)據(jù)提取的技術(shù)出現(xiàn)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明針對現(xiàn)有技術(shù)的缺陷,提供了一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,能有效的解決上述現(xiàn)有技術(shù)存在的問題。
[0004]—種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,包括以下步驟:
[0005]S1:高德地圖開放接口版本判斷;
[0006]S2:智能手機移動應(yīng)用關(guān)聯(lián),獲取關(guān)于智能手機的基本信息,它包含手機狀態(tài),應(yīng)用信息,sd卡應(yīng)用關(guān)聯(lián)等;
[0007]S3:高德接口產(chǎn)生的緩存定位痕跡數(shù)據(jù)提??;
[0008]S4:高德接口緩存加密痕跡數(shù)據(jù)解密操作;
[0009]S5:逆解析定位痕跡。
[0010]作為優(yōu)選,所述SI包含兩個部分,第一部分為DATA數(shù)據(jù)區(qū)域判斷接口版本,第二部分為SD卡應(yīng)用數(shù)據(jù)區(qū)域判斷接口版本;
[0011]data分區(qū)高德接口版本判定:建立標志DF,傳入文件,當傳入文件名是“l(fā)ast_know_locat1n”是舊接口,DF定義為False,當傳入文件名是“l(fā)ast_known_locat1n”為新接口,DF定義為True;
[0012]SD卡數(shù)據(jù)區(qū)域高德接口版本判定:建立標志SF,傳入文件,當傳入文件名是“l(fā)ocat1nCache”則為舊接口,SF定義為FaIse,當傳入文件名是“newLocat1nCache”為新接口,SF定義為True ο
[0013]作為優(yōu)選,所述S2的詳細步驟如下:
[0014]S21:獲取手機應(yīng)用的基本信息;
[0015]S22:手機Root權(quán)限判定,判定手機是否root,創(chuàng)建記錄標志Fl。
[0016]作為優(yōu)選,所述S21的詳細步驟如下:
[0017]S211:創(chuàng)建手機應(yīng)用基本信息實體,實體結(jié)構(gòu)至少應(yīng)當包含應(yīng)用名、包名、對應(yīng)SD卡路徑、高德接口 data分區(qū)路徑、高德接口 SD卡數(shù)據(jù)分區(qū)路徑、以及Data分區(qū)痕跡數(shù)據(jù)是否加密和SD應(yīng)用分區(qū)痕跡數(shù)據(jù)是否加密;
[0018]S212:創(chuàng)建手機應(yīng)用基本信息實體集合用來保存手機中包含的應(yīng)用信息,并記錄實體為LI ;
[0019]S213:獲取手機應(yīng)用在SD卡中的數(shù)據(jù)區(qū)域,記錄路徑為pi,獲取方式有兩種,一種是直接使用android接口,還有一種是通過adb指令獲取外置SD卡路徑并自動追加“/android/data”形成人工構(gòu)造應(yīng)用SD卡應(yīng)用數(shù)據(jù)區(qū)路徑;
[0020]S214:遍歷pi 目錄;
[0021]S215:判斷該根目錄的子節(jié)點文件夾下是否包含高德地圖開發(fā)接口,若包含則創(chuàng)建基本信息實體pl,并記錄該包名pkgl,包名就是該目錄名,執(zhí)行高德地圖開放接口版本檢測,當監(jiān)測到是新版本時,記錄SF為True,當為舊版本時,記錄為False,并執(zhí)行S216;若不包含高德地圖開放接口時,重新執(zhí)行S214。
[0022]作為優(yōu)選,所述S22的詳細步驟如下:
[0023]S221:判定系統(tǒng)中是否包含SU文件,當不包含SU文件時,直接定義Fl為False,執(zhí)行S224;當包含su文件時執(zhí)行S222;
[0024]S222:調(diào)用原生接口,開啟PROCESS進程;
[0025]S223:執(zhí)行SHELL指令su,保存并執(zhí)行指令后的結(jié)果,當返回結(jié)果為O時,定義Fl為True,否則定義為False ;
[0026]S224:判斷Fl的標志,當Fl為True時執(zhí)行操作S225,否則執(zhí)行操作S226 ;
[0027]S225:構(gòu)建高德接口 data分區(qū)數(shù)據(jù)目錄,路徑為“data/data/” +包名+ “shared_pfes/”,執(zhí)行高德地圖版本判定,當是新版本時,記錄DF為True,低版本時記錄為False;
[0028]S226:構(gòu)建高德接口 sd卡默認數(shù)據(jù)區(qū)域路徑,當SF為False時路徑是pl+pkgl +“cache/locat1nCache” ;當SF為True時,路徑是pl+包名+“cache/newLocat1nCache”。
[0029]作為優(yōu)選,所述S3的詳細步驟如下:
[0030]S31:定義定位痕跡實體,定位痕跡實體至少應(yīng)當包含經(jīng)度,瑋度,時間,地址等信息;
[0031 ] S32:定義定位痕跡實體集合L2,用于存儲解析高德地圖開放接口所產(chǎn)生的定位痕跡數(shù)據(jù);
[0032]S33:遍歷應(yīng)用信息實體集合LI,當遍歷出來的應(yīng)用實體信息不為空時執(zhí)行S34;否則執(zhí)行S5;
[0033]S34:執(zhí)行高德地圖接口在Data數(shù)據(jù)區(qū)存儲的定位痕跡數(shù)據(jù)解析,根據(jù)DF標志判斷高德地圖接口產(chǎn)生的數(shù)據(jù)是否加密,當DF為False表示數(shù)據(jù)未加密,執(zhí)行S36操作,當為True時表示數(shù)據(jù)加密執(zhí)行S37操作;
[0034]S35:執(zhí)行高德地圖接口在SD卡數(shù)據(jù)區(qū)存儲的定位痕跡數(shù)據(jù)解析,根據(jù)SF標志判斷高德地圖接口產(chǎn)生的數(shù)據(jù)是否加密,當SF為False表示數(shù)據(jù)未加密,執(zhí)行S36操作,當為True時表示數(shù)據(jù)加密執(zhí)行S37操作;
[0035]S36:執(zhí)行高德地圖舊版本開放接口數(shù)據(jù)提??;
[0036]S37:執(zhí)行高德地圖新版本開放接口數(shù)據(jù)提取。
[0037]作為優(yōu)選,所述S36的詳細步驟如下:
[0038]S361:根據(jù)Fl標志判斷系統(tǒng)是否root,當是時執(zhí)行S362,當否時執(zhí)行S366步驟;
[0039]S362:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在Data分區(qū)的路徑。并拼接路徑“/last_know_locat 1nxml”,構(gòu)成完整的數(shù)據(jù)文件路徑;
[0040]S363:更改該路徑的權(quán)限,使其具有可讀可寫可操作的權(quán)限;
[0041 ] S364:利用開源接口,加載并解析該xml文件,獲取屬性值為last_know_lat,last_know_lng的text節(jié)點的值,該兩個值分別對應(yīng)瑋度和經(jīng)度;分別記為LATl和LONl;獲取第一個屬性值為time的第二的屬性值,該屬性值為該定位痕跡產(chǎn)生的時間,記為Timel ;
[0042]S365:判定LATl和LONl是否為空字符串,當為空字符串時丟棄,不為空字符串時,將獲取到的瑋度、經(jīng)度和時間保存到定位痕跡實體,并保存到L2中;
[0043 ] S366:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在SD分區(qū)的路徑;
[0044]S367:遍歷該路徑下的文件,使用正則表達式“<*\.0>”,對遍歷出來的文件的文件名進行篩選,當篩選出符合條件的文件時執(zhí)行S368,否則繼續(xù)遍歷,直到結(jié)束并執(zhí)行S5;
[0045]S368:篩選出來的文件是java序列化文件,利用開源方法,執(zhí)行反序列化操作,進行數(shù)據(jù)還原,將反序列化的內(nèi)容記作MAPI,當MAPI大小不為O時執(zhí)行S369,否則執(zhí)行S367;
[0046]S369:遍歷MAPI,獲取MAPI中的所有的值,當獲取的值不為空字符串,將其記作Dl并執(zhí)行S3610;為空字符串時跳過,繼續(xù)遍歷,直到遍歷結(jié)束執(zhí)行S367;
[0047]S3610: DI字符串是一個標準的j son數(shù)據(jù)結(jié)構(gòu),使用開源j son解析接口,對j son字符串的Iat、1n、time、desc字段進行解析;
[0048]S3611:對解析出來的經(jīng)度,瑋度進行空字符串判斷,當不為空字符串時,將信息保存到定位痕跡信息實體,并保存到L2中,然后執(zhí)行S369;當為空字符串時,直接執(zhí)行S369。
[0049]作為優(yōu)選,所述S37的詳細步驟如下:
[0050]S371:根據(jù)Fl標志判斷系統(tǒng)是否root,當是時執(zhí)行S372,當否時執(zhí)行S376步驟;
[0051]S372:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在Data分區(qū)的路徑;并拼接路徑“/last_known_locat1nxml”,構(gòu)成完整的數(shù)據(jù)文件路徑,以及獲取應(yīng)用信息實體中保存的當前應(yīng)用的包名記作Pkgl;
[0052]S373:更改該文件的權(quán)限,使該文件能夠可讀可寫可操作;
[0053]S374:利用開源解析Xml文件接口,加載并解析該xml文件,獲取屬性值為i,b,a的text節(jié)點的值,該三個值分別對應(yīng)瑋度、經(jīng)度、時間;分別記為LAT2、L0N2、Time2;
[0054]S375:判定LAT2,L0N2是否存儲數(shù)據(jù),當不存在時丟棄,存在數(shù)據(jù)時,將獲取到的瑋度、經(jīng)度、時間傳至S4并執(zhí)行,進行加密數(shù)據(jù)反解析操作,并記錄返回值DLAT2、DL0N2、DTime2并將獲取到的解密瑋度、經(jīng)度、時間、保存到定位痕跡實體,并保存到L2中;
[0055]S376:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在SD卡分區(qū)的路徑,以及當前應(yīng)用的包名記作PKG2;
[0056]S377:遍歷該路徑下的文件,使用正則表達式”〈*\0>”對遍歷出來的文件的文件名進行正則匹配。當篩選出符合條件的文件時執(zhí)行S378,否則繼續(xù)遍歷,直到結(jié)束并執(zhí)行S5;
[0057]S378:篩選出來的文件是java序列化文件,利用開源方法,執(zhí)行反序列化操作,進行數(shù)據(jù)還原,將反序列化的內(nèi)容記作MAP2,當MAP2的大小不為O時執(zhí)行S379,否則執(zhí)行S377;
[0058]S379:由于map集合是以鍵值對的形式存儲數(shù)據(jù),所以直接遍歷MAP2,獲取MAP2中的所有的值,當獲取的值不為空字符串,將其記作D2并執(zhí)行S3710;為空字符串時跳過,繼續(xù)遍歷,直到遍歷結(jié)束執(zhí)行S377 ;
[0059]S3710:D2為加密字符串,執(zhí)行S4,進行數(shù)據(jù)解密,并獲取解密結(jié)果DD2,該字符串是一個標準的j son數(shù)據(jù)結(jié)構(gòu),使用開源j son解析接口,對j son字符串的Iat、1n、time、desc字段進行解析,這些字符串分別對應(yīng)、瑋度、經(jīng)度、時間、真實地址;
[0060]S3711:對解析出來的經(jīng)度,瑋度進行空字符串判斷,當不為空字符串時,將信息保存到定位痕跡信息實體,并保存到L2中,然后執(zhí)行S379;當為空字符串時,直接執(zhí)行S379。[0061 ]作為優(yōu)選,S4的詳細步驟如下:
[0062]S41:將傳入的包名字符串轉(zhuǎn)化為UTF-8的字節(jié)數(shù)組;
[0063]S42:使用開源方法獲取該字節(jié)數(shù)組的MD5值,記作PK ;
[0064]S43:判斷PK的長度,當PK大于16位時,只取前16位長度,當PK小于16位時,在字符串的頭部添加‘0’,直到長度PK長度等于16;
[0065]S44:使用開源方法執(zhí)行AES解密操作,解密方式:“AES/ECB/ZeroBytePadding”,密鑰PK;
[0066]S45:逐步解密傳入的加密字符串,進行數(shù)據(jù)解密;
[0067]S46:返回解密結(jié)果。
[0068]作為優(yōu)選,S5的詳細步驟如下:
[0069]S51:判斷實體集合L2,當L2不存在數(shù)據(jù)時高德接口緩存定位痕跡數(shù)據(jù)不存在,結(jié)束解析;當存在數(shù)據(jù)時執(zhí)行S52操作;
[0070]S52:遍歷L2中的所有定位痕跡信息實體,記錄LOC;并執(zhí)行S53,遍歷結(jié)束便完成高德接口產(chǎn)生的緩存定位痕跡的解析;
[0071]S53:判斷LOC中的地址信息是否為空字符串,當為空字符串時執(zhí)行S54,當不為空字符串時執(zhí)行S52;
[0072]S54:根據(jù)傳入的經(jīng)度、瑋度以GCJ02坐標系進行地理位置逆解析,將解析結(jié)果直接保存在LOC中,執(zhí)行S52。
[0073]與現(xiàn)有技術(shù)相比本發(fā)明的優(yōu)點在于:擴展了智能手機定位痕跡的取證內(nèi)容,使得取證結(jié)果更加的全面、完整、有效和可信;應(yīng)用廣泛,使得數(shù)據(jù)提取的對象得到擴展;產(chǎn)生的數(shù)據(jù)具有相似規(guī)律,結(jié)構(gòu)統(tǒng)一,便于數(shù)據(jù)提取;產(chǎn)生的部分數(shù)據(jù)不需Root,任意手機均可提取。
【具體實施方式】
[0074]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下舉實施例,對本發(fā)明做進一步詳細說明。
[0075]—種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,包括以下步驟:
[0076]S1:高德地圖開放接口版本判斷;
[0077]S2:智能手機移動應(yīng)用關(guān)聯(lián),獲取關(guān)于智能手機的基本信息,它包含手機狀態(tài),應(yīng)用信息,sd卡應(yīng)用關(guān)聯(lián)等;
[0078]S3:高德接口產(chǎn)生的緩存定位痕跡數(shù)據(jù)提取;
[0079]S4:高德接口緩存加密痕跡數(shù)據(jù)解密操作;
[0080]S5:逆解析定位痕跡。
[0081]所述SI包含兩個部分,第一部分為DATA數(shù)據(jù)區(qū)域判斷接口版本,第二部分為SD卡應(yīng)用數(shù)據(jù)區(qū)域判斷接口版本;由于高德地圖于2015年升級接口,使得現(xiàn)在高德開放接口為兩套,舊的一套接口沒有加密,新的一套接口數(shù)據(jù)執(zhí)行了加密。
[0082]data分區(qū)高德接口版本判定:建立標志DF,根據(jù)傳入文件名來判斷接口版本,當傳入文件名是“l(fā)ast_know jocat1n”是舊接口,DF定義為FaIse,當傳入文件名是“l(fā)ast_known_locat1n” 為新接口,DF定義為True。
[0083]SD卡數(shù)據(jù)區(qū)域高德接口版本判定:建立標志SF,根據(jù)傳入文件名來判斷接口版本,當傳入文件名是“l(fā)ocat1nCache”則為舊接口,SF定義為Fal se,當傳入文件名是“newLocat1nCache” 為新接口,SF定義為True。
[0084]所述S2主要是獲取關(guān)于智能手機的一些基本信息、它包含手機狀態(tài),應(yīng)用信息,SD卡應(yīng)用關(guān)聯(lián)等操作。
[0085]S2的詳細步驟如下:
[0086]S21:獲取手機應(yīng)用的基本信息。
[0087]S211:創(chuàng)建手機應(yīng)用基本信息實體,實體結(jié)構(gòu)至少應(yīng)當包含應(yīng)用名,包名,對應(yīng)SD卡路徑,高德接口 data分區(qū)路徑,高德接口 SD卡數(shù)據(jù)分區(qū)路徑,以及Data分區(qū)痕跡數(shù)據(jù)是否加密和SD應(yīng)用分區(qū)痕跡數(shù)據(jù)是否加密(這里的加密方式指AES加密);
[0088]S212:創(chuàng)建手機應(yīng)用基本信息實體集合用來保存手機中包含的應(yīng)用信息,并記錄實體為LI ;
[0089]S213:獲取手機應(yīng)用在SD卡中的數(shù)據(jù)區(qū)域,記錄路徑為pl,獲取方式有兩種,一種是直接使用android接口,還有一種是通過adb指令獲取外置SD卡路徑并自動追加“/android/data”形成人工構(gòu)造應(yīng)用SD卡應(yīng)用數(shù)據(jù)區(qū)路徑;
[0090]S214:遍歷pl 目錄;
[0091]S215:判斷該根目錄的子節(jié)點文件夾下是否包含“cache/locat1nCache”,或者“cache/newLocat1nCache”目錄。這是由于高德地圖舊的開放接口和新的開放接口都在維護使用引起的。當包含高德地圖開放接口時,創(chuàng)建基本信息實體pl,并記錄該包名pkgl,包名就是該目錄名,執(zhí)行高德地圖開放接口版本檢測,當監(jiān)測到是新版本時,記錄SF為True,當為舊版本時,記錄為False,并執(zhí)行S216,當不包含高德地圖開放接口時,重新執(zhí)行S214。
[0092]S216:使用android接口獲取該應(yīng)用對應(yīng)的應(yīng)用名,并記錄到pl中。
[0093]S22:手機Root權(quán)限判定,判定手機是否root,創(chuàng)建記錄標志Fl。
[0094]S221:判定系統(tǒng)中是否包含su文件,當不包含su文件時,直接定義Fl為False,執(zhí)行S224;當包含su文件時執(zhí)行S222;
[0095]S222:調(diào)用原生接口,開啟PROCESS進程;
[0096]S223:執(zhí)行SHELL指令su,保存并執(zhí)行指令后的結(jié)果,當返回結(jié)果為O時,定義Fl為True,否則定義為False ;
[0097]S224:判斷Fl的標志,當Fl為True時執(zhí)行操作S225,否則執(zhí)行操作S226 ;
[0098]S225:構(gòu)建高德接口 data分區(qū)數(shù)據(jù)目錄,路徑為“data/data/” +包名+ “shared_pfes/”,執(zhí)行高德地圖版本判定,當是新版本時,記錄DF為True,低版本時記錄為False。
[0099]S226:構(gòu)建高德接口 sd卡默認數(shù)據(jù)區(qū)域路徑,當SF為False時路徑是pl+pkgl +“cache/locat1nCache”和當SF為True時,路徑是pl+包名+“cache/newLocat1nCache”。
[0100]S3的詳細步驟如下:
[0101]S31:定義定位痕跡實體,定位痕跡實體至少應(yīng)當包含經(jīng)度,瑋度,時間,地址等信息。
[0102]S32:定義定位痕跡實體集合L2,用于存儲解析高德地圖開放接口所產(chǎn)生的定位痕跡數(shù)據(jù)。
[0103]S33:遍歷應(yīng)用信息實體集合LI,當遍歷出來的應(yīng)用實體信息不為空時執(zhí)行S34操作。否則執(zhí)行操作五。
[0104]S34:執(zhí)行高德地圖接口在Data數(shù)據(jù)區(qū)存儲的定位痕跡數(shù)據(jù)解析,根據(jù)DF標志判斷高德地圖接口產(chǎn)生的數(shù)據(jù)是否加密,當DF為False表示數(shù)據(jù)未加密,執(zhí)行S36操作,當為True時表示數(shù)據(jù)加密執(zhí)行S37操作。
[0105]S35:執(zhí)行高德地圖接口在SD卡數(shù)據(jù)區(qū)存儲的定位痕跡數(shù)據(jù)解析,根據(jù)SF標志判斷高德地圖接口產(chǎn)生的數(shù)據(jù)是否加密,當SF為False表示數(shù)據(jù)未加密,執(zhí)行S36操作,當為True時表示數(shù)據(jù)加密執(zhí)行S37操作。
[0106]S36:執(zhí)行高德地圖舊版本開放接口數(shù)據(jù)提取。
[0107]S361:根據(jù)Fl標志判斷系統(tǒng)是否root,當是時執(zhí)行S362,當否時執(zhí)行S366步驟;
[0108]S362:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在Data分區(qū)的路徑。并拼接路徑“/last_know_locat1nxml”,構(gòu)成完整的數(shù)據(jù)文件路徑;
[0109]S363:更改該路徑的權(quán)限,使其具有可讀可寫可操作的權(quán)限;
[0?10] S364:利用開源接口,加載并解析該xml文件,獲取屬性值為last_know_lat,last_know_lng的text節(jié)點的值,該兩個值分別對應(yīng)瑋度和經(jīng)度;分別記為LATl和LONl;獲取第一個屬性值為time的第二的屬性值,該屬性值為該定位痕跡產(chǎn)生的時間,記為Timel ;
[0111]S365:判定LATl和LONl是否為空字符串,當為空字符串時丟棄,不為空字符串時,將獲取到的瑋度、經(jīng)度和時間保存到定位痕跡實體,并保存到L2中;
[0112]S366:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在SD分區(qū)的路徑;
[0113]S367:遍歷該路徑下的文件,使用正則表達式“<*\.0>”,對遍歷出來的文件的文件名進行篩選,當篩選出符合條件的文件時執(zhí)行S368,否則繼續(xù)遍歷,直到結(jié)束并執(zhí)行S5;
[0114]S368:篩選出來的文件是java序列化文件,利用開源方法,執(zhí)行反序列化操作,進行數(shù)據(jù)還原,將反序列化的內(nèi)容記作MAPI,當MAPI大小不為O時執(zhí)行S369,否則執(zhí)行S367;
[0115]S369:遍歷MAPI,獲取MAPI中的所有的值,當獲取的值不為空字符串,將其記作Dl并執(zhí)行S3610;為空字符串時跳過,繼續(xù)遍歷,直到遍歷結(jié)束執(zhí)行S367;
[0116]S3610: DI字符串是一個標準的j son數(shù)據(jù)結(jié)構(gòu),使用開源j son解析接口,對j son字符串的Iat、1n、time、desc字段進行解析;
[0117]S3611:對解析出來的經(jīng)度,瑋度進行空字符串判斷,當不為空字符串時,將信息保存到定位痕跡信息實體,并保存到L2中,然后執(zhí)行S369;當為空字符串時,直接執(zhí)行S369。
[0118]S37:執(zhí)行高德地圖新版本開放接口數(shù)據(jù)提取。
[0119]S371:根據(jù)Fl標志判斷系統(tǒng)是否root,當是時執(zhí)行S372,當否時執(zhí)行S376步驟;
[0120]S372:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在Data分區(qū)的路徑;并拼接路徑“/last_known_locat1nxml”,構(gòu)成完整的數(shù)據(jù)文件路徑,以及獲取應(yīng)用信息實體中保存的當前應(yīng)用的包名記作Pkgl;
[0121 ] S373:更改該文件的權(quán)限,使該文件能夠可讀可寫可操作;
[0122]S374:利用開源解析Xml文件接口,加載并解析該xml文件,獲取屬性值為i,b,a的text節(jié)點的值,該三個值分別對應(yīng)瑋度、經(jīng)度、時間;分別記為LAT2、L0N2、Time2;
[0123]S375:判定LAT2,L0N2是否存儲數(shù)據(jù),當不存在時丟棄,存在數(shù)據(jù)時,將獲取到的瑋度、經(jīng)度、時間傳至S4并執(zhí)行,進行加密數(shù)據(jù)反解析操作,并記錄返回值DLAT2、DL0N2、DTime2并將獲取到的解密瑋度、經(jīng)度、時間、保存到定位痕跡實體,并保存到L2中;
[0124]S376:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在SD卡分區(qū)的路徑,以及當前應(yīng)用的包名記作PKG2;
[0125]S377:遍歷該路徑下的文件,使用正則表達式”〈*\0>”對遍歷出來的文件的文件名進行正則匹配。當篩選出符合條件的文件時執(zhí)行S378,否則繼續(xù)遍歷,直到結(jié)束并執(zhí)行S5;
[0126]S378:篩選出來的文件是java序列化文件,利用開源方法,執(zhí)行反序列化操作,進行數(shù)據(jù)還原,將反序列化的內(nèi)容記作MAP2,當MAP2的大小不為O時執(zhí)行S379,否則執(zhí)行S377;
[0127]S379:由于map集合是以鍵值對的形式存儲數(shù)據(jù),所以直接遍歷MAP2,獲取MAP2中的所有的值,當獲取的值不為空字符串,將其記作D2并執(zhí)行S3710;為空字符串時跳過,繼續(xù)遍歷,直到遍歷結(jié)束執(zhí)行S367 ;
[0128]S3710:D2為加密字符串,執(zhí)行S4,進行數(shù)據(jù)解密,并獲取解密結(jié)果DD2,該字符串是一個標準的json數(shù)據(jù)結(jié)構(gòu),使用開源json解析接口,對json字符串的Iat、1n、time、desc字段進行解析,這些字符串分別對應(yīng)、瑋度、經(jīng)度、時間、真實地址;
[0129]S3711:對解析出來的經(jīng)度,瑋度進行空字符串判斷,當不為空字符串時,將信息保存到定位痕跡信息實體,并保存到L2中,然后執(zhí)行S379;當為空字符串時,直接執(zhí)行S379。
[0130]S4中高德地圖開放接口的加密方式是“AES/ECB/ZeroBytePadding”。其數(shù)據(jù)加密的密鑰是當前應(yīng)用包名的MD5值,其詳細步驟如下:
[0131]S41:將傳入的包名字符串轉(zhuǎn)化為UTF-8的字節(jié)數(shù)組;
[0132]S42:使用開源方法獲取該字節(jié)數(shù)組的MD5值,記作PK ;
[0133]S43:判斷PK的長度,當PK大于16位時,只取前16位長度,當PK小于16位時,在字符串的頭部添加‘0’,直到長度PK長度等于16;
[0134]S44:使用開源方法執(zhí)行AES解密操作,解密方式:“AES/ECB/ZeroBytePadding”,密鑰PK;
[0135]S45:逐步解密傳入的加密字符串,進行數(shù)據(jù)解密;
[0136]S46:返回解密結(jié)果。
[0137]S5的詳細步驟如下:
[0138]S51:判斷實體集合L2,當L2不存在數(shù)據(jù)時高德接口緩存定位痕跡數(shù)據(jù)不存在,結(jié)束解析;當存在數(shù)據(jù)時執(zhí)行S52操作;
[0139]S52:遍歷L2中的所有定位痕跡信息實體,記錄LOC;并執(zhí)行S53,遍歷結(jié)束便完成高德接口產(chǎn)生的緩存定位痕跡的解析;
[0140]S53:判斷LOC中的地址信息是否為空字符串,當為空字符串時執(zhí)行S54,當不為空字符串時執(zhí)行S52;
[0141]S54:根據(jù)傳入的經(jīng)度、瑋度以GCJ02坐標系進行地理位置逆解析,將解析結(jié)果直接保存在LOC中,執(zhí)行S52。
[0142]本領(lǐng)域的普通技術(shù)人員將會意識到,這里所述的實施例是為了幫助讀者理解本發(fā)明的實施方法,應(yīng)被理解為本發(fā)明的保護范圍并不局限于這樣的特別陳述和實施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開的這些技術(shù)啟示做出各種不脫離本發(fā)明實質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護范圍內(nèi)。
【主權(quán)項】
1.一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于包括以下步驟: 51:高德地圖開放接口版本判斷; 52:智能手機移動應(yīng)用關(guān)聯(lián),獲取關(guān)于智能手機的基本信息,它至少包含手機狀態(tài),應(yīng)用信息,sd卡應(yīng)用關(guān)聯(lián); 53:高德接口產(chǎn)生的緩存定位痕跡數(shù)據(jù)提??; 54:高德接口緩存加密痕跡數(shù)據(jù)解密操作; 55:逆解析定位痕跡。2.根據(jù)權(quán)利要求1所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于:所述SI包含兩個部分,第一部分為DATA數(shù)據(jù)區(qū)域判斷接口版本,第二部分為SD卡應(yīng)用數(shù)據(jù)區(qū)域判斷接口版本; data分區(qū)高德接口版本判定:建立標志DF,傳入文件,當傳入文件名是“l(fā)ast_know_locat1n”是舊接口,DF定義為False,當傳入文件名是“l(fā)ast_known_locat1n”為新接口,DF定義為True; SD卡數(shù)據(jù)區(qū)域高德接口版本判定:建立標志SF,傳入文件,當傳入文件名是“l(fā)ocat1nCache”則為舊接口,SF定義為FaIse,當傳入文件名是“newLocat1nCache”為新接口,SF定義為True ο3.根據(jù)權(quán)利要求2所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于所述S2的詳細步驟如下: 521:獲取手機應(yīng)用的基本信息; 522:手機Root權(quán)限判定,判定手機是否root,創(chuàng)建記錄標志Fl。4.根據(jù)權(quán)利要求3所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于所述S21的詳細步驟如下: S211:創(chuàng)建手機應(yīng)用基本信息實體,實體結(jié)構(gòu)至少應(yīng)當包含應(yīng)用名、包名、對應(yīng)SD卡路徑、高德接口 data分區(qū)路徑、高德接口 SD卡數(shù)據(jù)分區(qū)路徑、以及Data分區(qū)痕跡數(shù)據(jù)是否加密和SD應(yīng)用分區(qū)痕跡數(shù)據(jù)是否加密; S212:創(chuàng)建手機應(yīng)用基本信息實體集合用來保存手機中包含的應(yīng)用信息,并記錄實體為LI; S213:獲取手機應(yīng)用在SD卡中的數(shù)據(jù)區(qū)域,記錄路徑為pi,獲取方式有兩種,一種是直接使用android接口,還有一種是通過adb指令獲取外置SD卡路徑并自動追加“/android/data”形成人工構(gòu)造應(yīng)用SD卡應(yīng)用數(shù)據(jù)區(qū)路徑; S214:遍歷pi目錄; S215:判斷該根目錄的子節(jié)點文件夾下是否包含高德地圖開發(fā)接口,若包含則創(chuàng)建基本信息實體PI,并記錄該包名pkg I,包名就是該目錄名,執(zhí)行高德地圖開放接口版本檢測,當監(jiān)測到是新版本時,記錄SF為True,當為舊版本時,記錄為False,并執(zhí)行S216;若不包含高德地圖開放接口時,重新執(zhí)行S214。5.根據(jù)權(quán)利要求4所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于所述S22的詳細步驟如下: S221:判定系統(tǒng)中是否包含su文件,當不包含su文件時,直接定義Fl為False,執(zhí)行S224;當包含su文件時執(zhí)行S222; S222:調(diào)用原生接口,開啟PROCESS進程; S223:執(zhí)行SHELL指令su,保存并執(zhí)行指令后的結(jié)果,當返回結(jié)果為O時,定義Fl為True,否則定義為False; 5224:判斷Fl的標志,當Fl為True時執(zhí)行操作S225,否則執(zhí)行操作S226 ; 5225:構(gòu)建高德接口 data分區(qū)數(shù)據(jù)目錄,路徑為“data/data/” +包名+“shared_pf es/”,執(zhí)行高德地圖版本判定,當是新版本時,記錄DF為True,低版本時記錄為False; S226:構(gòu)建高德接口 sd卡默認數(shù)據(jù)區(qū)域路徑,當SF為False時路徑是pl+pkgl + “cache/locat1nCache” ;當SF為True時,路徑是pi+包名+“cache/newLocat1nCache”。6.根據(jù)權(quán)利要求5所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于所述S3的詳細步驟如下: S31:定義定位痕跡實體,定位痕跡實體至少應(yīng)當包含經(jīng)度,瑋度,時間,地址等信息; S32:定義定位痕跡實體集合L2,用于存儲解析高德地圖開放接口所產(chǎn)生的定位痕跡數(shù)據(jù); S33:遍歷應(yīng)用信息實體集合LI,當遍歷出來的應(yīng)用實體信息不為空時執(zhí)行S34;否則執(zhí)行S5; 534:執(zhí)行高德地圖接口在Data數(shù)據(jù)區(qū)存儲的定位痕跡數(shù)據(jù)解析,根據(jù)DF標志判斷高德地圖接口產(chǎn)生的數(shù)據(jù)是否加密,當DF為False表示數(shù)據(jù)未加密,執(zhí)行S36操作,當為True時表示數(shù)據(jù)加密執(zhí)行S37操作; 535:執(zhí)行高德地圖接口在SD卡數(shù)據(jù)區(qū)存儲的定位痕跡數(shù)據(jù)解析,根據(jù)SF標志判斷高德地圖接口產(chǎn)生的數(shù)據(jù)是否加密,當SF為False表示數(shù)據(jù)未加密,執(zhí)行S36操作,當為True時表示數(shù)據(jù)加密執(zhí)行S37操作; 536:執(zhí)行高德地圖舊版本開放接口數(shù)據(jù)提?。? 537:執(zhí)行高德地圖新版本開放接口數(shù)據(jù)提取。7.根據(jù)權(quán)利要求6所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于所述S36的詳細步驟如下: S361:根據(jù)Fl標志判斷系統(tǒng)是否root,當是時執(zhí)行S362,當否時執(zhí)行S366步驟; S362:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在Data分區(qū)的路徑。并拼接路徑“/last_know_1cat1nxmr,構(gòu)成完整的數(shù)據(jù)文件路徑; S363:更改該路徑的權(quán)限,使其具有可讀可寫可操作的權(quán)限; S364:利用開源接口,加載并解析該xml文件,獲取屬性值為last_know_lat,last_know_lng的text節(jié)點的值,該兩個值分別對應(yīng)瑋度和經(jīng)度;分別記為LATl和LONl;獲取第一個屬性值為time的第二的屬性值,該屬性值為該定位痕跡產(chǎn)生的時間,記為Timel ; S365:判定LATl和LONl是否為空字符串,當為空字符串時丟棄,不為空字符串時,將獲取到的瑋度、經(jīng)度和時間保存到定位痕跡實體,并保存到L2中; S366:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在SD分區(qū)的路徑; S367:遍歷該路徑下的文件,使用正則表達式“<*\.0>”,對遍歷出來的文件的文件名進行篩選,當篩選出符合條件的文件時執(zhí)行S368,否則繼續(xù)遍歷,直到結(jié)束并執(zhí)行S5; S368:篩選出來的文件是java序列化文件,利用開源方法,執(zhí)行反序列化操作,進行數(shù)據(jù)還原,將反序列化的內(nèi)容記作MAPI,當MAPI大小不為O時執(zhí)行S369,否則執(zhí)行S367; S369:遍歷MAPI,獲取MAPI中的所有的值,當獲取的值不為空字符串,將其記作Dl并執(zhí)行S3610;為空字符串時跳過,繼續(xù)遍歷,直到遍歷結(jié)束執(zhí)行S367; S3610: Dl字符串是一個標準的j son數(shù)據(jù)結(jié)構(gòu),使用開源j son解析接口,對j son字符串的Iat、1n、t ime、desc字段進行解析; S3611:對解析出來的經(jīng)度,瑋度進行空字符串判斷,當不為空字符串時,將信息保存到定位痕跡信息實體,并保存到L2中,然后執(zhí)行S369;當為空字符串時,直接執(zhí)行S369。8.根據(jù)權(quán)利要求7所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于所述S37的詳細步驟如下: S371:根據(jù)Fl標志判斷系統(tǒng)是否root,當是時執(zhí)行S372,當否時執(zhí)行S376步驟; 5372:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在Data分區(qū)的路徑;并拼接路徑7last_known_locat1nxml”,構(gòu)成完整的數(shù)據(jù)文件路徑,以及獲取應(yīng)用信息實體中保存的當前應(yīng)用的包名記作PkgI ; 5373:更改該文件的權(quán)限,使該文件能夠可讀可寫可操作; S374:利用開源解析Xml文件接口,加載并解析該xml文件,獲取屬性值為i,b,a的text節(jié)點的值,該三個值分別對應(yīng)瑋度、經(jīng)度、時間;分別記為LAT2、L0N2、Time2; 5375:判定LAT2,L0N2是否存儲數(shù)據(jù),當不存在時丟棄,存在數(shù)據(jù)時,將獲取到的瑋度、經(jīng)度、時間傳至S4并執(zhí)行,進行加密數(shù)據(jù)反解析操作,并記錄返回值DLAT2、DL0N2、DTime2并將獲取到的解密瑋度、經(jīng)度、時間、保存到定位痕跡實體,并保存到L2中; 5376:獲取應(yīng)用信息實體中保存的數(shù)據(jù)在SD卡分區(qū)的路徑,以及當前應(yīng)用的包名記作PKG2; S377:遍歷該路徑下的文件,使用正則表達式”〈*\0>”對遍歷出來的文件的文件名進行正則匹配。當篩選出符合條件的文件時執(zhí)行S378,否則繼續(xù)遍歷,直到結(jié)束并執(zhí)行S5; S378:篩選出來的文件是java序列化文件,利用開源方法,執(zhí)行反序列化操作,進行數(shù)據(jù)還原,將反序列化的內(nèi)容記作MAP2,當MAP2的大小不為O時執(zhí)行S379,否則執(zhí)行S377; S379:由于map集合是以鍵值對的形式存儲數(shù)據(jù),所以直接遍歷MAP2,獲取MAP2中的所有的值,當獲取的值不為空字符串,將其記作D2并執(zhí)行S3710;為空字符串時跳過,繼續(xù)遍歷,直到遍歷結(jié)束執(zhí)行S377; S3710: D2為加密字符串,執(zhí)行S4,進行數(shù)據(jù)解密,并獲取解密結(jié)果DD2,該字符串是一個標準的j son數(shù)據(jù)結(jié)構(gòu),使用開源j son解析接口,對j son字符串的Iat、I on、t ime、de sc字段進行解析,這些字符串分別對應(yīng)、瑋度、經(jīng)度、時間、真實地址; S3711:對解析出來的經(jīng)度,瑋度進行空字符串判斷,當不為空字符串時,將信息保存到定位痕跡信息實體,并保存到L2中,然后執(zhí)行S379;當為空字符串時,直接執(zhí)行S379。9.根據(jù)權(quán)利要求8所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于S4的詳細步驟如下: S41:將傳入的包名字符串轉(zhuǎn)化為UTF-8的字節(jié)數(shù)組; S42:使用開源方法獲取該字節(jié)數(shù)組的MD5值,記作PK; S43:判斷PK的長度,當PK大于16位時,只取前16位長度,當PK小于16位時,在字符串的頭部添加‘O’,直到長度PK長度等于16; S44:使用開源方法執(zhí)行AES解密操作,解密方式:“AES/ECB/ZeroBytePadding”,密鑰PK; S45:逐步解密傳入的加密字符串,進行數(shù)據(jù)解密; S46:返回解密結(jié)果。10.根據(jù)權(quán)利要求9所述的一種針對高德接口緩存加密痕跡數(shù)據(jù)的提取方法,其特征在于S5的詳細步驟如下: 551:判斷實體集合L2,當L2不存在數(shù)據(jù)時高德接口緩存定位痕跡數(shù)據(jù)不存在,結(jié)束解析;當存在數(shù)據(jù)時執(zhí)行S52操作; 552:遍歷L2中的所有定位痕跡信息實體,記錄LOC ;并執(zhí)行S53,遍歷結(jié)束便完成高德接口產(chǎn)生的緩存定位痕跡的解析; S53:判斷LOC中的地址信息是否為空字符串,當為空字符串時執(zhí)行S54,當不為空字符串時執(zhí)行S52; S54:根據(jù)傳入的經(jīng)度、瑋度以GCJ02坐標系進行地理位置逆解析,將解析結(jié)果直接保存在LOC中,執(zhí)行S52。
【文檔編號】G06F21/44GK106055651SQ201610380065
【公開日】2016年10月26日
【申請日】2016年5月31日
【發(fā)明人】黃旭, 聶學良
【申請人】四川秘無痕信息安全技術(shù)有限責任公司