
我使用的是 Win10 筆記本,遇到以下問題:
我使用內建加密功能對一個資料夾(包括所有子資料夾)進行了加密,右鍵單擊資料夾 > 屬性 > 高級時會獲得該功能。
我將該資料夾的一個包含一些 .cpp 檔案的子資料夾移至 USB 磁碟機 (FAT32),並從那裡移至 Linux HD (EXT3/EXT4),但沒有意識到它仍然是加密的。
在我的 Linux PC 上,我顯然無法開啟這些文件,因為它們具有 .p 檔案副檔名並且已加密。所以我將它們移回 USB 驅動器,然後從那裡移至筆記型電腦。
但現在在筆記本上我也無法再打開它們。看起來 Win10 甚至沒有意識到它們仍然是加密的,因為屬性中的掛鉤不再設定。
我已使用 Azure 資訊保護檢視器進行安裝,但僅收到無法開啟檔案類型(.cpp)的錯誤。 (不知道確切的英文錯誤通知,因為我沒有進行英文安裝)
答案1
看來微軟正在使用 FAT32 目錄條目中以前未使用的字段,並且可能還使用隱藏的目錄條目和長文件名和短文件名的技巧來在 FAT32 上存儲 EFS 元數據:
加密檔案具有“.PFILE”副檔名,其 8.3 目錄條目儲存附加元資料。在目前的實作中,該元資料適合 6 位元:兩位用作標誌,四位用於儲存填充大小。
附加元資料儲存在 NTByte 欄位中,該欄位位於 8.3 目錄項內 12 位元組的偏移處。先前,該欄位僅用於儲存將短基本名稱或副檔名標記為小寫的兩個標誌(分別為#3 和#4 位元)。
現在,剩餘的位元也被使用。位元 #0 在檔案加密時設定(當預設情況下新建立的檔案應加密時,也為目錄設定),位元 #1 在檔案以大 EFS 標頭開頭時設定(否則,它是標準 EFS)標題) 。其他位元(位元#2、#5、#6 和#7)用於儲存填充大小(大小最多為15 個位元組,因此4 位元就足夠了)——其位元#0 (LSB) 用於儲存填充大小。
(來源,另請參閱參考文獻美國專利US10726147B2)
透過將檔案移走然後再放回去,您就破壞了特殊的元數據,因為 Linux 不知道這一點。
很遺憾地說,您的文件幾乎肯定無法恢復。不過,您可以嘗試猜測隱藏的元數據,畢竟只有 64 個可能的值。不過,執行此操作需要原始磁碟十六進位編輯器或自訂檔案系統驅動程式。
答案2
經過幾天的搜索我找到了解決方案,
問題是,當您將檔案複製到Linux 並將其複製回已損壞檔案的元資料時,我使用磁碟編輯器解決了這個問題,我創建了相同大小的檔案並對其進行加密,然後將其複製到FAT32 驅動器並複製該檔案的元資料之後刪除它並用損壞的“.PFILE”替換它並替換元數據
謝謝“Daniel B”,你的回答對我很有幫助