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

EXIF 포맷 분석 예제 1

by 상오기™ 2006. 4. 26.

IMGP8304_1.jpg EXIF(FFE1) 분석 - 펜탁스 DSLR *ist DS

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

00000000h: 4D 4D 00 2A 00 00 00 08 00 0B 01 0F 00 02 00 00 ; MM.*............
00000010h: 00 14 00 00 00 92 01 10 00 02 00 00 00 14 00 00 ; .....?.........
00000020h: 00 A6 01 12 00 03 00 00 00 01 00 01 00 00 01 1A ; .?.............
00000030h: 00 05 00 00 00 01 00 00 00 BA 01 1B 00 05 00 00 ; .........?.....
00000040h: 00 01 00 00 00 C2 01 28 00 03 00 00 00 01 00 02 ; .....?(........
00000050h: 00 00 01 31 00 02 00 00 00 14 00 00 00 CA 01 32 ; ...1.........?2
00000060h: 00 02 00 00 00 14 00 00 00 DE 02 13 00 03 00 00 ; .........?.....
00000070h: 00 01 00 02 00 00 C4 A5 00 07 00 00 01 60 00 00 ; ......칠.....`..
00000080h: 00 F2 87 69 00 04 00 00 00 01 00 00 02 54 00 00 ; .?i.........T..
00000090h: 03 F4 50 45 4E 54 41 58 20 43 6F 72 70 6F 72 61 ; .?ENTAX Corpora
000000a0h: 74 69 6F 6E 20 00 50 45 4E 54 41 58 20 2A 69 73 ; tion .PENTAX *is
000000b0h: 74 20 44 53 20 20 20 20 20 00 00 00 00 48 00 00 ; t DS     ....H..
000000c0h: 00 01 00 00 00 48 00 00 00 01 41 64 6F 62 65 20 ; .....H....Adobe
000000d0h: 50 68 6F 74 6F 73 68 6F 70 20 37 2E 30 00 32 30 ; Photoshop 7.0.20
000000e0h: 30 36 3A 30 34 3A 31 37 20 31 32 3A 35 38 3A 34 ; 06:04:17 12:58:4
000000f0h: 31 00 50 72 69 6E 74 49 4D 00 30 33 30 30 00 00 ; 1.PrintIM.0300..
00000100h: 00 21 00 01 00 16 00 16 00 02 01 00 00 00 00 03 ; .!..............
00000110h: 00 00 00 D6 00 07 00 00 00 00 00 08 00 00 00 00 ; ...?...........
00000120h: 00 09 00 00 00 00 00 0A 00 00 00 00 00 0B 00 00 ; ................
00000130h: 01 1E 00 0C 00 00 00 00 00 0D 00 00 00 00 00 0E ; ................
00000140h: 00 00 01 34 01 00 05 00 00 00 01 01 FF 00 00 00 ; ...4...........
00000150h: 01 02 83 00 00 00 01 03 83 00 00 00 01 04 83 00 ; ..?....?....?
00000160h: 00 00 01 05 83 00 00 00 01 06 83 00 00 00 01 07 ; ....?....?....
00000170h: 80 80 80 00 01 10 80 00 00 00 02 00 00 00 00 00 ; €€€...€.........
00000180h: 02 07 00 00 00 00 02 08 00 00 00 00 02 09 00 00 ; ................
00000190h: 00 00 02 0A 00 00 00 00 02 0B 00 00 01 44 02 0D ; .............D..
000001a0h: 00 00 00 00 03 00 05 00 00 00 03 01 FF 00 00 00 ; ...............
000001b0h: 03 02 83 00 00 00 03 03 83 00 00 00 03 06 83 00 ; ..?....?....?
000001c0h: 00 00 03 10 80 00 00 00 00 00 11 09 00 00 27 10 ; ....€.........'.
000001d0h: 00 00 0F 0B 00 00 27 10 00 00 05 97 00 00 27 10 ; ......'....?.'.
000001e0h: 00 00 08 B0 00 00 27 10 00 00 1C 01 00 00 27 10 ; ...?.'.......'.
000001f0h: 00 00 02 5E 00 00 27 10 00 00 00 8B 00 00 27 10 ; ...^..'....?.'.
00000200h: 00 00 03 CB 00 00 27 10 00 00 1B E5 00 00 27 10 ; ...?.'....?.'.
00000210h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000220h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000230h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000240h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000250h: 00 00 00 00 00 1C 82 9A 00 05 00 00 00 01 00 00 ; ......굾........
00000260h: 03 AA 82 9D 00 05 00 00 00 01 00 00 03 B2 88 22 ; .챴?........쾲"
00000270h: 00 03 00 00 00 01 00 03 00 00 88 27 00 03 00 00 ; ..........?....
00000280h: 00 01 00 C8 00 00 90 00 00 07 00 00 00 04 30 32 ; ...?.?......02
00000290h: 32 31 90 03 00 02 00 00 00 14 00 00 03 BA 90 04 ; 21?.........틦.
000002a0h: 00 02 00 00 00 14 00 00 03 CE 91 01 00 07 00 00 ; .........?.....
000002b0h: 00 04 01 02 03 00 92 04 00 0A 00 00 00 01 00 00 ; ......?........
000002c0h: 03 E2 92 07 00 03 00 00 00 01 00 03 00 00 92 09 ; .?...........?
000002d0h: 00 03 00 00 00 01 00 10 00 00 92 0A 00 05 00 00 ; ..........?....
000002e0h: 00 01 00 00 03 EA A0 00 00 07 00 00 00 04 30 31 ; .....?.......01
000002f0h: 30 30 A0 01 00 03 00 00 00 01 00 01 00 00 A0 02 ; 00?..........?
00000300h: 00 04 00 00 00 01 00 00 01 E2 A0 03 00 04 00 00 ; .........?.....
00000310h: 00 01 00 00 02 D3 A2 17 00 03 00 00 00 01 00 02 ; .....亶.........
00000320h: 00 00 A3 00 00 07 00 00 00 01 03 00 00 00 A3 01 ; ..?..........?
00000330h: 00 07 00 00 00 01 01 00 00 00 A4 01 00 03 00 00 ; ..........?....
00000340h: 00 01 00 00 00 00 A4 02 00 03 00 00 00 01 00 00 ; ......?........
00000350h: 00 00 A4 03 00 03 00 00 00 01 00 00 00 00 A4 05 ; ..?..........?
00000360h: 00 03 00 00 00 01 00 6D 00 00 A4 06 00 03 00 00 ; .......m..?....
00000370h: 00 01 00 00 00 00 A4 08 00 03 00 00 00 01 00 00 ; ......?........
00000380h: 00 00 A4 09 00 03 00 00 00 01 00 00 00 00 A4 0A ; ..?..........?
00000390h: 00 03 00 00 00 01 00 02 00 00 A4 0C 00 03 00 00 ; ..........?....
000003a0h: 00 01 00 02 00 00 00 00 00 00 00 00 00 01 00 00 ; ................
000003b0h: 00 7D 00 00 00 1C 00 00 00 0A 32 30 30 36 3A 30 ; .}........2006:0
000003c0h: 34 3A 31 36 20 31 35 3A 33 38 3A 32 33 00 32 30 ; 4:16 15:38:23.20
000003d0h: 30 36 3A 30 34 3A 31 36 20 31 35 3A 33 38 3A 32 ; 06:04:16 15:38:2
000003e0h: 33 00 00 00 00 00 00 00 00 0A 00 00 00 49 00 00 ; 3............I..
000003f0h: 00 01 00 00 00 06 01 03 00 03 00 00 00 01 00 06 ; ................
00000400h: 00 00 01 1A 00 05 00 00 00 01 00 00 04 42 01 1B ; .............B..
00000410h: 00 05 00 00 00 01 00 00 04 4A 01 28 00 03 00 00 ; .........J.(....
00000420h: 00 01 00 02 00 00 02 01 00 04 00 00 00 01 00 00 ; ................
00000430h: 04 52 02 02 00 04 00 00 00 01 00 00 10 C6 00 00 ; .R...........?.
00000440h: 00 00 00 00 00 48 00 00 00 01 00 00 00 48 00 00 ; .....H.......H..
00000450h: 00 01 FF D8 FF E0 00 10 4A 46 49 46 00 01 02 01 ; ..??.JFIF....

======================
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 0B : 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 14 : Count (4byte)
[0012H] 00 00 00 92 : Value Offset (4byte) - 1*14H=20byte

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

[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 BA : Value Offset - 8*1H=8byte

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

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

[0052H] 01 31 : Tag - Software (7번 엔트리)
[0054H] 00 02 : Type
[0056H] 00 00 00 14 : Count
[005AH] 00 00 00 CA : Value Offset

[005EH] 01 32 : Tag - DateTime (8번 엔트리)
[0060H] 00 02 : Type
[0062H] 00 00 00 14 : Count
[0066H] 00 00 00 DE : Value Offset

[006AH] 02 13 : Tag - YCbCrPositioning (9번 엔트리)
[006CH] 00 03 : Type
[006EH] 00 00 00 01 : Count
[0072H] 00 02 00 00 : Value

[0076H] C4 A5 : Tag - ?????? (10번 엔트리)
[0078H] 00 07 : Type
[007AH] 00 00 01 60 : Count
[007EH] 00 00 00 F2 : Value Offset - 1*160H=352byte

[0082H] 87 69  : Tag - Exif IFD Pointer (11번 엔트리)
[0084H] 00 04 : Type
[0086H] 00 00 00 01 : Count
[008AH] 00 00 02 54 : Value Offset - 4*1H=4byte

[008EH] 00 00 03 F4 : Next IFD Offset (LONG type : 4byte)

==========================
Value longer than 4byte of 0th IFD
==========================
[0092H] 50 45 4E 54 41 58 20 43 6F 72 70 6F 72 61 74 69 6F 6E 20 00 : Make value (20byte) - "PENTAX Corporation ."
[00A6H] 50 45 4E 54 41 58 20 2A 69 73 74 20 44 53 20 20 20 20 20 00 : Model VALUE (20BYTE) - "PENTAX *ist DS     ."
[00BAH] 00 00 00 48 00 00 00 01 - XResolution value (8byte) - "...H...."
[00C2H] 00 00 00 48 00 00 00 01 - YResolution value (8byte) - "...H...."
[00CAH] 41 64 6F 62 65 20 50 68 6F 74 6F 73 68 6F 70 20 37 2E 30 00 : Software value (20byte)- "Adobe Photoshop 7.0."
[00DEH] 32 30 30 36 3A 30 34 3A 31 37 20 31 32 3A 35 38 3A 34 31 00 : DateTime value (20byte) - "2006:04:17 12:58:41."
[00F2H] 50 72 69 6E 74 49 4D 00 30 33 30 30 00 ~~~~ : ?????? (352byte) - "PrintIM.0300.~~~~~"

[0252H] 00 00 - 2byte가 남네??????

==========================
Exif IFD
==========================
[0254H] 00 1C : Exif IFD Number (2byte) - 엔트리 갯수 28개

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

82 9D : FNumber - 2번 엔트리
00 05
00 00 00 01
00 00 03 B2

88 22 : ExposureProgram - 3번 엔트리
00 03
00 00 00 01
00 03 00 00

88 27 : ISOSpeedRatings - 4번 엔트리
00 03
00 00 00 01
00 C8 00 00

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

90 03 : DateTimeOriginal - 6번 엔트리
00 02
00 00 00 14
00 00 03 BA

90 04 : DateTimeDigitized - 7번 엔트리
00 02
00 00 00 14
00 00 03 CE

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

92 04 : ExposureBiasValue - 9번 엔트리
00 0A
00 00 00 01
00 00 03 E2

92 07 : MeteringMode - 10번 엔트리
00 03
00 00 00 01
00 03 00 00

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

92 0A : FocalLength - 12번 엔트리
00 05
00 00 00 01
00 00 03 EA

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

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

A0 02 : PixelXDimension - 15번 엔트리
00 04
00 00 00 01
00 00 01 E2

A0 03 : PixelYDimension - 16번 엔트리
00 04
00 00 00 01
00 00 02 D3

A2 17 : SensingMethod - 17번 엔트리
00 03
00 00 00 01
00 02 00 00

A3 00 : FileSource - 18번 엔트리
00 07
00 00 00 01
03 00 00 00

A3 01 : SceneType - 19번 엔트리
00 07
00 00 00 01
01 00 00 00

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

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

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

A4 05 : Focal length in 35 mm film - 23번 엔트리
00 03
00 00 00 01
00 6D 00 00

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

A4 08 : Contrast - 25번 엔트리
00 03
00 00 00 01
00 00 00 00

A4 09 : Saturation - 26번 엔트리
00 03
00 00 00 01
00 00 00 00

A4 0A : Sharpness - 27번 엔트리
00 03
00 00 00 01
00 02 00 00

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

[03A6H] 00 00 00 00 : Next IFD Offset (4byte)

==========================
Value longer than 4byte of Exif IFD
==========================
[03AAH] 00 00 00 01 00 00 00 7D : ExposureTime value - ".......}"
[03B2H] 00 00 00 1C 00 00 00 0A : FNumber value - "........"                                   

28개의 엔트리중 value offset 항목에 따라 계속 읽어감

[03EAH] 00 00 00 49 00 00 00 01 : FocalLength value (8byte) - "...I...." 73mm

[03F2H] 00 00 : 2byte가 남네??????

==========================
1st IFD
==========================
[03F4H] 00 06 : Number Of Interoperability (2byte)
 -> [0090H] 03 F4 : 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 04 42

01 1B : YResolution
00 05
00 00 00 01
00 00 04 4A

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 04 52

02 02 : JPEGInterchangeFormatLength - Byte of JPEG Data
00 04
00 00 00 01
00 00 10 C6

[03F6H] 00 00 00 00 : Next IFD Offset (4byte)

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

==========================
Thumbnail Image Data
==========================    
[0452H] FF D8 FF E0 ~~~ FF D9 : 4294byte(10C6H)