硬碟資料安全不容忽視,本文介紹四種不同層級的加密/保護手法。
分區表位於 0柱面0磁頭1扇區 (MBR)。關鍵位元組:
80h 表示 C 槽為啟動分區。改為 00h → 無法從硬碟開機,但軟碟開機後仍可存取。06h (大於 32MB 基本 DOS 分區)。修改此處可加密:
00h:分區標示為未使用,無法從 C 開機,軟碟開機後原 C 槽消失,D 變 C、E 變 D...。05h (擴展分區旗標):無法從硬碟開機,軟碟開機後所有邏輯碟均不可存取,等同整碟加鎖。55AAh。改為 0000h 同樣可整碟加鎖不可存取。操作工具:Norton DiskEdit 直接修改該扇區;或 Debug 環境用 INT 13h 子功能 02h 讀入記憶體修改後用 03h 寫回。進階做法:備份分區表項後全歸零,他人不知分區資訊無法解鎖。
將原 MBR 與分區資訊存入硬碟未使用的隱含扇區 (如 0柱面0磁頭3扇區)。用 Debug 寫入 <512 bytes 程式 (實際 ~100 bytes) 至 MBR (0柱面0磁頭1扇區)。程式功能:執行時先輸入密碼,錯誤進入死迴圈;正確則讀取隱含扇區的原 MBR 並轉去執行。
因 BIOS 啟動時呼叫 INT 19h 讀取 MBR 到 0000:7C00h 執行,我們偷梁換柱置換了 MBR。軟碟開機也因 MBR 無分區資訊而無法存取硬碟。可將部分程式駐留高端記憶體監視 INT 13h 防止 MBR 被改寫。
參考 UNIX 多用戶機制,在 DOS 下改良硬碟管理系統:
軟碟有實體寫保護缺口,硬碟無硬體支援,但可攔截 INT 13h 實現。DOS 寫操作最終皆呼叫 INT 13h 子功能 (如 03h 寫扇區)。攔截 INT 13h,當 AH=03h 且柱面號 (由 CL 高兩位與 CH 組成) 落在目標邏輯碟範圍內 (例:E 槽起始柱面 E5h~163h) 時直接返回不執行寫入,即可實現該邏輯碟寫保護。