ssoL2 TISTORY

웨이브(.wav) 파일 분석 본문

sec/forensic

웨이브(.wav) 파일 분석

ssoL2 2021. 2. 16. 05:57
  • WAV(Waveform Audio File Format)는 개인용 컴퓨터에서 오디오를 재생하는 오디오 파일 포맷 표준이다.
  • 확장자는 [.wav]이다.
  • 비압축 포맷이다.

 

  • wave 파일의 헤더 구조

1. RIFF

  • Chunk ID (4 byte) = wave 파일의 헤더 시그니처 => 52 49 46 46 (ASCII로 RIFF)
  • Chunk size (4 byte) = 전체 파일 크기 - 8 byte(Chunk ID 4 byte + Chunk size 4 byte)
  • -> Little Endian 작성
  • Format (4 byte) = 파일 형식 => 57 41 56 45 (ASCII로 WAVE)

2. FMT

  • Chunk ID (4 byte) = 'fmt ' 고정값=> 66 6D 74 20 (ASCII로 fmt + (space))
  • Chunk Size (4 byte) = 현재 Header 크기 - 8 byte(Chunk ID 4 byte + Chunk size 4 byte)
  • -> Little Endian 작성 
  • -> 주황색 헤더는 총 24 byte이므로 24 - 8 = 16 byte 고정값 => 10 00 00 00
  • Audio Format (2 byte) = PCM인 경우 고정값 1 => 01 00
  • -> Little Endian 작성
  • Number Of Channel (2 byte) = 음성파일의 채널 수, mono라면 1이고 stereo라면 2이다. 
  • -> Little Endian 작성
  • Sample Rate (4 byte) = Hz 단위이고, 1초 동안 소리를 몇 개의 조각으로 쪼개서 저장하는지
  • -> 만약 10 Hz이면 0.1초 단위로 저장하며, 숫자가 커질수록 음질이 좋다.
  • -> Little Endian 작성
  • Byte Rate (4 byte) = 1초 동안 소리를 내는데 필요한 byte 수
  • -> Little Endian 작성
  • Block Align (2 byte) = Sample Frame의 크기
  • -> mono면 sample 크기 *1 이고, stereo면 sample 크기 *2 이다.
  • -> Little Endian 작성
  • Bit Per Sample (2 byte) = Sample 한 개를 몇 bit로 나타낼 것인지
  • -> 이 값도 커질 수록 음질이 좋다.
  • -> Little Endian 작성

 

3. DATA

  • Chunk ID (4 byte) = 'data' 고정값=> 64 61 74 61  (ASCII로 data)
  • Chunk size (4 byte) = 뒤이어 나올 data의 실제 크기 (파일 전체 크기에서 header를 제외한 크기)
  • -> Little Endian 작성

 

 

 

 

 

<참고>

crystalcube.co.kr/123

Comments