So sánh tệp nhị phân — diff từng byte, căn chỉnh khối và phân tích mức bit
So sánh tệp nhị phân
Thả hai tệp và trang này sẽ so sánh chúng từng byte, ngay trong trình duyệt của bạn: mọi offset khác nhau, diff hex kèm ngữ cảnh bao quanh, bản đồ mật độ khác biệt, và phân tích mức bit cho thấy những bit nào đã thay đổi. Một chế độ căn chỉnh theo khối riêng phát hiện các chèn và xóa ở giữa tệp — trường hợp mà diff byte thông thường không căn được. Kết quả xuất ra TXT và CSV. Không có gì được tải lên đâu cả. Nếu bạn muốn sửa byte thay vì so sánh, xem trình soạn hex; với văn bản, xem công cụ So sánh văn bản.
1. Chọn hai tệp
TỆP A Thả tệp thứ nhất vào đây, hoặc nhấn để chọn Tối đa 200 MB. Vẫn ở trên máy này.
TỆP B Thả tệp thứ hai vào đây, hoặc nhấn để chọn Đã so với Tệp A.
Ngữ cảnh hex quanh mỗi khác biệt: — các khác biệt lân cận cách nhau dưới 16 byte được hiển thị thành một khối.
2. Kết luận
Bản tóm tắt so sánh sẽ hiển thị ở đây khi cả hai tệp đã được chọn và so sánh.
Mật độ khác biệt (đỏ: byte khác nhau, cam: byte chỉ có trong một tệp):
0x0
Phân tích mức bit — các vị trí bit nào đã thay đổi (của mọi byte khác nhau, A XOR B):
3. Khác biệt — xem hex
| đỏ = Tệp A, xanh lá = Tệp B, các hàng giống nhau chỉ in một lần
Loading…
Các khối khác biệt
Bảng khác biệt theo từng byte
4. Góc nhìn căn chỉnh theo khối (phát hiện chèn & xóa)
Diff từng byte căn offset N với offset N. Nếu các byte bị chèn hoặc xóa ở giữa của một tệp, mọi thứ sau điểm đó sẽ dịch chuyển và diff thông thường báo toàn bộ phần đuôi là khác nhau. Chế độ này băm các khối 1 KB, khớp chúng giữa hai tệp và báo kết quả dưới dạng các thao tác sao chép / chèn / xóa — giống cách các công cụ delta như xdelta nhìn một thay đổi. Dùng được khi cả hai tệp đều từ 64 MB trở xuống.
5. Xuất
Quyền riêng tư: cả hai tệp được đọc bằng FileReader của chính trình duyệt và so sánh trong tab này — không máy chủ, không tải lên, không lưu trữ. Tệp lớn được so sánh theo các lát 1 MB, nên ngay cả đầu vào 200 MB cũng không bao giờ nằm trọn trong bộ nhớ cùng lúc (trừ khi bạn chạy góc nhìn căn chỉnh theo khối, vốn nạp cả hai tệp trong khi làm việc).
So sánh tệp nhị phân là gì?
Một so sánh nhị phân xếp hai tệp thẳng hàng từ byte 0 và đi tiếp, báo cáo mọi offset mà các byte khác nhau — tương đương trên trình duyệt với lệnh kinh điển cmp -l. Công cụ diff văn bản không làm được việc này: chúng hoặc bị vướng với byte không in được, hoặc âm thầm diễn giải lại tệp theo một bảng mã ký tự nào đó. So sánh nhị phân coi cả hai tệp đúng như bản chất của chúng, tức là các mảng byte, và đó là điều bạn cần với ảnh firmware, bản dump đĩa, tệp cơ sở dữ liệu, khối dữ liệu đã mã hóa, hay bất kỳ tệp nào mà bạn không biết định dạng.
Ba câu hỏi được trả lời ở ba độ sâu khác nhau. “Chúng có giống nhau không?” là câu hỏi về checksum — công cụ trả lời nhanh nhất, nhưng chỉ bằng có hoặc không. “Chúng khác nhau ở đâu?” là diff từng byte trên trang này: các offset, giá trị, và những bit nào đã lật. “Đó là kiểu thay đổi gì?” là điều góc nhìn căn chỉnh theo khối bổ sung — khác biệt là một chỉnh sửa tại chỗ, một đoạn được chèn vào, hay một đoạn bị xóa đi.
Diff từng byte và căn chỉnh khối — vì sao cần hai góc nhìn?
Tình huống
Diff từng byte cho biết
Góc nhìn căn chỉnh theo khối cho biết
Một trường bị ghi đè tại chỗ (cùng kích thước tệp)
vài offset khác nhau rải rác
giống vậy, cộng thêm “mọi phần còn lại được sao chép nguyên”
1 KB được chèn tại offset 2000 của tệp B
mọi thứ từ 2000 trở đi “khác”
sao chép 0–2000, chèn 1 KB, sao chép phần còn lại
Một khối bị xóa ở giữa tệp B
mọi thứ từ điểm đó trở đi “khác”
sao chép đến chỗ trống, xóa N byte, sao chép phần còn lại
Tệp B là tệp A với một header khác được thêm vào đầu
toàn bộ tệp “khác”
xóa header, rồi một lần sao chép dài — tức là một độ dịch chuyển hằng số
Diff từng byte luôn đúng — những byte đó thực sự khác nhau tại những offset đó. Điều thay đổi là cách diễn giải khi có byte bị chèn hoặc xóa, giống hệt việc thêm một dòng vào đầu tệp văn bản làm mọi số dòng sau đó thay đổi.
Cách đọc phân tích mức bit
Với mỗi byte khác nhau, trang tính A XOR B và đếm những vị trí bit nào được bật. Biểu đồ phân bố đó rất có giá trị: các khác biệt tập trung ở bit 0 (bit ít quan trọng nhất của mọi byte) là dấu vân tay của steganography LSB, nơi thông điệp được giấu bằng cách nhích bit thấp của mẫu pixel hay âm thanh. Khác biệt trải đều trên cả tám vị trí nghĩa là toàn bộ giá trị đã bị ghi lại. Khác biệt chỉ chạm các bit cao thường có nghĩa là một trường đã bị thay bằng một giá trị có độ lớn rất khác. Khoảng cách Hamming (tổng số bit bị lật) định lượng cùng điều đó bằng một con số.
Một lưu ý thẳng thắn: dữ liệu ngẫu nhiên tại một byte bất kỳ trùng nhau với xác suất 1/256, nên hai tệp không liên quan có cùng kích thước vẫn khớp ở khoảng 0,4% số byte. Độ tương đồng 99,98% với một số ít khối khác biệt ngắn là một thay đổi mức bản vá; độ tương đồng 0,4% nghĩa là hai tệp đơn giản không liên quan đến nhau.
Những lỗi thường gặp
“Toàn bộ tệp đều đỏ sau khác biệt đầu tiên.” — đó là hiệu ứng dịch chuyển mô tả ở trên, không phải hỏng dữ liệu thật. Hãy chạy góc nhìn căn chỉnh theo khối: nếu nó báo một lần chèn và hai thao tác sao chép dài, thì hai tệp chỉ khác nhau đúng ở đoạn được chèn đó. “Checksum khớp nhưng các tệp khác nhau ở đây.” — nếu digest SHA-256 khớp, các tệp không khác nhau; hãy kiểm tra lại rằng bạn đã mở đúng cùng các tệp trên cả hai công cụ. Ngược lại, một kết quả khớp CRC-32 không chứng minh được gì trước một va chạm cố ý. “Độ tương đồng 0,4% nhưng tôi chỉ đổi một chỗ.” — nếu bạn sửa bên trong một container nén hoặc mã hóa (ZIP, zTXt của PNG, ổ đĩa mã hóa), một thay đổi logic sẽ viết lại toàn bộ luồng nén.
Câu hỏi thường gặp
Giới hạn kích thước là bao nhiêu? — 200 MB mỗi tệp cho diff từng byte, so sánh theo các lát 1 MB. Góc nhìn căn chỉnh theo khối nạp cả hai tệp, nên giới hạn 64 MB mỗi bên. Có phát hiện được đoạn bị chuyển vị trí không? — bộ căn chỉnh khớp các khối theo thứ tự; một đoạn bị chuyển sang vị trí khác sẽ hiện thành một xóa cộng một chèn cùng nội dung, đó là mô tả đúng, dù hơi thô. Có tạo được tệp vá không? — không, đây là công cụ phân tích; các báo cáo CSV và TXT dùng để ghi chép và xem xét, không dùng để áp dụng thay đổi. Tệp của tôi có bị xử lý gì không? — không: không máy chủ, không lưu trữ, không phân tích; đóng tab thì mọi byte đầu vào biến mất.