전체 글 195

[참조]PeachFuzzer - XmlElement

XmlElement: XML document의 basic building block인 XML element을 정의한다. XML 문서의 content를 fuzz하기 위해 사용되며, XML 파서와는 다르다. XmlElement와 XmlAttribute로부터 생성된 output은 well formed하다. ++) XmlElement와 XmlAttribute element는 데이터 크래킹을 지원하지 않는다. XmlElement와 XmlAttribute의 XML 컨텐츠를 크랙하고자 한다면 String element의 부속인 XmlAnalyzer를 사용하자. 결과 : Hello World! Attributes* name : data model 이름 (선택)* minOccurs : 최소 발생 횟수 (선택)* maxO..

[참조]PeachFuzzer - XmlAttribute

XmlAttribute: XML element 속성을 정의한다. parent가 XmlElement일 때에만 유효하다. - parent가 XmlElement - XmlAttribute - attributeName 설정 결과 : Attributes* name : data model 이름 (선택)* minOccurs : 최소 발생 횟수 (선택)* maxOccurs : 최대 발생 횟수 (선택)* isStatic : 파싱 시에 해당 element를 토큰으로 간주 여부 (기본 값 : false) (선택)* token : (Peach 2.3) 파싱 시에 해당 element를 토큰으로 간주 여부(기본 값 : false) (선택)* mutable : (Peach 2.3) 데이터 가변성 (기본 값 : true) (선택) ..

[참조]PeachFuzzer - String

String: String element는 single 혹은 double byte string을 정의한다. String Element는 DataModel 또는 Block의 child이다. Numerical String 임을 나타내려면 NumericalString Hint를 사용 Attributes* name : data model 이름 (선택)* length : 길이 in characters (선택)* lengthType : length attribute (기본 값 : bytes) (선택)* nullTerminated : 문자열이 null로 끝나는가? (true, false) (선택)* padCharacter : pad 할 string (기본 값 : 0x00) (선택)* token : 파싱 시에 토큰으로..

[참조]PeachFuzzer - Number

Number: Number element는 8, 16, 24, 32, 64 비트 길이의 binary number를 선언한다.DataModel, Block, Choice의 child element가 될 수 있다. Attributes* name : number의 이름 - 필수* size : 비트 크기의 사이즈 (1~64) - 필수* value : default value* valueType : value 표현 방식 (string, hex) - 선택* token : 파싱 시에 element가 토큰으로 간주된다. (기본 값 : false) * endian : Byte order 명시 (big, little, network) -- network는 big endian과 같다.* signed : 부호가 signed인..

[참조]PeachFuzzer - Flag

Flag: Flag element는 Flags container의 특정 bit field를 규정한다. -- Flags container - 이름,position, size - value까지 설정 Attributes* name : 이름 - 선택* size : 비트 크기 - 필수* position : zero based position flag starts - 필수* value : Blob에 포함된 default 값* valueType : default value가 표현된 format (hex, string, literal)* mutable : element 가변성 (mutated 되어야한다!!) - 선택 Valid Child-Elements* Relation

[참조]PeachFuzzer - Choice

Choice: Choice element는 DataModel 또는 Block의 child이다. Choice Element는 어떤 서브-elements가 유효한지 나타내는 데 사용되며, 오직 하나만 선택된다.(프로그래밍에서 switch문을 떠올리면 이해가 쉽다.) Type1이 유효하다면 Type1 Block 내용을 수행하고 Type2가 유효하다면 ... 이하 생략.통상적인 switch문에 더 가깝게 사용하려면 decision이 token에 의해 결정돼야한다. AttributesRequired로 명시한 것을 제외하고는 optional하다.* name : choice section 이름 / [Required]* minOccurs : choice 출현의 최소 횟수 * maxOccurs : choice 출현의 최..

[참조]PeachFuzzer - Block

Block: Block element는 DataModel 혹은 Block의 child이다. Block들은 하나 이상의 Number 혹은 String과 같은 data element들을 논리적 구조체로 통합시키는 데 사용된다. (Block으로 묶인다고 생각하면 이해가 쉽다.)Block과 DataModel은 매우 유사하며 location이 유일한 차이점이다. DataModel은 top level element고, Block은 DataModel의 child이다. 당연히 Block도 DataModel처럼 다른 Block 혹은 DataModel의 template으로 쓰일 수 있다. --- DataModel로 치환하더라도 문제 없다. AttributesRequired로 명시한 것을 제외하고는 모두 optional하다..

[참조]PeachFuzzer - Blob

Blob: Blob element는 DataModel 또는 Block의 child element이다. Blob들은 일반적으로 type definition 혹은 format이 부족한 데이터를 나타낼 때 사용된다.(포맷을 모를 경우 DataModel에 을 주고 돌리면 무작위로 퍼징이 수행된다.) Attributes필요(Required)하다고 명시한 속성을 제외하고는 전부 optional하다.* name : blob의 이름 / [Required]* value : blob에 포함된 default value* length : blob size* ref : blob의 template으로 사용하기 위한 data model 참조* valueType : default 값이 표현될 형식: hex, string, or li..