Th.S Nguyễn Văn Khải
Việc bảo mật tuyệt đối một thư mục hoặc một tệp là một nhu cầu bức thiết của nhiều người dùng máy tính, đặc biệt với những người dùng chung một máy tính. Mặc dù trong hệ điều hành DOS, trong hệ điều hành Windows và đặc biệt là trong hệ điều hành mạng đã có những thủ tục cài đặt mật khẩu, cài đặt thuộc tính ẩn (H), thuộc tính chỉ đọc ® vv... Nhưng đó chỉ là những bảo mật cục bộ và mức bảo mật không cao. Các thư mục hoặc các tệp bảo mật được ở chỗ này nhưng không bảo mật được ở chỗ khác. Có các thư mục và tệp được Windows bảo vệ chống xoá nhưng lại xoá được dễ dàng trong DOS...
Vậy có cách nào bảo mật được thư mục một cách tuyệt đối không ? Có. Bạn phải tự làm lấy vì chưa có một chương trình nào giúp bạn làm điều này. Phương án để bảo mật tuyệt đối một thư mục mà chúng tôi đã lựa chọn và dùng rất có hiệu quả là đánh lạc hướng địa chỉ lưu trú của thư mục trên đĩa, làm cô lập các cluster mà thư mục đã chiếm giữ, do đó không thể can thiệp được vào thư mục này bằng bất kì cách nào. Vậy làm thế nào để đánh lạc hướng địa chỉ lưu trú thật của thư mục ?.
Để làm được điều này bạn cần biết rằng FAT là một bảng định vị file (File Allocation Table). Bảng này gồm nhiều phần tử. Đĩa có bao nhiêu cluster thì FAT cũng có bấy nhiêu phần tử (Cluster là một liên cung gồm nhiều sector nhóm lại). Phần tử thứ n của FAT tương ứng với cluster thứ n trên đĩa. Một file chiếm bao nhiêu cluster trên đĩa thì đề mục FAT của nó cũng có bấy nhiêu phần tử. Phần tử FAT này chứa số thứ tự của một phần tử FAT khác. Phần tử chứa FF FF là mã kết thúc file <EOF>. Như vậy một đề mục FAT của một File sẽ chứa số thứ tự của các cluster mà file chiếm giữ. Đề mục FAT của một thư mục chỉ có một phần tử chứa mã <EOF>. Số thứ tự của phần tử này ứng với số thứ tự của cluster chứa đề mục của các thư mục con và của các tệp có trong thư mục đó. Mỗi phần tử FAT chiếm 2 bytes với FAT 16 bit và chiếm 4 bytes với FAT 32 bit.
Mỗi đề mục của thư mục hoặc của tệp trong bảng thư mục gốc (Root Directory) đều chiếm 32 bytes, phân thành 8 trường như sau: Trường 1 chứa 8 byte tên chính, trường 2 chứa 3 byte phần tên mở rộng, trường 3 là 1 byte thuộc tính, trường 4 chiếm 10 byte (DOS không dùng và dành riêng cho Windows), trường 5 chiếm 2 byte về ngày tháng tạo lập, trường 6 chiếm 2 byte về giờ phút giây tạo lập, trường 7 gọi là trường Cluster chiếm 2 byte chứa số thứ tự của phần tử FAT đầu tiên của mỗi đề mục FAT, trường 8 chiếm 4 byte về dung lượng.
Khi truy cập một thư mục hay một tệp, trước tiên máy đọc 8 trường nói trên trong bảng thư mục, sau đó nhờ đọc được thông tin ở trường cluster mà máy chuyển đến đọc cluster đầu tiên của tệp đồng thời chuyển đến đọc phần tử FAT đầu tiên của đề mục FAT rồi đọc tiếp các phần tử FAT khác trong đề mục để biết số thứ tự của các cluster tiếp theo và truy cập tiếp các cluster này cho đến khi gặp mã FF FF đó là mã kết thúc file <EOF> trong đề mục FAT thì dừng.
Như vậy muốn bảo mật thư mục hoặc tệp nào đó ta phải thay đổi nội dung của trường thứ 7 trong đề mục ROOT để nó không trỏ vào địa chỉ thật của thư mục hoặc của tệp mà trỏ vào một phần tử rỗng nằm ở cuối của FAT (khi đĩa chưa đầy thì phần tử này bao giờ cũng rỗng, tương ứng với cluster rỗng trên đĩa). Đồng thời để trình SCANDISK không phát hiện ra sự thất lạc cluster ta cần phải ghi vào phần tử FAT cuối cùng này giá trị thật của cluster mà thư mục chiếm giữ.
Các thao tác cần thiết để bảo mật thư mục như sau :
1 - Tạo một thư mục BAOMAT ở thư mục gốc và chép tất cả các tệp cần bảo mật vào đó.
2 - Đọc số thứ tự của phần tử FAT cuối cùng (cũng là số thứ tự của cluster có nghĩa cuối cùng của đĩa):
Chạy chương trình Diskedit trong thư mục NC sau đó gõ ALT+C để làm hiện ra cửa sổ Select Cluster Range. Giả sử trong cửa sổ này bạn nhận được thông tin "Valid Cluster numbers are 2 through 33,196". điều này có nghĩa là số thứ tự của Cluster có nghiã cuối cùng của đĩa là 33.196, đó cũng là số thứ tự của phần tử có nghĩa cuối cùng của FAT. Đọc xong thì gõ ESC .
3 - Tìm đề mục của thư mục cần bảo mật trong bảng Root Directory để ghi giá trị vừa đọc được ở bước 2 vào trường Cluster của đề mục ấy như sau:
Chạy Diskedit và gõ ALT+R, dịch con trỏ lên thư mục gốc và ấn Enter để mở bảng thư mục gốc. Rà bảng thư mục từ trên xuống và dừng lại ở đề mục cần bảo mật. Dịch chuyển con trỏ tới cột Cluster của đề mục này, ghi lại giá trị cũ vào giấy và nhập vào đó giá trị mới (với ví dụ trên là 33196). Nhập xong thì dịch con trỏ xuống dưới rồi gõ CTRL+W, chọn nút Write trong cửa sổ Write changes để ghi vào đĩa.
4 - Ghi giá trị cũ đã ghi nhớ trên giấy vào phần tử cuối của FAT bằng cách chạy chương trình Diskedit, gõ ALT+S làm hiện lên cửa sổ Select Sector Range, với mục Sector Usage bạn sẽ nhìn thấy vùng FAT 1 và vùng FAT 2 chiếm từ sector nào đến sector nào. Chẳng hạn bạn được thông tin sau: 1-130 1st FAT area, 131-260 2nd FAT area, có nghĩa là phần tử cuối cùng của FAT 1 nằm ở sector 130 và của FAT 2 là sector 260. Bạn hãy gõ vào hộp Starting Sector:[...] số thứ tự của Sector cuối cùng của FAT 1 (với ví dụ trên là 130) và ấn Enter để mở cửa sổ Disk Editor, dịch chuyển con trỏ đến cluster cuối cùng có nghiã của FAT 1 (vừa dịch con trỏ vừa quan sát chỉ thị số cluster ở thanh trạng thái và dừng lại ở cluster có nghĩa cuối cùng với ví dụ trên là 33196). Nhập vào đó giá trị đã ghi nhớ trên giấy ở bước 3 . Cuối cùng gõ Ctrl+W, đánh dấu vào mục Synchronize FATs và chọn Write để ghi vào 2 FAT của đĩa.
Chú ý:
* Khi cần truy cập thư mục này bạn chỉ cần nạp lại giá trị cũ cho trường Cluster của đề mục Root mà không cần xoá bỏ giá trị đã ghi ở cuối FAT.
* Vì hệ điều hành Windows có chế độ bảo vệ vùng đĩa hệ thống nên muốn thực hiện các thao tác trên bạn phải khởi động máy ở hệ điều hành DOS.
* Cần bỏ chế độ bảo mật này trước khi thực hiện chống phân mảnh (Defrag).
|