Số ma thuật số điểm của một hệ thống tập tin trong một siêu khối là gì?


9

Tôi đang làm việc trên một hệ thống NAS tầm trung về cơ bản chạy trên Linux và tôi đã thực hiện một số thử nghiệm tuyệt vời ngày hôm nay. Từng bước dẫn tôi đến việc sử dụng fsdb để làm hỏng số ma thuật trên một hệ thống tệp để làm hỏng nó / kiểm tra tập lệnh nên sửa nó.

Tôi loay hoay một lúc và không tìm thấy lời giải thích chắc chắn. Bất kỳ có thể làm sáng tỏ trong một thời trang trung gian?

Câu trả lời:


15

Một con số kỳ diệu là một chuỗi các byte được sử dụng trong tất cả các tệp có định dạng nhất định, thường ở một vị trí nhất định (thường ở đầu). Vì tất cả các tệp ở định dạng cụ thể đó có chuỗi byte cụ thể ở vị trí cụ thể đó và hầu hết các tệp ở các định dạng khác không có nó, số ma thuật là một cách để nhận ra định dạng của tệp.

Ở đây, khái niệm này được áp dụng cho một định dạng hệ thống tập tin. Ví dụ: hệ thống tệp ext2 / ext3 / ext4 luôn có các byte 0x53 0xEF tại các vị trí 1080 Vang1081. Một hệ thống tập tin reiserfs luôn có ReIsErFs bắt đầu từ vị trí 65588 (hoặc ReIsEr2Fs, v.v., trong các phiên bản gần đây hơn). Các hệ thống tập tin khác có số ma thuật tương tự. Các công cụ hệ thống tập tin kiểm tra sự hiện diện của số ma thuật (và có thể là manh mối khác) để đảm bảo rằng bạn đã vô tình khởi chạy chúng trên dữ liệu được sắp xếp theo định dạng mà chúng không thể xử lý và có thể làm hỏng. Nếu bạn thay đổi số ma thuật trên một hệ thống tập tin, các công cụ thông thường có khả năng từ chối chạm vào nó; công cụ sửa chữa có thể thông minh hơn và coi một số ma thuật xấu chỉ là một trong những thứ có thể bị phá vỡ.

Các file lệnh nhận ra các tập tin dựa trên số ma thuật của họ. Bạn có thể chạy file -s /dev/sda1 để xem những gì nó nghĩ là trên phân vùng /dev/sda1. Các quyết định của nó dựa trên cơ sở dữ liệu thường được tìm thấy trong /etc/magic hoặc là /usr/share/misc/magic. Các lệnh cụ thể có thể sử dụng các số ma thuật khác nhau để nhận ra các định dạng tệp mà chúng có thể đối phó.


Trên Ubuntu, apt-get install source file sẽ kéo file-x.yy/magic/Magdir/filesystems trong đó có chính xác thông tin mà câu hỏi (và tôi) đang tìm kiếm.
Nick Garvey

Không nên như vậy file /dev/sda1?
Bobby

@ BOB Không, file /dev/sda1 sẽ chỉ cho bạn biết đây là nút thiết bị, nó không nói gì về nội dung. Bạn cần một trong hai file </dev/sda1 hoặc là file -s /dev/sda1.
Gilles

Ồ được rồi, cho tôi file < /dev/sda1 thất bại với văn bản trợ giúp từ tệp (thiếu tham số?), nhưng -s làm việc tuyệt vời Cảm ơn.
Bobby

1
@Bulk Ah, tôi hiểu rồi, tôi quên mất một nhân vật. nó là file - </dev/sda1, bởi vì bạn phải nói file rõ ràng để đọc từ stdin. Cảm ơn, tôi sẽ sửa nó.
Gilles
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.