Giải nén một số lưu trữ nhất định hoạt động trên Windows nhưng không phải trên Linux


7

Tôi đã hỏi một vài người và chỉ nghĩ về việc hỏi nó ở đây. Chúng tôi nhận được các tệp được gửi từ một công ty quốc tế cho công việc thiết kế ở định dạng zip. Vâng khi tôi chạy một kịch bản để giải nén các tập tin trong nhà ga, tôi nhận được một lỗi zip duy nhất trong Linux. Chúng tôi có thể kiểm tra, giải nén, duyệt và sửa đổi các tệp với 7zip và winzip cả ngày. Khi 7zip hoặc Winzip được chạy, chúng cũng không biểu thị bất kỳ bảo mật nào.

Lỗi thiết bị đầu cuối:

compressed WinNT security missing (-7 bytes)

Tôi đã tìm kiếm khắp nơi và không tìm thấy giải pháp hay sự điều chỉnh nào về vấn đề này. Một đồng nghiệp đề nghị,

"sử dụng một phiên bản ngôn ngữ khác của Unzip có khả năng thay đổi Unicode cần thiết để giải nén tệp. Hãy nghĩ về nó giống như một mật khẩu, không có mã đúng, bạn không thể vào được."

Tại sao trong thiết bị đầu cuối Ubuntu sẽ giải nén lỗi hiển thị?


5
Unicode là Unicode. Nó không chỉ "thay đổi" vì miền địa phương. Đồng nghiệp của bạn sai.
Chris Xuống

2
Những gì đồng nghiệp của bạn nói có một hạt sự thật trong đó (zip không chỉ định một bộ ký tự cho tên tệp, vì vậy tên tệp không phải ASCII có thể bị cắt xén khi được trích xuất trên một hệ thống khác), nhưng ngay cả hạt đó không liên quan đến vấn đề của bạn .
Ignacio Vazquez-Abrams

2
7zlà tên của lệnh sau khi cài đặt. Xem man 7z.
jordanm

2
Bạn có thể tải lên một trong những tập tin đó ở đâu đó không?
sendmoreinfo

2
Có thể xác định chi tiết cụ thể hơn nếu bạn có thể cho chúng tôi biết chương trình nào (bao gồm cả phiên bản) tệp được tạo bởi và phiên bản unzipnào bạn đang sử dụng (thử unzip -v:).
depquid

Câu trả lời:


2

Tôi đã thực hiện một số hoạt động đào mã nguồn (giải nén 60 từ Ubuntu, mặc dù tôi nghi ngờ các phiên bản cũ không khác nhau nhiều). Các lỗi trong câu hỏi được gọi nội bộ TruncNTSDvà được xác định trong extract.c:295. Hầu hết việc sử dụng thông báo này, như mong đợi, win32/win32.cvà thực sự đề cập đến dữ liệu bảo mật NTFS, tuy nhiên chỉ có một vị trí trong mã mà bạn sẽ gặp phải lỗi này bên ngoài hệ thống win32 (vì bạn đã báo cáo thấy nó trên ubfox).

Vị trí trong câu hỏi ( extract.c:2118) là trong một hàm được gọi TestExtraField. Như Wikipedia giải thích:

Định dạng tệp .ZIP bao gồm tiện ích trường bổ sung trong các tiêu đề tệp, có thể được sử dụng để lưu trữ dữ liệu bổ sung không được xác định bởi thông số kỹ thuật .ZIP hiện tại và cho phép các nhà lưu trữ tuân thủ không nhận ra các trường để bỏ qua các trường một cách an toàn.

Đó thực sự là những gì NT làm để lưu trữ thông tin bảo mật. Quan trọng là, chức năng in các bình luận lỗi

/* we know the regular compressed file data tested out OK, or else we
 * wouldn't be here ==> print filename if any extra-field errors found
 */

Vì vậy, nếu bạn có thể tự giải nén các tập tin tốt, có vẻ như lỗi này là an toàn để bỏ qua. Nhìn xa hơn, nơi duy nhất bên ngoài mã win32 phát sinh lỗi này (giả sử đó không phải là một lỗi khủng khiếp trong giải nén) test_compr_eb:extract.c:2227, mà từ cái nhìn lướt qua mã trông giống như nó xảy ra khi một tệp nén có liên quan đến các trường bổ sung được đánh dấu là nén , nhưng dữ liệu trường có độ dài 0 byte.

Làm thế nào điều này xảy ra mà tôi không biết - có lẽ chương trình tạo các tệp zip thực hiện điều này một cách tình cờ, có lẽ các trường bổ sung được lọc ra ở đâu đó bằng phần mềm bảo mật. Trong mọi trường hợp, nó trông vô hại và có lẽ không liên quan gì đến an ninh NT cả. Tóm lại, nếu các tệp của bạn giải nén tốt, nó hoàn toàn an toàn để bỏ qua .

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.