Deleted Added
full compact
jpeg (276415) jpeg (277592)
1
2#------------------------------------------------------------------------------
1
2#------------------------------------------------------------------------------
3# $File: jpeg,v 1.21 2014/09/12 20:47:00 christos Exp $
3# $File: jpeg,v 1.25 2015/01/02 16:56:50 christos Exp $
4# JPEG images
5# SunOS 5.5.1 had
6#
7# 0 string \377\330\377\340 JPEG file
8# 0 string \377\330\377\356 JPG file
9#
10# both of which turn into "JPEG image data" here.
11#

--- 14 unchanged lines hidden (view full) ---

26>>13 byte 1 \b, resolution (DPI)
27>>13 byte 2 \b, resolution (DPCM)
28>>14 beshort x \b, density %dx
29>>16 beshort x \b%d
30>>4 beshort x \b, segment length %d
31# Next, show thumbnail info, if it exists:
32>>18 byte !0 \b, thumbnail %dx
33>>>19 byte x \b%d
4# JPEG images
5# SunOS 5.5.1 had
6#
7# 0 string \377\330\377\340 JPEG file
8# 0 string \377\330\377\356 JPG file
9#
10# both of which turn into "JPEG image data" here.
11#

--- 14 unchanged lines hidden (view full) ---

26>>13 byte 1 \b, resolution (DPI)
27>>13 byte 2 \b, resolution (DPCM)
28>>14 beshort x \b, density %dx
29>>16 beshort x \b%d
30>>4 beshort x \b, segment length %d
31# Next, show thumbnail info, if it exists:
32>>18 byte !0 \b, thumbnail %dx
33>>>19 byte x \b%d
34>6 string Exif \b, Exif standard: [
35>>12 indirect/r x
36>>12 string x \b]
34
37
35# EXIF moved down here to avoid reporting a bogus version number,
36# and EXIF version number printing added.
37# - Patrik R=E5dman <patrik+file-magic@iki.fi>
38>6 string Exif \b, EXIF standard
39# Look for EXIF IFD offset in IFD 0, and then look for EXIF version tag in EXIF IFD.
40# All possible combinations of entries have to be enumerated, since no looping
41# is possible. And both endians are possible...
42# The combinations included below are from real-world JPEGs.
43# Little-endian
44>>12 string II
45# IFD 0 Entry #5:
46>>>70 leshort 0x8769
47# EXIF IFD Entry #1:
48>>>>(78.l+14) leshort 0x9000
49>>>>>(78.l+23) byte x %c
50>>>>>(78.l+24) byte x \b.%c
51>>>>>(78.l+25) byte !0x30 \b%c
52# IFD 0 Entry #9:
53>>>118 leshort 0x8769
54# EXIF IFD Entry #3:
55>>>>(126.l+38) leshort 0x9000
56>>>>>(126.l+47) byte x %c
57>>>>>(126.l+48) byte x \b.%c
58>>>>>(126.l+49) byte !0x30 \b%c
59# IFD 0 Entry #10
60>>>130 leshort 0x8769
61# EXIF IFD Entry #3:
62>>>>(138.l+38) leshort 0x9000
63>>>>>(138.l+47) byte x %c
64>>>>>(138.l+48) byte x \b.%c
65>>>>>(138.l+49) byte !0x30 \b%c
66# EXIF IFD Entry #4:
67>>>>(138.l+50) leshort 0x9000
68>>>>>(138.l+59) byte x %c
69>>>>>(138.l+60) byte x \b.%c
70>>>>>(138.l+61) byte !0x30 \b%c
71# EXIF IFD Entry #5:
72>>>>(138.l+62) leshort 0x9000
73>>>>>(138.l+71) byte x %c
74>>>>>(138.l+72) byte x \b.%c
75>>>>>(138.l+73) byte !0x30 \b%c
76# IFD 0 Entry #11
77>>>142 leshort 0x8769
78# EXIF IFD Entry #3:
79>>>>(150.l+38) leshort 0x9000
80>>>>>(150.l+47) byte x %c
81>>>>>(150.l+48) byte x \b.%c
82>>>>>(150.l+49) byte !0x30 \b%c
83# EXIF IFD Entry #4:
84>>>>(150.l+50) leshort 0x9000
85>>>>>(150.l+59) byte x %c
86>>>>>(150.l+60) byte x \b.%c
87>>>>>(150.l+61) byte !0x30 \b%c
88# EXIF IFD Entry #5:
89>>>>(150.l+62) leshort 0x9000
90>>>>>(150.l+71) byte x %c
91>>>>>(150.l+72) byte x \b.%c
92>>>>>(150.l+73) byte !0x30 \b%c
93# Big-endian
94>>12 string MM
95# IFD 0 Entry #9:
96>>>118 beshort 0x8769
97# EXIF IFD Entry #1:
98>>>>(126.L+14) beshort 0x9000
99>>>>>(126.L+23) byte x %c
100>>>>>(126.L+24) byte x \b.%c
101>>>>>(126.L+25) byte !0x30 \b%c
102# EXIF IFD Entry #3:
103>>>>(126.L+38) beshort 0x9000
104>>>>>(126.L+47) byte x %c
105>>>>>(126.L+48) byte x \b.%c
106>>>>>(126.L+49) byte !0x30 \b%c
107# IFD 0 Entry #10
108>>>130 beshort 0x8769
109# EXIF IFD Entry #3:
110>>>>(138.L+38) beshort 0x9000
111>>>>>(138.L+47) byte x %c
112>>>>>(138.L+48) byte x \b.%c
113>>>>>(138.L+49) byte !0x30 \b%c
114# EXIF IFD Entry #5:
115>>>>(138.L+62) beshort 0x9000
116>>>>>(138.L+71) byte x %c
117>>>>>(138.L+72) byte x \b.%c
118>>>>>(138.L+73) byte !0x30 \b%c
119# IFD 0 Entry #11
120>>>142 beshort 0x8769
121# EXIF IFD Entry #4:
122>>>>(150.L+50) beshort 0x9000
123>>>>>(150.L+59) byte x %c
124>>>>>(150.L+60) byte x \b.%c
125>>>>>(150.L+61) byte !0x30 \b%c
126
127# Jump to the first segment
128>(4.S+4) use jpeg_segment
129
130# This uses recursion...
1310 name jpeg_segment
132>0 beshort 0xFFFE
133>>(2.S+2) use jpeg_segment
134>>2 pstring/HJ x \b, comment: "%s"

--- 18 unchanged lines hidden (view full) ---

153>>7 beshort x \b, %dx
154>>5 beshort x \b%d
155>>9 byte x \b, frames %d
156
157# Define Huffman Tables
158>0 beshort 0xFFC4
159>>(2.S+2) use jpeg_segment
160
38# Jump to the first segment
39>(4.S+4) use jpeg_segment
40
41# This uses recursion...
420 name jpeg_segment
43>0 beshort 0xFFFE
44>>(2.S+2) use jpeg_segment
45>>2 pstring/HJ x \b, comment: "%s"

--- 18 unchanged lines hidden (view full) ---

64>>7 beshort x \b, %dx
65>>5 beshort x \b%d
66>>9 byte x \b, frames %d
67
68# Define Huffman Tables
69>0 beshort 0xFFC4
70>>(2.S+2) use jpeg_segment
71
72>0 beshort 0xFFE1
73#>>(2.S+2) use jpeg_segment
74>>4 string Exif \b, Exif Standard: [
75>>>10 indirect/r x
76>>>10 string x \b]
77
161# Application specific markers
162>0 beshort&0xFFE0 =0xFFE0
163>>(2.S+2) use jpeg_segment
164
165# DB: Define Quantization tables
166# DD: Define Restart interval [XXX: wrong here, it is 4 bytes]
167# D8: Start of image
168# D9: End of image
169# Dn: Restart
170>0 beshort&0xFFD0 =0xFFD0
171>>(2.S+2) use jpeg_segment
172
78# Application specific markers
79>0 beshort&0xFFE0 =0xFFE0
80>>(2.S+2) use jpeg_segment
81
82# DB: Define Quantization tables
83# DD: Define Restart interval [XXX: wrong here, it is 4 bytes]
84# D8: Start of image
85# D9: End of image
86# Dn: Restart
87>0 beshort&0xFFD0 =0xFFD0
88>>(2.S+2) use jpeg_segment
89
90#>0 beshort x unknown 0x%x
91#>>(2.S+2) use jpeg_segment
92
173# HSI is Handmade Software's proprietary JPEG encoding scheme
1740 string hsi1 JPEG image data, HSI proprietary
175
176# From: David Santinoli <david@santinoli.com>
1770 string \x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A JPEG 2000
178# From: Johan van der Knijff <johan.vanderknijff@kb.nl>
179# Added sub-entries for JP2, JPX, JPM and MJ2 formats; added mimetypes
180# https://github.com/bitsgalore/jp2kMagic

--- 15 unchanged lines hidden ---
93# HSI is Handmade Software's proprietary JPEG encoding scheme
940 string hsi1 JPEG image data, HSI proprietary
95
96# From: David Santinoli <david@santinoli.com>
970 string \x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A JPEG 2000
98# From: Johan van der Knijff <johan.vanderknijff@kb.nl>
99# Added sub-entries for JP2, JPX, JPM and MJ2 formats; added mimetypes
100# https://github.com/bitsgalore/jp2kMagic

--- 15 unchanged lines hidden ---