본문 바로가기
나의 정보/정보

EXIF 포맷 분석 예제 2

by 상오기™ 2006. 4. 27.

350 PIC001.jpg EXIF(FFE1) 분석 - 핸드폰 LX350

- 참고 : EXIF 2.2 스펙 http://exif.org

00000000h: FF D8 FF E1 19 90 45 78 69 66 00 00 4D 4D 00 2A ; ??륟xif..MM.*
00000010h: 00 00 00 08 00 09 01 0F 00 02 00 00 00 08 00 00 ; ................
00000020h: 00 7A 01 10 00 02 00 00 00 06 00 00 00 82 01 12 ; .z...........?.
00000030h: 00 03 00 00 00 01 00 01 00 00 01 1A 00 05 00 00 ; ................
00000040h: 00 01 00 00 00 88 01 1B 00 05 00 00 00 01 00 00 ; .....?.........
00000050h: 00 90 01 28 00 03 00 00 00 01 00 02 00 00 01 31 ; .?(...........1
00000060h: 00 02 00 00 00 09 00 00 00 98 02 13 00 03 00 00 ; .........?.....
00000070h: 00 01 00 01 00 00 87 69 00 04 00 00 00 01 00 00 ; ......뇁........
00000080h: 00 A2 00 00 01 CA 4D 53 4D 36 31 30 30 00 4C 58 ; .?..?SM6100.LX
00000090h: 33 35 30 00 00 00 00 48 00 00 00 01 00 00 00 48 ; 350....H.......H
000000a0h: 00 00 00 01 4C 58 33 35 30 56 31 32 00 00 00 11 ; ....LX350V12....
000000b0h: 82 9A 00 05 00 00 00 01 00 00 01 74 90 00 00 07 ; 굾.........t?..
000000c0h: 00 00 00 04 30 32 32 30 90 03 00 02 00 00 00 14 ; ....0220?......
000000d0h: 00 00 01 7C 90 04 00 02 00 00 00 14 00 00 01 90 ; ...|?.........?
000000e0h: 91 01 00 07 00 00 00 04 01 02 03 00 92 09 00 03 ; ?..........?..
000000f0h: 00 00 00 01 00 00 00 00 A0 00 00 07 00 00 00 04 ; ........?......
00000100h: 30 31 30 30 A0 01 00 03 00 00 00 01 00 01 00 00 ; 0100?..........
00000110h: A0 02 00 04 00 00 00 01 00 00 03 C0 A0 03 00 04 ; ?.........핣...
00000120h: 00 00 00 01 00 00 05 00 A0 05 00 04 00 00 00 01 ; ........?......
00000130h: 00 00 01 AC A4 01 00 03 00 00 00 01 00 00 00 00 ; ...Г...........
00000140h: A4 02 00 03 00 00 00 01 00 00 00 00 A4 03 00 03 ; ?..........?..
00000150h: 00 00 00 01 00 00 00 00 A4 04 00 05 00 00 00 01 ; ........?......
00000160h: 00 00 01 A4 A4 06 00 03 00 00 00 01 00 00 00 00 ; ...ㄴ...........
00000170h: A4 0C 00 03 00 00 00 01 00 00 00 00 00 00 00 00 ; ?..............
00000180h: 00 00 00 01 00 00 00 15 31 39 38 30 3A 30 31 3A ; ........1980:01:
00000190h: 30 36 20 30 30 3A 30 31 3A 31 35 00 31 39 38 30 ; 06 00:01:15.1980
000001a0h: 3A 30 31 3A 30 36 20 30 30 3A 30 31 3A 31 35 00 ; :01:06 00:01:15.
000001b0h: 00 00 10 00 00 00 10 00 00 02 00 01 00 02 00 00 ; ................
000001c0h: 00 04 52 39 38 00 00 02 00 07 00 00 00 04 30 31 ; ..R98.........01
000001d0h: 30 30 00 00 00 00 00 06 01 03 00 03 00 00 00 01 ; 00..............
000001e0h: 00 06 00 00 01 1A 00 05 00 00 00 01 00 00 02 18 ; ................
000001f0h: 01 1B 00 05 00 00 00 01 00 00 02 20 01 28 00 03 ; ........... .(..
00000200h: 00 00 00 01 00 02 00 00 02 01 00 04 00 00 00 01 ; ................
00000210h: 00 00 02 28 02 02 00 04 00 00 00 01 00 00 17 60 ; ...(...........`
00000220h: 00 00 00 00 00 00 00 48 00 00 00 01 00 00 00 48 ; .......H.......H
00000230h: 00 00 00 01 FF D8 FF DB 00 84 00 10 0B 0C 0E 0C ; ....???.....

======================
APP1
======================
FF E1 : APP1 Marker (2byte)
19 90 : APP1 Length (2byte)
45 78 69 66 00 : Identifier (5byte) - "EXIF."
00 : Pad (1byte)

======================
0th IFD Header
======================
[0000H] 4D 4D : Byte Order (2byte) - "MM"(4D4D) : Big Endian, "II"(4949) : Little Endian
[0002H] 00 2A : 42 (2byte) - Big Endian의 경우 00 2A, Little Endian의 경우 2A 00
[0004H] 00 00 00 08 : 0th IFD Offset (4byte) 
[0008H] 00 09 : Number of Interoperability (2byte) - 이 IFD에 포함된 디렉토리 엔트리의 갯수

 ===== 각각의 엔트리 정보의 구성(12byte) =====
 Tag (2byte) : TIFF tag numbers
 Type (2byte) : 1-10
   -> 1=BYTE(1byte), 2=ASCII(1byte), 3=SHORT(2byte), 4=LONG(4byte)
    5=RATIONAL(8byte), 7=UNDEFINED(1byte), 9=SLONG(4byte), 10=SRATIONAL(8byte)
 Count (4byte) : number of values
 Value Offset (4byte) : value or offset
   -> Type*Count의 값이 4byte보다 작으면 값을 바로 저장(왼쪽부터), 크면 값의 offset을 나타냄
     
[000AH] 01 0F : Tag (2byte)- Make (1번 엔트리)
[000CH] 00 02 : Type (2byte)
[000EH] 00 00 00 08 : Count (4byte)
[0012H] 00 00 00 7A : Value Offset (4byte) - 1*8H=8byte

[0016H] 01 10 : Tag - Model (2번 엔트리)
[0018H] 00 02 : Type
[001AH] 00 00 00 06 : Count
[001EH] 00 00 00 82 : Value Offset - 1*6H=6byte

[0022H] 01 12 : Tag - Orientation (3번 엔트리)
[0024H] 00 03 : Type
[0026H] 00 00 00 01 : Count
[002AH] 00 01 00 00 : Value - 2*1H=2byte

[002EH] 01 1A : Tag - XResolution (4번 엔트리)
[0030H] 00 05  : Type
[0032H] 00 00 00 01 : Count
[0036H] 00 00 00 88 : Value Offset - 8*1H=8byte

[003AH] 01 1B : Tag - YResolution (5번 엔트리)
[003CH] 00 05 : Type
[003EH] 00 00 00 01 : Count
[0042H] 00 00 00 90 : Value Offset

[0046H] 01 28 : Tag - ResolutionUnit (6번 엔트리)
[0048H] 00 03 : Type
[004AH] 00 00 00 01 : Count
[004EH] 00 02 00 00 : ValueTag

[0052H] 01 31 : Tag - Software (7번 엔트리)
[0054H] 00 02 : Type
[0056H] 00 00 00 09 : Count
[005AH] 00 00 00 98 : Value Offset - 1*9H=9byte

[005EH] 02 13 : Tag - YCbCrPositioning (8번 엔트리)
[0060H] 00 03 : Type
[0062H] 00 00 00 01 : Count
[0066H] 00 01 00 00 : ValueTag

[006AH] 87 69 : Tag - Exif IFD Pointer (9번 엔트리)
[006CH] 00 04 : Type
[006EH] 00 00 00 01 : Count
[0072H] 00 00 00 A2 : Value Offset - 4*1H=4byte

[0076H] 00 00 01 CA : Next IFD Offset (LONG type : 4byte)

==========================
Value longer than 4byte of 0th IFD
==========================
[007AH] 4D 53 4D 36 31 30 30 00 : Make value (8byte) - "MSM6100."
[0082H] 4C 58 33 35 30 00 : Model value (6byte) - "LX350."
[0088H] 00 00 00 48 00 00 00 01 : XResolution value (8byte)
[0090H] 00 00 00 48 00 00 00 01 : YResolution value (8byte) 
[0098H] 4C 58 33 35 30 56 31 32 00 : Software value (9byte) - "LX350V12."

[00A1H] 00 - 1byte가 남네??????

==========================
Exif IFD
==========================
[00A2H] 00 11 : Exif IFD Number (2byte) - 엔트리 갯수 17개

82 9A : ExposureTime - 1번 엔트리
00 05
00 00 00 01
00 00 01 74

90 00 : ExifVersion - 2번 엔트리
00 07
00 00 00 04
30 32 32 30

90 03 : DateTimeOriginal - 3번 엔트리
00 02
00 00 00 14
00 00 01 7C

90 04 : DateTimeDigitized - 4번 엔트리
00 02
00 00 00 14
00 00 01 90

91 01 : ComponentsConfiguration - 5번 엔트리
00 07
00 00 00 04
01 02 03 00

92 09 : Flash - 6번 엔트리
00 03
00 00 00 01
00 00 00 00

A0 00 : FlashpixVersion - 7번 엔트리
00 07
00 00 00 04
30 31 30 30

A0 01 : ColorSpace - 8번 엔트리
00 03
00 00 00 01
00 01 00 00

A0 02 : PixelXDimension - 9번 엔트리
00 04
00 00 00 01
00 00 03 C0

A0 03 : PixelYDimension - 10번 엔트리
00 04
00 00 00 01
00 00 05 00

A0 05 : Interoperability tag - 11번 엔트리
00 04
00 00 00 01
00 00 01 AC - 4*1H=4byte

A4 01 : Custom image processing - 12번 엔트리
00 03
00 00 00 01
00 00 00 00

A4 02 : Exposure mode - 13번 엔트리
00 03
00 00 00 01
00 00 00 00

A4 03 : White balance - 14번 엔트리
00 03
00 00 00 01
00 00 00 00

A4 04 : DigitalZoomRatio - 15번 엔트리
00 05
00 00 00 01
00 00 01 A4

A4 06 : Scene capture type - 16번 엔트리
00 03
00 00 00 01
00 00 00 00

A4 0C : Subject distance range - 17번 엔트리
00 03
00 00 00 01
00 00 00 00

[0170H] 00 00 00 00 : Next IFD Offset (4byte)

==========================
Value longer than 4byte of Exif IFD
==========================
[0174H] 00 00 00 01 00 00 00 15 : ExposureTime value (8byte)
[017CH] 31 39 38 30 3A 30 31 3A 30 36 20 30 30 3A 30 31 3A 31 35 00 : DateTimeOriginal value (20byte) - "1980:01:06 00:01:15."
[0190H] 31 39 38 30 3A 30 31 3A 30 36 20 30 30 3A 30 31 3A 31 35 00 : DateTimeDigitized value (20byte) - "1980:01:06 00:01:15."
[01A4H] 00 00 10 00 00 00 10 00 : DigitalZoomRatio (8byte)

==========================
Interoperability IFD - 스팩에 자세히 나오지 않아서 기존의 형식에 따라 추정 ??????
==========================
[01ACH] 00 02 - 엔트리 갯수?

00 01 - InteroperabilityIndex (1번 엔트리)
00 02
00 00 00 04
52 39 38 00 - "R98."

00 02 - ?????? (2번 엔트리)
00 07
00 00 00 04
30 31 30 30 - "0100"

[01C6] 00 00 00 00 - Next IFD Offset (4byte)
     
==========================
1st IFD
==========================
[01CAH] 00 06  : Number Of Interoperability (2byte)
 -> [0078H] 01 CA : Next IFD Offset (2byte) 에서 지정된 Offset
 
01 03  : Compression
00 03
00 00 00 01
00 06 00 00

01 1A : XResolution
00 05
00 00 00 01
00 00 02 18

01 1B : YResolution
00 05
00 00 00 01
00 00 02 20

01 28 : ResolutionUnit
00 03
00 00 00 01
00 02 00 00

02 01 : JPEGInterchangeFormat - Offset to JPEG SOI
00 04
00 00 00 01
00 00 02 28

02 02 : JPEGInterchangeFormatLength - Byte of JPEG Data
00 04
00 00 00 01
00 00 17 60

[0214H] 00 00 00 00 : Next IFD Offset (4byte)

==========================
Value longer than 4byte of 1st IFD
==========================
[0218H] 00 00 00 48 00 00 00 01 : XResolution value (8byte)
[0220H] 00 00 00 48 00 00 00 01 : YResolution value (8byte)

==========================
Thumbnail Image Data
==========================    
[0228H] FF D8 FF DB ~~~ FF D9 : 5984byte(1760H)