모두의 dream
컨테이너와 코덱 (with avi, mp4) 본문
포스팅 내용 요약
- 비디오 파일의 구성요소인 컨테이너와 코덱의 정의
- avi 컨테이너 구조
I. 컨테이너 (Container, 보관함)
- 동영상(비디오) 파일을 구성하고 있는 가장 큰 단위.
- 컨테이너 안에 비디오 데이터, 오디오 데이터 존재.
- avi, mp4, mov 등의 확장자를 가지고 있다.
II. 코덱
- coder + decoder / compressor + decompressor
- 영상이나 음성 데이터를 디지털로 변환 또는 역변환하여 데이터를 관리하는 방법.
III. AVI 컨테이너
- AVI 컨테이너는 list 와 chunk로 구성되어 있다.
- 여러개의 list 가 존재하고, 각각 list에 여러개의 chunk가 존재한다.
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)
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
- 예시
위 사진에서 첫번째 01wb의 offset은 0x4, size는 0x800.
movi LIST의 헤더 사이즈 이후부터 (0x1008) 4만큼 이동하면 0x100C이다.
size 는 0x800이므로 idxl 데이터와 일치한다.
위 사진에서 두번째 01wb의 offset은 0x80C, size는 0x800.movi LIST의 헤더 사이즈 이후부터 (0x1008) 0x80C 만큼 이동하면 0x1810이다. 두번째 01wb가 나온것을 확인할 수 있다.
JUNK 영역
파일 크기를 일정하게 만드는 역할을 한다.
필요에 따라 사용하므존재 할 수도, 하지 않을 수도 있다.
00 ~ 03: JUNK
04 ~ 07: Size
V. MP4 컨테이너
- MP4 컨테이너는 박스(atom으로도 불림)로 구성되어 있다.
- 여러개의 박스 가 존재하고, 박스는 다른 박스를 포함할 수 있다.
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
'분야 > Digital Forensics' 카테고리의 다른 글
윈도우 아티팩트 정리 (1) | 2023.09.07 |
---|---|
NTFS 삭제된 파일 복원 (1) | 2023.08.29 |
파일시스템 분석 실습 준비 (vmdk & 이미징) (0) | 2023.08.28 |
NTFS File System (1) | 2023.08.28 |
H.264 AVC 코덱 분석 (0) | 2023.08.15 |