Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
1,68 MB
Nội dung
ĐỒ ÁN HỆ ĐIỀU HỆ ĐIỀU HÀNH Quản lý hệ thống tập tin Windows NHÓM THỰC HIỆN 19120148 – Lê Huỳnh Minh Tuấn 19120224 - Lê Thị Thu Hiền 19120151- Nguyễn Trí Tuệ 19120422 - Nguyễn Huy Tùng 19120341 - Phạm Nhựt Quang TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU MỤC LỤC NHÓM THỰC HIỆN MỤC LỤC BẢNG PHÂN CÔNG CÔNG VIỆC ĐÁNH GIÁ MỨC ĐỘ HOÀN THÀNH ĐỐI VỚI PHÂN VÙNG FAT32 ĐỐI VỚI PHÂN VÙNG NTFS 11 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU BẢNG PHÂN CÔNG CÔNG VIỆC TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU ĐÁNH GIÁ MỨC ĐỘ HOÀN THÀNH Theo yêu cầu: Yêu cầu Đọc thông tin chi tiết phân vùng FAT32 Đọc thông tin chi tiết phân vùng NTFS Đọc thư mục phân vùng FAT32 Đọc thư mực phân vùng NTFS Trên đồ án: - Đã hoàn thành tất yêu cầu đề đặt TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU ĐỐI VỚI PHÂN VÙNG FAT32 Mô tả bước thực Bước 1: Nhập thông tin ổ đĩa cần thực truy vấn (Lưu ý ổ đĩa nhập thông qua hàm LPCWSTR drive = L"\\\\.\\D:") Dựa vào ReadSector cung cấp sẵn viết hàm ReadBytes để đọc giá trị byte thứ n - Bước 2: Để chuyển byte từ Hex thành Dec, sử dụng hàm Dec - Bước 3: Đọc Bootsector (sector 0) theo nội dung lý thuyết học - Bước 4: Trích xuất nội dung cần thiết Lấy thông tin vùng Rdet thông tin vùng Data từ bảng FAT - Bước 5: Đọc Sector vùng Data - Bước 6: Thực đọc thư mục có thư mục - Bước 7: Đọc file vẽ thư mục xuất nội dung txt Thư viện sử dụng - #include #include #include - #include #include #include - #include Hàm thực - int ReadSector(LPCWSTR drive, int readPoint, BYTE sector[512]): o Nhận tham số ổ đĩa đọc, số byte cần đọc, sector lưu trữ o Hàm dùng để đọc liệu sector, cụ thể 512 byte, trả giá trị dạng hexa - int HexToDecimal(string hex): o Chuyển chuỗi hệ thập lục phân hệ thập phân o Hàm dùng để chuyển chuỗi hệ thập lục phân hệ thập phân mục đích để tính tốn cho lưu trữ dạng little edian kích thước tệp, cluster bắt đầu,… - int ReadBytes(string offset, int numByte, BYTE sector[512]): o Nhận tham số truyền vào địa byte, số lượng byte cần đọc, sector lưu trữ o Hàm dùng để dùng để đọc địa byte trả giá trị thập phân trả giá trị kích thước tập tin, kích thước lưu trữ, số bảng FAT,… - void Rdet(BYTE sector[512], int rdet, int cluster, LPCWSTR drive): o Đọc thư mục, đọc byte Rdet o Chức hàm: xác định tập tin, dùng lại nhiều lần (đệ qui) để tìm thư mục - string hexa(int n): Đổi địa entry từ kiểu số trang ký tự để dùng hàm - TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU bool kiemTra(BYTE sector[512]): Hàm đảm bảo tính liên tục entry, kiểm tra entry có rỗng hay khơng Demo chương trình - Link demo youtube : https://www.youtube.com/watch?v=fEh3nQ7abU4 - Ổ đĩa (D:) tạo theo kiểu định dạng FAT32 có nội dung: - Hình : Thơng tin ổ đĩa D định dạng FAT32 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU - Hình : Thơng tin thư mục gốc Đoạn chương trình dùng để đọc Bootsector lấy thơng tin cần thiết để : TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU - Chương trình chạy cho thơng số sau : Hình : Bảng Boot Sector đọc từ ổ đĩa D Hình : Thơng tin đọc từ Bootsector - Hiển thị thư mục : TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU Hình 5: Cây thư mục Hình : Các tệp tệp DOAN Giải thích : Màn hình Console có xuất cặp mở -|> đóng sectors; //các sector mà data lưu trữ }; //Struct tệp tin, thông tin lấy từ attribute mft entry tương ứng struct File { int id; string name; int size;//Kích thước string data; int parentIndex;//ID cha vector< int64> sectors; //các sector lưu trữ }; //Struct thư mục, thông tin lấy từ attribute mft entry tương ứng struct Folder { int id; string name; vector child;//tệp tin vector folderchild;//thư mục int parentIndex; vector< int64> sectors; //các sector lưu trữ }; Hàm thực 4.1 Các hàm phụ trợ để đọc dãy mã nhị phân Đây hàm phụ để giúp đọc số struct Ở đây, chia làm hai phần ReadSector ReadByte TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU Cụ thể chức hàm thích Source code ReadSector.h ReadByte.h 4.2 Bios Parameter Block (BPB) Hàm đọc thông tin vào struct BPB sector void ReadBPB(BPB& bpb, BYTE sector[512]) 4.3 Master File Table (MFT) a MFT Hàm đọc thông tin vào struct MFT sector void ReadMFT(MFT& mft, BPB bpb, BYTE sector[512], LPCWSTR drive) Trong đó, để xác định số MFT cuối (đã đề cập câu hỏi 3, phần Mở đầu) ta gọi hàm int GetLastMFTEntry(MFTEntry entry) Hàm lấy số magicNumber từ struct AttributeBitmap $MFT(hàm đọc MFT entry Atrribute nhắc đến phần b, c) Hàm gọi lần Source Code, có $MFT có AttributeBitmap b MFT entry Hàm đọc thông tin vào struct MFT entry sector, quan trọng vector Atrribute giữ phần tử bool ReadMFTEntry(MFTEntry& entry, int startSectorMFT, LPCWSTR drive) c Atrribute - Hàm đọc danh sách attribute MFT entry, ta ý đến atrribute FILENAME, DATA, BITMAP (Chỉ có $MFT) vector ReadAttributes(MFTEntry mftentry, int startAttr, LPCWSTR drive) Hàm thực vòng lặp, lần lặp đọc atrribute đến hết Ở đây, bàn điều kiện hủy vòng lặp while (startAttr + attribute.size < 1024) { … … … startAttr += attribute.size; //Điểm bắt đầu attribute tổng điểm bắt đầu chiều dài attribute TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU attribute.size = ReadAttributeBytes(startAttr + 4, 4, entry);//Cập nhật chiều dài attribute attributes.push_back(attribute);//Thêm attribute vào vector } Điều kiện dừng tổng điểm bắt đầu chiều dài attribute xét nhỏ 1024 (startAttr + attribute.size < 1024), điểm kết thúc MFT entry đánh dấu 0xFF, hàm đọc giá trị attribute.size lớn thỏa điều kiện dừng 4.4 Cây thư mục Các hàm phục vụ cho việc đọc thư mục khai báo File.h Đây hàm đọc MFT entry vào tệp tin, thư mục xếp thư mục, cuối hàm, xuất thư mục hình void PrintRootFolder(vector entries, vector& files, vector& folders); 4.5 Thứ tự thực thi - - - - Gọi hàm void ReadNTFS(LPCWSTR drive, BYTE sector[512]) để bắt đầu đọc Gọi hàm ReadBPB(bpb, sector) để đọc BPB sector Gọi hàm ReadMFT(mft, bpb, sector, drive); Trong đó, để lấy số MFT entry cuối gọi hàm int GetLastMFTEntry(MFTEntry entry) magicNumber struct AttributeBitmap Lặp vòng lặp từ MFT entry đến số MFT cuối để gọi hàm ReadMFTEntry(entry, mft.startClusterMFT * bpb.sectorPerCluster, i, drive); Mỗi MFT entry đọc header để biết tệp tin hay thư mục đọc vị trí atrribute Sau đọc attribute vào vector Nếu FILENAME lưu tên tệp tin/thư mục mã ID cha; DATA đọc nội dung, tùy theo resident hay non-resident mà đọc vùng MFT hay vùng Non-resdident; BITMAP có $MFT nội dung lưu vùng Non-resident Sau đó, thực hàm PrintRootFolder(entries, files, folders) để đọc MFT entry vào tệp tin, thư mục in thư mục TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU - Ta thấy thư mục gốc có thư mục A, tệp tin New Text Document.txt, DataGeneration1.sql - Sau người dùng chọn truy xuất tiếp tệp tin hay thư mục cách chọn hay TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU Người dùng tiếp tục nhập ID tệp tin hay thư mục để hiển thị nội dung bên - Kết thúc nhấn ESC Demo chương trình Link youtube: https://youtu.be/1_u2YS6PdZM Tài liệu tham khảo - Slide giảng Hệ Điều Hành Thạc Sĩ Lê Viết Long ĐH KHTN – TPHCM - https://sabercomlogica.com/en/ntfs-non-resident-and-no-named-attributes/ - Chuỗi blog Hệ thống tệp tin NTFS thầy Lê Gia Công: https://legiacong.blogspot.com/2014/04/he-thong-quan-ly-tap-tin-ntfs-4vbr-bpb.html - TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ... nhat ĐỒ ÁN HỆ ĐIỀU BẢNG PHÂN CÔNG CÔNG VIỆC TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU ĐÁNH GIÁ... tham khảo - Slide giảng Hệ Điều Hành Thạc Sĩ Lê Viết Long ĐH KHTN – TPHCM - https://sabercomlogica.com/en/ntfs-non-resident-and-no-named-attributes/ - Chuỗi blog Hệ thống tệp tin NTFS thầy Lê Gia... Thơng tin ổ đĩa D định dạng FAT32 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat ĐỒ ÁN HỆ ĐIỀU - Hình : Thơng tin thư mục gốc Đoạn chương trình dùng để đọc Bootsector lấy thông tin cần