![我如何知道 LUKS 標頭已損壞?](https://rvso.com/image/756787/%E6%88%91%E5%A6%82%E4%BD%95%E7%9F%A5%E9%81%93%20LUKS%20%E6%A8%99%E9%A0%AD%E5%B7%B2%E6%90%8D%E5%A3%9E%EF%BC%9F.png)
我的電腦當機了很長一段時間,我按下了重置按鈕。重新啟動後,所有 5 個 luks 加密 (LUKS 1) 檔案系統將不再開啟。我收到的訊息是“此密碼沒有可用的密鑰”。我確信我使用了正確的密碼。多年來我一直對所有檔案系統使用相同的密碼。除了其中一個卷外,我都有所有這些卷的備份,因此我想分析我的選擇。我已經在所有文件系統上嘗試了“cryptsetup isLuks”和“cryptsetup luksDump”,所有這些都成功了,我的意思是,它們是 Luks 分區,我可以轉儲它們的標頭並查看它們的插槽。然而,在研究中,我發現了類似的情況,人們說他們的標頭已損壞且無法修復。我不知道如何識別這一點。我怎麼做?感謝您提供任何資訊。
答案1
我找到了這個頁面:
https://bbs.archlinux.org/viewtopic.php?pid=1846810#p1846810
還有這個頁面:
進一步來說,
「您可以很快判斷是否有恢復的機會。執行「hexedit -s /dev/sdx」並在磁區開頭搜尋十六進位字串「4C 55 4B 53 BA BE」。(這是 ASCII 字串) 「LUKS」後面跟著十六進位位元組0xBA 和0xBE。
所有拒絕打開的五個檔案系統的標頭中都完整地保留了該字串,因此它們似乎都沒有損壞。現在,為什麼所有這些都無法打開是一個單獨的問題,我懷疑我永遠不會知道發生了什麼。
答案2
為後代提供答案。
如何知道 LUKS 標頭是否已損壞?
對您問題的簡短回答是,當您嘗試解鎖它時,它會告訴您它已損壞,或者如果它是啟動分區,則在嘗試輸入密碼時系統會凍結。但是,就您而言,它只是給您一個錯誤,表明密鑰“無法使用此密碼短語使用”,這有點奇怪。
既然您已經發現了,hexedit -s <device>
您可能還想dmsetup info <device_name>]
在嘗試輸入密碼後嘗試運行並查看報告的狀態類型、報告的表是否存在等。DMsetup 的手冊頁了解更多。
或試試看dmsetup table --showkeys <device or header file>
它是否能辨識它們的鍵槽。
檢查 LUKS 標頭的其他方法
除了使用 cryptsetup luksHeaderBackup <device> --header-backup-file <file>
建立標頭備份(即使它沒有打開,因為luksDump
沒有報告任何損壞)之外,您還可以嘗試對它們進行備份,然後嘗試從這些備份中恢復它們,看看是否cryptsetup
會讓你以這種方式恢復標題。除了上述方法之外,您還可以使用dd
另一種方法來建立標頭的「備份」:
root@system:# dd if=<device> of=<Luksheader_filename> bs=512 count=4097
除了使用hexedit
來驗證標頭之外,您還可以在上面剛剛建立的檔案上使用file
或命令,甚至透過將裝置名稱替換為路徑和檔案名稱來對檔案本身執行命令。strings
luksDump
root@system:# file <Luksheader_filename>
root@system:# strings <Luksheader_filename> | grep -i luks LUKS
root@system:# cryptsetup luksDump <Luksheader_filename>
類似的案例可能相似也可能不相似
就其他人和您的研究而言,您在上面鏈接的那些,並不清楚當您的計算機凍結時您在做什麼,因此這將是您最後一次能夠訪問驅動器。相比之下,兩個連結涉及其各自的 LUKS 加密磁碟機無法存取的兩個不同原因,其中一個與羥丙酸配置錯誤,另一個是在內核升級之後,僅影響/home
捲而不影響/root
卷,實際上可能是由於修剪/丟棄問題。
也許根據廣泛的解釋可能會發現更相似的問題這裡,他們甚至開始考慮宇宙射線在某處強制進行位開關的可能性,對於那些可能想仔細檢查他們是否已經探索了所有其他選項的人來說,這可能是一本很好的讀物。
由於根據所提供的資訊尚不清楚,您所指的這些“檔案系統”* 是否保存您的作業系統或只是我們廣義上所說的“內容”,因此了解您的系統在嘗試時是否凍結將有所幫助如果 LUKS 加密卷/分區之一是您的啟動驅動器並且密碼不起作用,或者您只是嘗試從終端和/或 GUI 訪問這 5 個設備(以及在什麼版本的 linux 上),則啟動)它會給你重複的錯誤?在這種情況下,後者可能還有一線希望。
*需要澄清的是,「檔案系統」指的是資料的儲存方式和位置,因此檔案系統通常指的是 ext3、ext4、NTFS 等格式,而 LUKS 是一種磁碟加密規範。因此,它並沒有讓我們深入了解這 5 個 LUKS「檔案系統」(大概是您提到的磁碟區)作為系統的一部分所扮演的角色。
非標頭可能的問題
問題是如何識別和/或確定損壞的 LUKS 標頭。然而,如果沒有任何標頭的備份,就不會有未損壞的標頭版本供 OP 進行比較。由於現在可能更清楚,適用的情況是不確定的,並且可能與連結的範例不同,因此可能值得嘗試:
使用以下命令檢查是否為 LVM 問題
root@system:# lvscan
# or
root@system:# lvdisplay
# To check if you can still identify the LUKS filesystems as volume groups or
# supported LVM block devices.
root@system:# vgdisplay --short
# To find the Volume Group (usually fails if password won't work)
root@system:# lvs -o lv_name,lv_size -S vg_name=[name_of_volumegroup]
# To list the logical volumes identified in the volume group (if it works)
並且,探索其他可能性
不幸的是,使用 LUKS1 加密時,由於多種原因未實現校驗和,您可以從中了解這個簡報如果需要的話。否則,這只是說 LUKS 中唯一的「校驗和」是告訴您沒有匹配的金鑰槽並暗示它已損壞的校驗和。
然而,有人指出,您說過所有 5 個檔案系統都不會打開並將它們全部稱為卷,因此不清楚它是否全部位於一個磁碟上以及它是否是 SSD 驅動器,在這種情況下,記憶體和儲存掃描驅動器將是下一個建議。
最後,可以肯定的是,你選擇了cryptsetup
「sudo
yes」?
您可能還想嘗試
- 使用 gparted GUI 中發現的有關分區表等的復原功能
- 對其進行掃描
ddrescue
- 確保大寫鎖定或數字鎖定未打開(我知道這很愚蠢,但只是一個溫和的提醒)
- 嘗試一些建議的答案這裡
- 如果電腦當機之前有更新,請嘗試回滾到先前的版本
- 嘗試在另一個鍵槽中新增密碼
邊註
假設您嘗試在終端機中使用 sudo 開啟 LUKS 加密卷,因為沒有提及特定係統或 GUI,也沒有提及啟動過程。