本發(fā)明屬于智能手機(jī)和信息處理領(lǐng)域,尤其涉及一種智能手機(jī)中的一種短信信息提取與分析方法。
背景技術(shù):
近些年來,隨著智能手機(jī)和移動互聯(lián)網(wǎng)的發(fā)展,手機(jī)成為人們生活中的一個重要工具,由于手機(jī)號的唯一性,手機(jī)也成為了認(rèn)證個人身份的一個工具。因此,常常使用手機(jī)短信作為對個人的一種準(zhǔn)確通信手段,例如:各種驗證碼短信、銀行消費信息短信、快遞的通知短信等等。但是,大量的此類短信雖然不是垃圾短信,也會使用戶手機(jī)被淹沒在短信海洋中,從而使用戶忽略了真正重要的短信?;谏鲜鲈颍F(xiàn)在用戶通常需要對短信進(jìn)行提取和整理。
目前,在短信提取分析相關(guān)領(lǐng)域內(nèi),僅有少部分定制手機(jī)ROM具有驗證碼識別等簡單提取功能,而且僅適用于特定手機(jī)廠商的手機(jī),不具備普適性。不僅如此,針對短信的操作多集中在簡單的消息提取上,并沒有針對不同類型的短信,不同來源不同功能的短信進(jìn)行細(xì)致的劃分和特殊處理。因此,用戶仍然被大量特定類型的定制短信所困擾。
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中的上述問題,本發(fā)明提出了一種短信信息提取與分析方法,該方法采用正則表達(dá)式作為短信匹配的方式,對短信進(jìn)行匹配和識別。
本發(fā)明采用的技術(shù)方案如下:
一種短信信息提取與分析方法,該方法包括如下步驟:
步驟100:獲取一條待分析的短信記錄;
步驟200:根據(jù)數(shù)據(jù)庫中的號碼記錄,對所述短信記錄進(jìn)行號碼匹配,確定該短信記錄的發(fā)件人;如果未能匹配到號碼,則不對該短信進(jìn)行分析,返回步驟100;
步驟300:根據(jù)該短信記錄的發(fā)件人,從數(shù)據(jù)庫查詢獲取該發(fā)件人的短信的正則表達(dá)式;
步驟400:基于步驟300獲取的所有正則表達(dá)式,逐一對待分析的短信進(jìn)行匹配,如果沒有一個正則表達(dá)式可匹配該短信,則放棄對短信的分析,返回步驟100;如果找到一個正則表達(dá)式可匹配該短信,則根據(jù)該正則表達(dá)式,提取短信中的關(guān)鍵信息。
步驟500:將提取出的短信中的關(guān)鍵信息及其發(fā)件人關(guān)聯(lián)存儲在數(shù)據(jù)庫中;
步驟600:對數(shù)據(jù)庫中存儲的所述關(guān)鍵信息進(jìn)行統(tǒng)計分析,并展示統(tǒng)計分析結(jié)果。
進(jìn)一步地,還根據(jù)下述步驟對數(shù)據(jù)庫中的正則表達(dá)式及相關(guān)發(fā)件人、號碼等信息進(jìn)行更新:
(1)設(shè)置一臺更新服務(wù)器,每一臺需要更新的手機(jī)都預(yù)先在該更新服務(wù)器進(jìn)行登記,登記信息包括手機(jī)號碼,每一臺需要更新的手機(jī)上都存儲了該更新服務(wù)器的數(shù)字證書;
(2)當(dāng)需要更新信息時,更新服務(wù)器將更新信息和當(dāng)前日期按照預(yù)定義的格式進(jìn)行打包,獲得更新信息包;
(3)對于在更新服務(wù)器上登記的一個手機(jī)號碼P,更新服務(wù)器計算
PM=P mod 256;將更新信息包的每個字節(jié)與該PM進(jìn)行異或,從而獲得了一個異或后的第二更新信息包;
(4)更新服務(wù)器使用其數(shù)字證書私鑰對該第二更新信息包進(jìn)行數(shù)字簽名;
(5)更新服務(wù)器對所述第二更新信息包進(jìn)行Base64編碼,將得到的編碼結(jié)果作為第一短信發(fā)送給手機(jī)號碼P;
(6)更新服務(wù)器對步驟4得到的數(shù)字簽名進(jìn)行Base64編碼,將編碼結(jié)果作為第二短信發(fā)送給手機(jī)號碼P;
(7)更新服務(wù)器對每個登記的手機(jī)號碼重復(fù)步驟3-6,以向每個登記的手機(jī)號碼發(fā)送第一短信和第二短信;
(8)當(dāng)一臺手機(jī)收到上述第一短信和第二短信后,如果發(fā)現(xiàn)這兩條短信的發(fā)件人號碼是更新服務(wù)器的號碼,則對兩條短信進(jìn)行Base64解碼,獲得第二更新信息包和數(shù)字簽名;
(9)所述手機(jī)使用更新服務(wù)器的數(shù)字證書,對步驟8獲取的第二更新信息包和數(shù)字簽名進(jìn)行簽名驗證,如果驗證不通過,則忽略則兩臺短信,否則繼續(xù)后續(xù)步驟;
(10)所述手機(jī)基于自身的手機(jī)號碼P,計算PM=P mod 256;然后將步驟8獲得第二更新信息包的每個字節(jié)與該PM進(jìn)行異或,從而獲得原始的更新信息包;
(11)所述手機(jī)使用預(yù)定義的格式解析該更新信息包的內(nèi)容,獲得更新信息及更新信息包中的日期信息;驗證該日期信息與當(dāng)前日期的差是否大于預(yù)定閾值,如果大于,則忽略該更新信息包;如果不大于,則基于獲取的更新信息更新數(shù)據(jù)庫。
進(jìn)一步地,步驟100中的待分析的短信記錄通過以下方式之一獲得:
從手機(jī)短信數(shù)據(jù)庫中讀取一條短信記錄;
使用攔截短信機(jī)制,攔截獲取手機(jī)收到的新短信。
進(jìn)一步地,所述更新信息包括以下三種信息之一:
為某個已有的發(fā)件人增加新的正則表達(dá)式;
為某個已有的發(fā)件人增加新的號碼;
增加新的發(fā)件人及其號碼、正則表達(dá)式。
進(jìn)一步地,每個更新信息包只包括一條更新信息。
進(jìn)一步地,所述PM由更新服務(wù)器預(yù)先計算。
本發(fā)明的有益效果包括:提供可靠的,安全的,多樣的,完整的短信信息提取與分析方法,短信匹配的擴(kuò)展性強(qiáng),具有廣泛適用性,整個流程無需手動參與,具有智能化和現(xiàn)代化的特點。
【附圖說明】
此處所說明的附圖是用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,但并不構(gòu)成對本發(fā)明的不當(dāng)限定,在附圖中:
圖1是本發(fā)明短信信息提取與分析方法的流程圖。
圖2是本發(fā)明短信信息分析的一個統(tǒng)計圖表的實施例。
【具體實施方式】
下面將結(jié)合附圖以及具體實施例來詳細(xì)說明本發(fā)明,其中的示意性實施例以及說明僅用來解釋本發(fā)明,但并不作為對本發(fā)明的限定。
本發(fā)明的實施例運作于Android手機(jī)平臺,其主要思想是:根據(jù)約定的正則表達(dá)式,從短信文本中智能提取關(guān)鍵信息,優(yōu)化信息展示方式,進(jìn)行相關(guān)統(tǒng)計操作,整個過程無需用戶手動參與。
參見附圖1,其示出了本發(fā)明的短信信息提取和分析方法的基本流程,該流程包括如下步驟:
步驟100:獲取一條待分析的短信記錄。
本發(fā)明的短信信息提取和分析方法可以針對舊短信,也可以針對新短信,因此步驟100中獲取的待分析的短信實際上有兩個數(shù)據(jù)來源:一個是從手機(jī)的短信數(shù)據(jù)庫中讀取一條短信記錄;另一個是使用攔截短信機(jī)制,攔截手機(jī)收到的每一條新短信?;贏ndroid手機(jī)的開放平臺,使用本發(fā)明的方法所實現(xiàn)的手機(jī)系統(tǒng)一方面可以讀取手機(jī)的短信數(shù)據(jù)庫,另一方面可以在后臺運行一個短信攔截程序,以攔截收到的新短信?;谶@兩個數(shù)據(jù)來源,步驟100可以獲取每一條舊短信和新短信,以完成后續(xù)步驟。
步驟200:根據(jù)數(shù)據(jù)庫中的號碼記錄,對所述短信記錄進(jìn)行號碼匹配,確定該短信記錄的發(fā)件人;如果未能匹配到號碼,則不對該短信進(jìn)行分析,返回步驟100。
每條短信記錄都有一個發(fā)送短信的號碼,這個號碼是和短信發(fā)件人相對應(yīng)的,附圖1中給出了幾個例子,包括建設(shè)銀行的號碼是95533,工商銀行的號碼是95588等等。同一發(fā)件人也可能具有不同的號碼,這些號碼與發(fā)件人關(guān)聯(lián)存儲在數(shù)據(jù)庫的號碼記錄中。因此,通過分析短信記錄的發(fā)件人號碼,可以確認(rèn)短信的發(fā)件人,這是從短信中提取的第一個信息。但是,本發(fā)明只對特定發(fā)件人的短信進(jìn)行分析,例如各個銀行、快遞、火車票訂票網(wǎng)站等等,對于普通日常短信不進(jìn)行處理,因此數(shù)據(jù)庫中的號碼記錄只包括了需要進(jìn)行短信分析的號碼,如果短信發(fā)件人的號碼不在數(shù)據(jù)庫的號碼記錄內(nèi),就不對其進(jìn)行分析,從而返回步驟100以處理下一條短信。
步驟300:根據(jù)該短信記錄的發(fā)件人,從數(shù)據(jù)庫查詢獲取該發(fā)件人的短信的正則表達(dá)式。
每個發(fā)件人所發(fā)送的短信可能具有不同的類型,以銀行為例,其發(fā)送的短信可能是消費短信,也可能是賬戶金額變更短信。但是,對于每一種類型的短信,其短信格式通常是固定的,因此可以為每一種類型的短信,確定一個與其格式對應(yīng)的正則表達(dá)式,這些正則表示式預(yù)先與發(fā)件人關(guān)聯(lián)存儲在數(shù)據(jù)庫中,因而步驟300可以根據(jù)發(fā)件人獲取該發(fā)件人對應(yīng)的所有正則表達(dá)式。
步驟400:基于步驟300獲取的正則表達(dá)式,逐一對待分析的短信進(jìn)行匹配,如果沒有一個正則表達(dá)式可匹配該短信,則放棄對短信的分析,返回步驟100;如果找到一個正則表達(dá)式可匹配該短信,則根據(jù)該正則表達(dá)式,提取短信中的關(guān)鍵信息。
附圖1中示出了關(guān)鍵信息的三個例子:第一個例子是從銀行消費短信中提取出的交易卡號、交易時間、交易金額和交易明細(xì);第二個例子是從銀行賬戶余額查詢回執(zhí)短信中提取的交易卡號、交易時間、交易金額和賬戶余額;第三個例子是從快遞短信中提取的訂單號、配送時間和取貨號。這些關(guān)鍵信息都是通過正則表達(dá)式對短信格式進(jìn)行匹配,提取出來的。
步驟500:將提取出的短信中的關(guān)鍵信息及其發(fā)件人關(guān)聯(lián)存儲在數(shù)據(jù)庫中。
在把關(guān)鍵信息提取出來之后,存儲在數(shù)據(jù)庫中,這樣后續(xù)就可以基于這些信息進(jìn)行進(jìn)一步的統(tǒng)計分析。
步驟600:對數(shù)據(jù)庫中存儲的所述關(guān)鍵信息進(jìn)行統(tǒng)計分析,并展示統(tǒng)計分析結(jié)果。
由于提取出的關(guān)鍵信息都是統(tǒng)一的結(jié)構(gòu)化內(nèi)容,因此統(tǒng)計分析就非常容易進(jìn)行,附圖2示出了一個統(tǒng)計圖表的例子,其對每個月的銀行消費明細(xì)進(jìn)行了統(tǒng)計分析,并通過軟件界面展示統(tǒng)計圖表。本發(fā)明不對具體的統(tǒng)計分析和圖表展示方法做出限制,本領(lǐng)域技術(shù)人員可以理解,基于上述獲取的關(guān)鍵信息,可以進(jìn)行各種本領(lǐng)域中公知的統(tǒng)計和分析過程。
在上述短信信息提取過程中,正則表達(dá)式是提取短信的核心工具,它反映了短信的正確格式。但是,短信格式是可能隨著時間變化的。一方面,每個發(fā)件人號碼所發(fā)送的短信格式是可能發(fā)生變化的,另一方面,可能會出現(xiàn)新的發(fā)件人號碼(包括新發(fā)件人的號碼,或者舊發(fā)件人的新號碼),新的號碼通常會帶來新的短信格式。因此,正則表達(dá)式及其關(guān)聯(lián)的發(fā)件人、號碼是需要更新的。
現(xiàn)有技術(shù)中一種常見的更新方法是網(wǎng)絡(luò)更新,即可以在手機(jī)上網(wǎng)時,向網(wǎng)絡(luò)上的更新服務(wù)器查詢并下載新的正則表達(dá)式。但是,一方面,網(wǎng)絡(luò)更新需要耗費網(wǎng)絡(luò)流量,另一方面,有些時候手機(jī)可能并不具有能夠上網(wǎng)的環(huán)境。因此,本發(fā)明提出了一種新的正則表達(dá)式及相關(guān)發(fā)件人、號碼的更新方法,該方法可以通過短信進(jìn)行更新,只要手機(jī)能夠接收短信,就可以進(jìn)行相關(guān)更新。
更新的具體步驟如下:
(1)設(shè)置一臺更新服務(wù)器,每一臺需要更新的手機(jī)都預(yù)先在該更新服務(wù)器進(jìn)行登記,登記信息包括手機(jī)號碼,每一臺需要更新的手機(jī)上都存儲了該更新服務(wù)器的數(shù)字證書。
(2)當(dāng)需要更新信息時,更新服務(wù)器將更新信息和當(dāng)前日期按照預(yù)定義的格式進(jìn)行打包,獲得更新信息包。
這里的更新信息可能有多種情況,包括:為某個已有的發(fā)件人增加新的正則表達(dá)式;為某個已有的發(fā)件人增加新的號碼;增加新的發(fā)件人及其號碼、正則表達(dá)式。無論是哪種更新信息,都可以預(yù)先定義好打包格式,將該更新信息按照該打包格式進(jìn)行打包。為了可以使用短信進(jìn)行更新,每個更新信息包只打包一條更新信息。將當(dāng)期日期也加入更新信息包是為了保證更新信息包的時效性和安全性,避免一條更新信息被人惡意重復(fù)發(fā)送。
(3)對于在更新服務(wù)器上登記的一個手機(jī)號碼P,更新服務(wù)器計算其模256的值,即計算PM=P mod 256;因此該PM的位數(shù)不超過8,即限制在了一個字節(jié)以內(nèi)。將更新信息包的每個字節(jié)與該PM進(jìn)行異或,從而獲得了一個異或后的第二更新信息包。
通過上述步驟3的異或過程,將更新信息包的數(shù)據(jù)隱藏了起來,并且對于不同的手機(jī)號碼,異或后得到的第二更新信息包都不相同,則進(jìn)一步提高了安全性。另外,步驟3中所使用的PM對每個手機(jī)號碼而言是固定不變的,因此在實際應(yīng)用中可以事先計算好各個PM。
(4)更新服務(wù)器使用自己的數(shù)字證書的私鑰對該第二更新信息包進(jìn)行數(shù)字簽名。
之所以使用數(shù)字簽名,是為了保證更新信息的安全性,以防止有人冒充更新服務(wù)器,損害手機(jī)安全,由于對每個手機(jī)號碼,第二更新信息包都不相同,則其數(shù)字簽名也不相同。
(5)更新服務(wù)器對所述第二更新信息包進(jìn)行Base64編碼,將得到的編碼結(jié)果作為第一短信發(fā)送給手機(jī)號碼P。
(6)更新服務(wù)器對步驟4得到的數(shù)字簽名也進(jìn)行Base64編碼,將編碼結(jié)果作為第二短信發(fā)送給手機(jī)號碼P。
(7)更新服務(wù)器對每個登記的手機(jī)號碼重復(fù)步驟3-6,使得每個登記的手機(jī)號碼都可以接收到該第一短信和第二短信。
(8)當(dāng)一臺手機(jī)收到上述第一短信和第二短信后,如果發(fā)現(xiàn)這兩條短信的發(fā)件人號碼是更新服務(wù)器的號碼,則對兩條短信進(jìn)行Base64解碼,獲得第二更新信息包和數(shù)字簽名。
(9)所述手機(jī)使用更新服務(wù)器的數(shù)字證書,對步驟8獲取的第二更新信息包和數(shù)字簽名進(jìn)行簽名驗證。如果驗證不通過,則忽略則兩臺短信,否則繼續(xù)后續(xù)步驟;
基于現(xiàn)在偽基站等攻擊手段,單純依靠號碼判斷更新服務(wù)器是不可靠的,因此本發(fā)明通過數(shù)字簽名驗證來保證更新的可靠性。
(10)所述手機(jī)基于自身的手機(jī)號碼P,計算PM=P mod 256;然后將步驟8獲得第二更新信息包的每個字節(jié)與該PM進(jìn)行異或,從而獲得原始的更新信息包。這一步驟實際上是步驟3的逆過程。
(11)所述手機(jī)使用預(yù)定義的格式解析該更新信息包的內(nèi)容,獲得更新信息及更新信息包中的日期信息;驗證該日期信息與當(dāng)前日期的差是否大于預(yù)定閾值,如果大于,說明該更新信息包已經(jīng)過期,則忽略該更新信息包;如果不大于,則基于獲取的更新信息更新數(shù)據(jù)庫。
上述更新方法一方面保證了更新信息的安全性,防止冒充更新服務(wù)器,另一方面無需手機(jī)上網(wǎng),可以在手機(jī)離線的情況下進(jìn)行更新;使得本發(fā)明的短信提取與分析方法更加安全、可靠、及時。
以上所述僅是本發(fā)明的較佳實施方式,故凡依本發(fā)明專利申請范圍所述的構(gòu)造、特征及原理所做的等效變化或修飾,均包括于本發(fā)明專利申請范圍內(nèi)。