一種基於數據碰撞的微信取證方法及系統與流程
2023-10-10 07:21:54 1

本發明涉及數據加密解密技術領域,尤其涉及一種基於數據碰撞的微信取證方法及系統。
背景技術:
傳統的手機取證分析系統,是通過對提取的微信本地文件解密,藉助分析緩存文件的欄位,獲取微信用戶UID,然後根據UID等進行變換獲取解密密鑰,從而實現解密。但是對於不知道用戶UID或者同一部手機登錄多個微信號時,無法獲取分析到UID,或者無法識別本地文件對應哪一個微信用戶UID,進而無法對微信數據進行分析取證。為了克服上述技術缺陷,需要建立用戶本地數據與伺服器資料庫中用戶數據信息的映射關係,從而方便完成解密操作以實現微信取證。
技術實現要素:
本發明所要解決的技術問題是針對上述現有技術的不足,提供一種基於數據碰撞的微信取證方法及系統。
本發明解決上述技術問題的技術方案如下:
依據本發明的一個方面,提供了一種基於數據碰撞的微信取證方法,包括如下步驟:
步驟1:創建碰撞資料庫,對用戶微信號碼UID進行加密,並將加密後得到的第一加密字符串作為本地文件目錄名存儲在所述碰撞資料庫中;
步驟2:在所述碰撞資料庫中查詢待取證本地文件目錄名,並獲取待取證本地文件目錄名對應的用戶微信號碼UID;
步驟3:根據獲取的用戶微信號碼UID生成AES解密秘鑰,並通過所述AES解密秘鑰對微信的加密文件進行解密,完成微信取證。
本發明的一種基於數據碰撞的微信取證方法,利用微信的本地數據和用戶UID之間的關聯,通過碰撞資料庫完整建立用戶本地數據和用戶微信號碼UID的映射關係,可以比較方便對微信的加密文件進行解密,實現微信取證,同時可以在多個微信帳號同時登錄時,準確獲取每個用戶微信號碼UID,並進行針對性的解密,安全性極高。
依據本發明的另一個方面,提供了一種基於數據碰撞的微信取證系統,包括創建模塊、加密模塊、查詢模塊和解密模塊。所述創建模塊用於創建碰撞資料庫;所述加密模塊用於用戶微信號碼UID進行加密,並將加密後得到的第一加密字符串作為本地文件目錄名存儲在所述碰撞資料庫中;所述查詢模塊用於在所述碰撞資料庫中查詢待取證本地文件目錄名,並獲取待取證本地文件目錄名對應的用戶微信號碼UID;所述解密模塊用於根據獲取的用戶微信號碼UID生成AES解密秘鑰,並通過所述AES解密秘鑰對本地文件進行解密,完成微信取證。
本發明的一種基於數據碰撞的微信取證系統,通過所述加密模塊可以對用戶微信號碼UID進行加密,並存儲至碰撞資料庫中,建立了用戶本地數據與用戶微信號碼UID的映射關係,在查詢模塊中輸入待取證本地文件目錄名,即可通過所述解密模塊對微信的加密文件進行解密,實現微信取證。
附圖說明
圖1為本發明的一種基於數據碰撞的微信取證方法流程示意圖;
圖2為本發明的一種基於數據碰撞的微信取證系統結構示意圖。
具體實施方式
以下結合附圖對本發明的原理和特徵進行描述,所舉實例只用於解釋本發明,並非用於限定本發明的範圍。
實施例一、一種基於數據碰撞的微信取證方法。下面將結合圖1對本實施例的一種基於數據碰撞的微信取證方法進行詳細地介紹。
如圖1所示,一種基於數據碰撞的微信取證方法,包括如下步驟:
步驟1:創建碰撞資料庫,對用戶微信號碼UID進行加密,並將加密後得到的第一加密字符串作為本地文件目錄名存儲在所述碰撞資料庫中;
步驟2:在所述碰撞資料庫中查詢待取證本地文件目錄名,並獲取待取證本地文件目錄名對應的用戶微信號碼UID;
步驟3:根據獲取的用戶微信號碼UID生成AES解密秘鑰,並通過所述AES解密秘鑰對微信的加密文件進行解密,完成微信取證。
本實施例中,所述步驟1中,對用戶微信號碼UID進行加密的具體實現為:將預設特徵字符串與用戶微信號碼UID進行拼接形成第一字符串,並對所述第一字符串進行加密運算,得到第一加密字符串;其中,用戶微信號碼UID的位數不超過所述第一加密字符串的位數。通過上述方式可以對所述微信號碼UID有效進行加密處理,並將加密得到的所述第一加密字符串作為本地文件目錄名存儲在所述碰撞資料庫中,便於後續查找。
本發明中,所述特徵字符串取微信中通用的特徵字符串「mm」,可以便於識別,對所述第一字符串進行有效識別。
優選地,所述步驟1中,按照如下預設資料庫表對所述第一字符串進行加密;
wxmd5(wxno varchar,md5char);
其中,wxno表示所述第一字符串,varchar表示所述第一字符串為固定長度的數據類型,md5為加密運算,char表示所述md5加密運算為可變長度的數據類型,wxmd5為對所述第一字符串進行md5加密運算後得到的第一加密字符串。
通過上述資料庫表可以建立所述第一加密字符串與所述第一字符串之間的一一映射關係,即建立用戶微信號碼UID與本地文件目錄名之間的映射關係,這樣在後續查找時,可以通過待取證本地文件目錄名比較方便的得到對應的用戶微信號碼UID,快速實現解密,同時提高數據的安全性。
優選地,創建所述碰撞資料庫後,還對所述碰撞資料庫劃分,得到多個碰撞子資料庫,並在生成所述第一加密字符串後將其存儲至其中一個所述碰撞子資料庫中。由於所述碰撞資料庫的量非常大,按照11位數字的長度,每一位的值可以是0-9,和」-」字符,通過最終枚舉,總的數據量在200億條以上。這樣在存儲和檢索時效率非常低下,相應速度極慢,通過對所述碰撞資料庫劃分,可以比較方便的將數據存儲至不同的碰撞子資料庫,這樣在查找時非常方便。
優選地,根據所述加密運算對所述碰撞資料庫劃分的具體實現為:根據所述第一字符串的前n位將所述碰撞資料庫劃分為mn個碰撞子資料庫,並根據所述第一加密字符串的前n位將其存儲至對應的所述碰撞子資料庫中;其中m表示所述第一字符串的進位數。通過上述方式可以根據第一字符串的數據量針對性的將所述碰撞資料庫劃分為數量與之相匹配的碰撞子資料庫,並且通過所述第一字符串的前n位對所述碰撞資料庫進行劃分,可以在存儲或檢索時快速精準地找到對應的碰撞子資料庫,相應速度極快。
優選地,所述第一字符串取16進位,取所述第一字符串的前2位將所述碰撞資料庫劃分為00-FF共256個碰撞子資料庫,實際中可以達到毫秒級別的相應速度。
本實施例中,所述步驟2中,獲取待取證本地文件目錄名對應的用戶微信號碼UID的具體實現為:在所述碰撞資料庫中查詢待取證本地文件目錄名,並對待取證本地文件目錄名進行解密運算,獲取用戶微信號碼UID;其中,所述解密運算與所述加密運算互為逆運算。通過上述方式可以在查找時根據待取證本地文件目錄名直接快速的得到用戶微信號碼UID,便於後續根據用戶微信號碼UID實現對應用戶微信的加密文件的解密,安全性好,並且解密運算與所述加密運算之間互為逆運算,不會出現錯誤,確保數據準確。
本實施例中,所述步驟3中生成解密秘鑰的具體實現為:
步驟31:根據用戶微信號碼UID讀取本地緩存文件中對應的用戶IMEI值;
步驟32:調用AES解密秘鑰函數,並根據所述用戶微信號碼UID和用戶IMEI值生成AES解密秘鑰;
步驟33:調用AES解密函數,並根據所述AES解密秘鑰循環讀取微信的加密文件,實現微信取證。
通過上述方式可以根據用戶微信號碼UID生成AES解密秘鑰,並根據AES解密秘鑰對應用戶的微信加密文件進行解密,快速方便,並且安全性能極高,不容易破解。
具體地,本發明中所述AES解密秘鑰函數採用openssl函數中的PKCS5_PBKDF2_HMAC_SHA1函數,所述AES解密函數採用AES_cbc_encrypt解密函數。
優選地,所述步驟32中,根據所述用戶微信號碼UID和用戶IMEI值生成解密秘鑰的具體實現為:
步驟321:將用戶微信號碼UID和對應的用戶IMEI值進行拼接,形成第二字符串;
步驟322:將所述第二字符串進行所述加密運算,得到第二加密字符串;
步驟323:調用AES解密秘鑰函數,並根據所述第二加密字符串生成對應的AES解密秘鑰。
通過將所述用戶微信號碼UID和對應的用戶IMEI值進行拼接,並對拼接後的第二字符串進行加密運算得到第二加密字符串,再通過AES解密秘鑰函數得到AES解密秘鑰,進一步提高加密的密級,增強數據的安全性。
本發明的一種基於數據碰撞的微信取證方法,利用微信的本地數據和用戶UID之間的關聯,通過碰撞資料庫完整建立用戶本地數據和用戶微信號碼UID的映射關係,可以比較方便對微信的加密文件進行解密,實現微信取證,同時可以在多個微信帳號同時登錄時,準確獲取每個用戶微信號碼UID,並進行針對性的解密,安全性極高。
實施例二、一種基於數據碰撞的微信取證系統。下面將結合圖2對本實施例的一種基於數據碰撞的微信取證系統進行詳細地介紹。
如圖2所示,一種基於數據碰撞的微信取證系統,包括創建模塊、加密模塊、查詢模塊和解密模塊。所述創建模塊用於創建碰撞資料庫;所述加密模塊用於用戶微信號碼UID進行加密,並將加密後得到的第一加密字符串作為本地文件目錄名存儲在所述碰撞資料庫中;所述查詢模塊用於在所述碰撞資料庫中查詢待取證本地文件目錄名,並獲取待取證本地文件目錄名對應的用戶微信號碼UID;所述解密模塊用於根據獲取的用戶微信號碼UID生成AES解密秘鑰,並通過所述AES解密秘鑰對本地文件進行解密,完成微信取證。
本實施例中,所述加密模塊將預設特徵字符串與用戶微信號碼UID進行拼接形成第一字符串,並對所述第一字符串進行加密運算,得到第一加密字符串;其中,用戶微信號碼UID的位數不超過所述第一加密字符串的位數。這樣可以對所述微信號碼UID有效進行加密處理,並將加密得到的所述第一加密字符串作為本地文件目錄名存儲在所述碰撞資料庫中,便於後續查找。
優選地,所述加密模塊按照如下預設資料庫表對所述第一字符串進行加密;
wxmd5(wxno varchar,md5 char);
其中,wxno表示所述第一字符串,md5為加密運算,wxmd5為對所述第一字符串進行md5加密運算後得到的第一加密字符串。通過上述資料庫表可以建立所述第一加密字符串與所述第一字符串之間的一一映射關係,即建立用戶微信號碼UID與本地文件目錄名之間的映射關係,這樣在後續查找時,可以通過待取證本地文件目錄名比較方便的得到對應的用戶微信號碼UID,快速實現解密,同時提高數據的安全性。
優選地,所述創建模塊創建所述碰撞資料庫後,還對所述碰撞資料庫劃分,得到多個碰撞子資料庫,並在生成所述第一加密字符串後將其存儲至其中一個所述碰撞子資料庫中。由於所述碰撞資料庫的量非常大,按照11位數字的長度,每一位的值可以是0-9,和」-」字符,通過最終枚舉,總的數據量在200億條以上。這樣在存儲和檢索時效率非常低下,相應速度極慢,通過對所述碰撞資料庫劃分,可以比較方便的將數據存儲至不同的碰撞子資料庫,這樣在查找時非常方便。
優選地,所述創建模塊根據所述加密運算對所述碰撞資料庫劃分的具體實現為:根據所述第一字符串的前n位將所述碰撞資料庫劃分為mn個碰撞子資料庫,並根據所述第一加密字符串的前n位將其存儲至對應的所述碰撞子資料庫中;其中m表示所述第一字符串的進位數。這樣可以根據第一字符串的數據量針對性的將所述碰撞資料庫劃分為數量與之相匹配的碰撞子資料庫,並且通過所述第一字符串的前n位對所述碰撞資料庫進行劃分,可以在存儲或檢索時快速精準地找到對應的碰撞子資料庫,相應速度極快。
本實施例中,所述查詢模塊在所述碰撞資料庫中查詢待取證本地文件目錄名,並對待取證本地文件目錄名進行解密運算,獲取用戶微信號碼UID;其中,所述解密運算與所述加密運算互為逆運算。
本實施例中,所述解密模塊根據用戶微信號碼UID讀取本地緩存文件中對應的用戶IMEI值;然後調用AES解密秘鑰函數,並根據所述用戶微信號碼UID和用戶IMEI值生成AES解密秘鑰;最後調用AES解密函數,並根據所述AES解密秘鑰循環讀取微信的加密文件,實現微信取證。這樣可以根據用戶微信號碼UID生成AES解密秘鑰,並根據AES解密秘鑰對應用戶的微信加密文件進行解密,快速方便,並且安全性能極高,不容易破解。
優選地,所述解密模塊將用戶微信號碼UID和對應的用戶IMEI值進行拼接,並將得到的第二字符串進行加密運算得到第二加密字符串;再調用AES解密秘鑰函數,並根據所述第二加密字符串生成對應的AES解密秘鑰。通過將所述用戶微信號碼UID和對應的用戶IMEI值進行拼接,並對拼接後的第二字符串進行加密運算得到第二加密字符串,再通過AES解密秘鑰函數得到AES解密秘鑰,進一步提高加密的密級,增強數據的安全性。
本發明的一種基於數據碰撞的微信取證系統,通過所述加密模塊可以對用戶微信號碼UID進行加密,並存儲至碰撞資料庫中,建立了用戶本地數據與用戶微信號碼UID的映射關係,在查詢模塊中輸入待取證本地文件目錄名,即可通過所述解密模塊對微信的加密文件進行解密,實現微信取證。
以上所述僅為本發明的較佳實施例,並不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。