2014-09-22 23 views
1

입니다.winrar 및 7-zip으로 만든 .zip 형식의 차이점은

타사 라이브러리를 사용하여 일부 파일을 보관/압축 해제하고 있습니다. 입/출력 형식은 .zip입니다.

그러나 lib가 WinRAR로 만든 아카이브를 읽을 수는 있지만 7-zip으로 만든 아카이브는 읽을 수 없음을 발견했습니다.

아무도 내게 문제가 무엇인지, 어떻게 고칠 수 있는지 말해 줄 수 있습니까? WINRAR로 작성된 아카이브 시동

헥스보기 :

4B 50 03 04 14 00 00 00 08 00 88 25 45 EC 6E 1A ....의

헥스보기

4B 50 03 04 14 00 00 00 08 00 88 25 45 ED 6E 1A ....

0 : 7로 작성된 우편 아카이브의 개시

차이는 바이트 ECED입니다.

답변

0

-7- 우편 Info-ZIP 아카이브가 소스 코드에 기초하여 예를 들어 표준 ZIP 압축/압축 해제 라이브러리와 호환되지 않는 여러 compression formats 사용하여 생성 될 수있다.

ZIP 파일의 생성/추출을 지원하는 WinRAR 및 Total Commander와 같은 응용 프로그램은 기본적으로 비표준 7-Zip 아카이브에서 파일을 추출하기위한 DLL을 추가적으로 사용합니다.

질문 찾기 상용 응용 프로그램에서 7-Zip의 EXE 또는 DLL 파일을 사용할 수 있습니까? on FAQ 페이지의 7-Zip.

2

이 ZIP 파일의 헤더 구조는 다음과 같습니다

+---------------------------------------------------------------------+ 
|        BYTE         | 
|0x0 0x1 0x2 0x3|0x4 0x5|0x6 0x7| 0x8 0x9 |0xA 0xB|0xC 0xD|  | 
+---------------+-------+-------+-----------+--------+--------+-------+ 
| signature |version| flags |compression|mod time|mod date| CRC32 | 
+---------------+-------+-------+-----------+--------+--------+-------+ 
| 50 4B 03 04| 14 00| 00 00| 08 00 |EC/ED 88| 25 45|  | 
+---------------------------------------------------------------------+ 
  • 서명는 (귀하의 경우와 같이) 항상 0 × 50 인 0x4b은 0x03를 0x04입니다. 0 × 50의 = 'P', 0x4b를이 = 'K'(Phillip Katz) (하는 0x14 × 00 = 20 -> ZIP 2.0)을 추출하는 데 필요한
  • 버전
  • 범용 비트 플래그 (플래그없이, 당신의 파일이 아닙니다 암호화 되/기본 언어 인코딩)
  • 압축 방법은 수정 시간 (그냥 몇 분)을 변경 (08)

그래서 유일한 일을 수축이다.

CRC32의 처음 두 바이트조차 동일합니다. 차이점이 인 경우 EC/ED 값이므로이 문제는 아카이브 내용이 아니어야합니다.

또한 참조 : https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html