티스토리 뷰

Forensic/File Structure

ZIP 파일 구조

Noctis41 2025. 1. 27. 12:29

1. ZIP 파일 개요

ZIP 파일은 무손실 데이터 압축 방식을 지원하는 아카이브 파일 형식입니다. 여러 파일과 디렉토리를 하나로 묶고, 크기를 줄여 효율적인 저장과 전송을 가능하게 합니다. ZIP 파일은 주로 Deflate 알고리즘을 사용하며, 다양한 운영 체제에서 널리 사용됩니다.

1.1 주요 특징

  • 무손실 압축: 데이터 손실 없이 원본 상태 유지
  • 다양한 플랫폼 지원: Windows, macOS, Linux 등
  • 확장성: 다양한 파일과 메타데이터 저장 가능
  • 빠른 압축 및 해제

2. ZIP 파일의 구조

ZIP 파일은 다음과 같은 주요 구조로 구성됩니다.

zip 파일 구조

  1. Local File Header: 각 파일의 기본 정보 포함
  2. Central Directory: 파일 메타데이터와 구조 정보 저장
  3. End of Central Directory (EOCD): ZIP 파일의 끝을 나타내는 메타데이터

2.1 ZIP 파일 레이아웃

ZIP 파일은 다음과 같은 순서로 데이터를 저장합니다:

| Local File Header | File Data | Central Directory | End of Central Directory |

2.2 ZIP 파일 동작 원리

  1. End of Central Directory로 이동
  2. Central Directory 시작 오프셋을 확인
  3. Central Directory 내 파일 정보와 Local File Header를 통해 파일 데이터 위치 확인
  4. Local File Header를 읽고 파일 데이터로 접근

3. 주요 구조 상세

3.1 Local File Header

Local File Header는 압축된 각 파일에 대한 정보를 포함합니다. 

필드 오프셋 크기 설명
Signature 0x00 4바이트 0x04034B50
Version Needed 0x04 2바이트 압축 해제에 필요한 버전
Flags 0x06 2바이트 일반적인 플래그
Compression Method 0x08 2바이트 압축 방법 (예: Deflate)
Modification Time 0x0A 2바이트 마지막 수정 시간
Modification Date 0x0C 2바이트 마지막 수정 날짜
CRC-32 0x0E 4바이트 데이터 무결성 확인 값
Compressed Size 0x12 4바이트 압축된 데이터 크기
Uncompressed Size 0x16 4바이트 압축되지 않은 원본 크기
File Name Length 0x1A 2바이트 파일 이름 길이
Extra Field Length 0x1C 2바이트 추가 필드 길이
File Name 0x1E 가변 파일 이름
Extra Field 0x1E+N 가변 추가 필드

3.2 Central Directory File Header

Central Directory는 ZIP 파일의 확장 정보를 포함하며, Local File Header를 참조합니다. 구조는 다음과 같습니다:

필드 오프셋 크기 설명
Signature 0x00 4바이트 0x02014B50
Version Made By 0x04 2바이트 생성된 버전
Version Needed 0x06 2바이트 압축 해제에 필요한 버전
Flags 0x08 2바이트 일반적인 플래그
Compression Method 0x0A 2바이트 압축 방법
Modification Time 0x0C 2바이트 마지막 수정 시간
Modification Date 0x0E 2바이트 마지막 수정 날짜
CRC-32 0x10 4바이트 데이터 무결성 확인 값
Compressed Size 0x14 4바이트 압축된 데이터 크기
Uncompressed Size 0x18 4바이트 압축되지 않은 원본 크기
File Name Length 0x1C 2바이트 파일 이름 길이
Extra Field Length 0x1E 2바이트 추가 필드 길이
File Comment Length 0x20 2바이트 파일 주석 길이
Disk Number 0x22 2바이트 파일이 위치한 디스크 번호
Internal Attributes 0x24 2바이트 내부 속성
External Attributes 0x26 4바이트 외부 속성
Local Header Offset 0x2A 4바이트 Local Header 오프셋
File Name 0x2E 가변 파일 이름
Extra Field 0x2E+N 가변 추가 필드
File Comment 0x2E+N+M 가변 파일 주석

3.3 End of Central Directory

EOCD는 ZIP 파일의 끝을 나타내며, Central Directory 정보를 요약합니다.

필드 오프셋 크기 설명
Signature 0x00 4바이트 0x06054B50
Disk Number 0x04 2바이트 현재 디스크 번호
Central Directory Disk 0x06 2바이트 Central Directory 시작 디스크
Disk Entries 0x08 2바이트 현재 디스크의 엔트리 개수
Total Entries 0x0A 2바이트 전체 엔트리 개수
Central Directory Size 0x0C 4바이트 Central Directory 크기
Offset of Central Dir 0x10 4바이트 Central Directory 시작 오프셋
Comment Length 0x14 2바이트 ZIP 파일 주석 길이
Comment 0x16 가변 ZIP 파일 주석

4. 압축 및 플래그 상세

4.1 압축 방식

ZIP 파일은 다양한 압축 방식을 지원하며, 대표적으로 다음과 같은 값이 사용됩니다:

압축 방식
0x00 압축 없음
0x08 Deflate (가장 많이 사용)
0x0C BZIP2
0x0E LZMA

4.2 플래그

플래그 값은 각 비트의 상태에 따라 다양한 설정을 나타냅니다:

비트 설명
0 암호화 여부
1-2 압축 옵션
3 데이터 디스크립터 여부
11 언어 인코딩

'Forensic > File Structure' 카테고리의 다른 글

코덱 - H.264, H.265  (0) 2025.03.11
MP4 File format Structure  (0) 2025.03.10
AVI File format Structure  (0) 2025.03.10
PNG 파일 구조  (0) 2025.01.27