모두의 dream

컨테이너와 코덱 (with avi, mp4) 본문

분야/Digital Forensics

컨테이너와 코덱 (with avi, mp4)

오리꽥이로 2023. 1. 2. 19:45
Contents 접기

포스팅 내용 요약

  • 비디오 파일의 구성요소인 컨테이너와 코덱의 정의
  • avi 컨테이너 구조

I. 컨테이너 (Container, 보관함)

  • 동영상(비디오) 파일을 구성하고 있는 가장 큰 단위.
  • 컨테이너 안에 비디오 데이터, 오디오 데이터 존재.
  • avi, mp4, mov 등의 확장자를 가지고 있다.

컨테이너 구조

II. 코덱

  • coder + decoder / compressor + decompressor
  • 영상이나 음성 데이터를 디지털로 변환 또는 역변환하여 데이터를 관리하는 방법.

III. AVI 컨테이너

  • AVI 컨테이너는 list 와 chunk로 구성되어 있다.
  • 여러개의 list 가 존재하고, 각각 list에 여러개의 chunk가 존재한다.

AVI 컨테이너 구조

IV. AVI 컨테이너 구조

구성 요소

List

00 ~ 03: List를 나타내는 LIST라는 시그니처가 존재 (시그니처)

04 ~ 07: Size

08 ~ 0B: 리스트 종류

0B ~ : Data

 

Chunk

00 ~ 03: ID

04 ~ 07: Size

08 ~ : Data

주로 List 안에 Chunk가 들어가는 것 같다.

구조

RIFF Header

AVI 파일에 대한 정보

00 ~ 03: RIFF (AVI 파일 시그니처)

04 ~ 07: 파일 Size 값 (08 번째 부터 size 시작)

08 ~ 0B: AVI 문자를 통해 AVI 파일임을 나타냄.

 

Header List (hdrl)

현재 AVI 파일에 존재하는 데이터에 대한 정보.

00 ~ 03: List의 Magic Number인 List가 붙는다

04 ~ 07: 파일 Size 값 (08 부터 Size 시작)

08 ~ 0B: header list를 나타내는 magic number인 hdrl이 존재.

 

- avi main header (avih)

AVI 파일에 대한 정보

 

- AVI stream list (strl)

AVI 파일에 존재하는 list와 chunk에 대한 정보.

strh, strf(영상, 음성 데이터) 등의 정보를 담고 있는 청크가 들어간다.

strl이 여러개 존재할 수 있다.

 

Audio/Video data list (movi)

avi 컨테이너의 핵심.

영상, 음성 등 실제 데이터가 담겨 있다.

 

- dc: 영상 데이터, wb: 음성 데이터

블랙박스의 경우 00dc, 01dc, 02dc 와 같은 방식으로 전방, 후방과 같은 채널을 나타낸다. (회사마다 다를 수 있음)

 

Index data list (idxl)

idxl list

movi 영역에 존재하는 데이터 청크에 대한 정보

 

- idxl 헤더

04 ~ 07: idxl chunk size

08 ~ chunk size: data

00 ~ 03: idxl chunk ID

 

- idxl 데이터 구조

04 ~ 07: flag (dc:00, wb:10)

0C ~ 10: size movi list에 있는 데이터의 size

08 ~ 0B: offset movi list에 있는 데이터 offset 정보를 알려줌, movi list의 사이즈값 뒤부터 idxl에 있는 offset 값을 더해주면 접근 가능함.

00 ~ 03: 00dc, 01dc, 02st, 03st, 04st 등의 chunk ID

 

- 예시

movi list

위 사진에서 첫번째 01wb의 offset은 0x4, size는 0x800.

movi LIST의 헤더 사이즈 이후부터 (0x1008) 4만큼 이동하면 0x100C이다.

size 는 0x800이므로 idxl 데이터와 일치한다.

 

movi list

위 사진에서 두번째 01wb의 offset은 0x80C, size는 0x800.movi LIST의 헤더 사이즈 이후부터 (0x1008) 0x80C 만큼 이동하면 0x1810이다. 두번째 01wb가 나온것을 확인할 수 있다.

 

JUNK 영역

파일 크기를 일정하게 만드는 역할을 한다.

필요에 따라 사용하므존재 할 수도, 하지 않을 수도 있다.

00 ~ 03: JUNK

04 ~ 07: Size

V. MP4 컨테이너

  • MP$ 컨테이너는 박스(atom으로도 불림)로 구성되어 있다.
  • 여러개의 박스 가 존재하고, 박스는 다른 박스를 포함할 수 있다.

MP4 컨테이너 구조

VI. MP4 컨테이너 구조

구성 요소

박스

최소 크기: 8byte.

00 ~ 03: 박스 크기

04 ~ 08: 박스의 type

구조

구성은 위와 동일하여 의미있는 정보가 있는 부분만 추려서 작성해봤다.

stbl -> stsd -> avc1 -> avcC

avcC를 확인해본 결과 avi의 idx1과 같은 기능을 하는 영역으로 예상된다.

VII. Reference

avi

https://learn.microsoft.com/en-us/windows/win32/directshow/avi-riff-file-reference

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=shlee7708&logNo=120121689464

 

mp4

https://blog.naver.com/yesing1/70096278829

'분야 > Digital Forensics' 카테고리의 다른 글

윈도우 아티팩트 정리  (0) 2023.09.07
NTFS 삭제된 파일 복원  (0) 2023.08.29
파일시스템 분석 실습 준비 (vmdk & 이미징)  (0) 2023.08.28
NTFS File System  (0) 2023.08.28
h.264 영상 복구 (with 블랙박스)  (0) 2023.08.15
Comments