
- Python取證教程
- 首頁
- 簡介
- Python安裝
- Python概述
- 基本的取證應用
- 雜湊函式
- 破解加密
- 虛擬化
- 網路取證
- Python模組
- Dshell和Scapy
- 搜尋
- 索引
- Python影像處理庫
- 移動取證
- 網路時間協議
- 多程序支援
- 記憶體與取證
- Linux中的取證
- 入侵指標
- 雲實施
- Python取證有用資源
- Python取證 - 快速指南
- Python取證 - 有用資源
- Python取證 - 討論
Python取證 - 移動取證
對標準計算機硬體(如硬碟)進行的取證調查和分析已經發展成為一個穩定的學科,並藉助分析非標準硬體或瞬態證據的技術來進行。
儘管智慧手機在數字調查中越來越常用,但它們仍然被認為是非標準的。
取證分析
取證調查搜尋的資料包括智慧手機接收的呼叫或撥打的號碼。它可能包括簡訊、照片或任何其他犯罪證據。大多數智慧手機都具有使用密碼或字母數字字元的螢幕鎖定功能。
這裡,我們將舉一個例子來說明Python如何幫助破解螢幕鎖定密碼以從智慧手機檢索資料。
手動檢查
Android支援使用PIN碼或字母數字密碼的密碼鎖。兩種密碼的長度都要求在4到16位數字或字元之間。智慧手機的密碼儲存在Android系統中的一個名為password.key的特殊檔案中,該檔案位於/data/system目錄下。
Android儲存密碼的加鹽SHA1雜湊值和MD5雜湊值。這些密碼可以用以下程式碼處理。
public byte[] passwordToHash(String password) { if (password == null) { return null; } String algo = null; byte[] hashed = null; try { byte[] saltedPassword = (password + getSalt()).getBytes(); byte[] sha1 = MessageDigest.getInstance(algo = "SHA-1").digest(saltedPassword); byte[] md5 = MessageDigest.getInstance(algo = "MD5").digest(saltedPassword); hashed = (toHex(sha1) + toHex(md5)).getBytes(); } catch (NoSuchAlgorithmException e) { Log.w(TAG, "Failed to encode string because of missing algorithm: " + algo); } return hashed; }
由於雜湊密碼儲存在salt檔案中,因此使用字典攻擊來破解密碼是不可行的。這個salt是64位隨機整數的十六進位制表示字串。使用已ROOT的智慧手機或JTAG介面卡很容易訪問salt。
已ROOT的智慧手機
檔案/data/system/password.key的轉儲儲存在SQLite資料庫的lockscreen.password_salt鍵下。在settings.db中,密碼被儲存,其值在下面的截圖中清晰可見。

JTAG介面卡
一種稱為JTAG(聯合測試行動組)介面卡的專用硬體可用於訪問salt。類似地,Riff-Box或JIG-介面卡也可以用於實現相同的功能。
使用從Riff-box獲得的資訊,我們可以找到加密資料的位 置,即salt。以下是規則:
搜尋關聯字串“lockscreen.password_salt”。
位元組表示salt的實際寬度,即其長度。
這就是實際搜尋以獲取儲存的智慧手機密碼/PIN的長度。
這套規則有助於獲取合適的salt資料。
