기본 콘텐츠로 건너뛰기

라벨이 Fuzzing인 게시물 표시

AU-file-structure

AU 파일 구조 Sun microsystems에서 개발한 오디오 파일 포맷으로 초기 웹 페이지에서 많이 사용되었다. offset size contents 4 “.snd” ID 4 4 Header size 8 4 DataSize 12 4 Encoding Type 16 4 Sample Rate 20 4 Channels 24 (x) Data 데이터 인코딩 포맷: 1 = 8-bit G.711 µ-law 2 = 8-bit 선형 PCM 3 = 16-bit 선형 PCM 4 = 24-bit 선형 PCM 5 = 32-bit 선형 PCM 6 = 32-bit IEEE 고정 소수점 7 = 64-bit IEEE 고정 소수점 8 = 조각난 샘플링 데이터 9 = DSP 프로그램 10 = 8 비트 고정 소수점 11 = 16 비트 고정 소수점 12 = 24 비트 고정 소수점 13 = 32 비트 고정 소수점 18 = 16 비트 linear with emphasis 19 = 16 비트 linear compressed 20 = 16 비트 linear with emphasis and compression 21 = Music kit DSP commands 23 = 4 비트 ISDN u-law compressed using the ITU-T G.721 ADPCM 음성 데이터 인코딩 스킴 24 = ITU-T G.722 ADPCM 25 = ITU-T G.723 3-bit ADPCM 26 = ITU-T G.723 5-bit ADPCM 27 = 8-bit G.711 A-law 출처 : 위키피디아 - Au

MIDI-file-structure

MIDI 파일 구조 전자 악기끼리 디지털 신호를 주고 받기 위해 각 신호를 규칙화한 일종의 규약이다. MIDI 파일은 실제 오디오의 녹음물이 아니기 때문에, 악기 명령들의 모음으로 녹음된 오디오 파일보다 용량이 훨씬 작다는 장점이 있다. offset size contents 4 “MThd” Header ID 4 4 Header Size 8 2 Format Type 10 2 Number Of Track 12 2 Time Division Track 4 “MTrk” Track Header ID 4 4 Track Chunk Size 8 (x) Track Data 8+(x) Track(n) …

OGG-file-structure

OGG 파일 구조 멀티미디어 컨테이너 포맷으로 멀티미디어 비트스트림을 효율적으로 전송하고 처리할 수 있게 하기 위해 Xiph.Org 재단에서 개발한 것이다. Byte order ; Little endian offset length contens 0 4 OggS 4 1 Stream structure version (0x00) 5 1 Packet flag: bit 0: true if page continued bit 1: true if first page bit 2: true if last page bit 3..7: reserved 6 8 The end pcm sample position (64bit integer) 14 4 Stream serial number 18 4 Page number 22 4 Check sum 26 1 Number of segments(s) 27 (s) Sengment table 27 + (s) (b) Body (b := header[27] + header[27+!] + … + header[17+s-1])

AIFF-file-structure

AIFF 파일 구조 AIFF(Audio Interchange File Format)는 개인용 컴퓨터와 기타 오디오 전자 장비에서 사용하는 오디오 파일 형식으로 비압축 무손실 압축 포맷이며 고품질 오디오 CD를 굽는데 사용할 수 있다. 1988년에 애플이 일렉트로닉 아츠의 인터체인지 파일 형식(Interchange File Format, IFF)을 기반으로 공동 개발하였다. 주로 애플 매킨토시에서 사용된다. 파일 확장자는 .aiff, .aif, .aifc를 갖는다. offset length contents Header 0 4 “FORM” 4 4 File size - 9 8 4 “AIFF” Chunk 4 chunk magic 4 chunk data size(x) (x) chunk data COMM(Must) 0 4 “COMM” 4 4 COMM chunk size (==18) 8 2 Number of channels 10 4 Number of frames 14 2 bits/samples 16 10 Sample rate FORM 0 4 “FORM” 4 4 FORM chunk size(x) 8 (x) FORM chunk INST 0 4 “INST” 4 4 INST chunk size(x) 8 (x) INST chunk MARK 0 4 “MARK” 4 4 MARK chunk 8 (x) MARK chunk size(x)

WAV-file-structure

WAV 파일 구조 웨이브 파일 형식은 멀티미디어 파일 저장을 위한 마이크로소프트의 RIFF 사양의 하위 집합니다. RIFF 파일은 데이터 청크가 붙은 파일 헤더로 시작한다. 웨이브 파일은 데이터 형식을 지정하는 fmt 청크와 실제 샘플 데이터가 들어있는 data 청크라는 두 개의 하위 청크로 구성된 단일 wave 청크가 있는 RIFF 파일인 경우가 많다. endian field name field size(bytes) comment big ChunkID 4 “RIFF” 청크 설명자 little ChunkSize 4 “RIFF” 청크 설명자 big Format 4 “RIFF” 청크 설명자 big Subchunk1ID 4 “fmt” 하위 청크 little Subchunk1Size 4 “fmt” 하위 청크 little AudioFormat 2 “fmt” 하위 청크 little NumChannels 2 “fmt” 하위 청크 little SampleRate 4 “fmt” 하위 청크 little ByteRate 4 “fmt” 하위 청크 little BlockAlign 2 “fmt” 하위 청크 little BitsPerSample 2 “fmt” 하위 청크 big Subchunk2ID 2 “data” 하위 청크 little Subchunk2Size 4 “data” 하위 청크 little data 4 “data” 하위 청크 WAVE 형식은 RIFF 헤더로 시작한다. offset size name comment 0 4 ChunkID

build with Address sanitizer

Address Sanitizer와 함께 빌드하기 GCC와 CLANG로 빌드 시 Adress sanitizer를 구성하는 예시이다. 오브젝트 코드 주소를 소스 코드 행 번호와 파일 이름으로 변환하려면 ASAN_OPTIONS=symbolize=1 옵션이 필요하다. GCC 사용 시 권장 방법은 -static-libasan 을 사용하여 ASAN에 정적으로 링크하는 것이다. ( ldd 명령어를 이용하여 이를 확인해보자.) ldd ldd(List Dynamic Dependencies)는 프로그램이나 공유 라이브러리들이 요구하는 공유 라이브러리(shared libraries)를 출력하는 명령 행(Command Line)프로그램이다. –version : ldd의 버전을 출력한다. -v, –verbose : 심볼 버전 정도등 모든 정보를 출력한다. -d, –data-relocs -r, –function-relocs –help : 사용방법을 출력한다. 출처 : joinc - ldd main.cpp 다음은 스택 오버플로우 취약점이 있는 간단한 소스코드이다. int main( int argc, char **argv) { int stack_array[ 100 ]; stack_array[ 1 ] = 0 ; return stack_array[argc + 100 ]; // BOOM } Makefile . PHONY: using -gcc using -gcc -static using -clang using -gcc : g ++- 4.8 -o main -gcc -lasan -O -g -fsanitize = address -fno -omit -frame -pointer main . cpp && \ ASAN_OPTIONS = symbolize = 1 ASAN_SYMBOLIZER_PATH = $(shell which llvm -s