Imported Upstream version 1.0
[packages/binwalk.git] / magic / filesystems
1 #--------------------File Systems---------------------
2
3 # Minix filesystems - Juan Cespedes <cespedes@debian.org>
4 0x410   leshort         0x137f          Minix filesystem
5 >0x402  beshort         !0              \b, %d zones
6 >0x1e   string          minix           \b, bootable
7 0x410   leshort         0x138f          Minix filesystem, 30 char names
8 0x410   leshort         0x2468          Minix filesystem, version 2
9 0x410   leshort         0x2478          Minix filesystem, version 2, 30 char names
10 0x410   leshort         0x4d5a          Minix filesystem, version 3
11 0x410   leshort         0x4d6a          Minix filesystem, version 3, 30 char names
12
13 0x410   beshort         0x137f          Minix filesystem (big endian)
14 >0x402  beshort         !0              \b, %d zones
15 >0x1e   string          minix           \b, bootable
16 0x410   beshort         0x138f          Minix filesystem (big endian), 30 char names
17 0x410   beshort         0x2468          Minix filesystem (big endian), version 2
18 0x410   beshort         0x2478          Minix filesystem (big endian), version 2, 30 char names
19 0x410   beshort         0x4d5a          Minix filesystem (big endian), version 3
20 0x410   beshort         0x4d6a          Minix filesystem (big endian), version 3, 30 char names
21
22 # YAFFS
23 0       string  \x03\x00\x00\x00\x01\x00\x00\x00\xFF\xFF        YAFFS filesystem
24
25 # EFS2 file system - jojo@utulsa.edu
26 0      lelong 0x53000000       EFS2 Qualcomm filesystem super block, little endian,
27 >8     string !EFSSuper        invalid,
28 >4     leshort &1              NAND
29 >4     leshort ^1              NOR
30 >4     leshort x               version 0x%x,
31 >24    lelong  x               %d blocks,
32 >16    lelong  x               0x%x pages per block,
33 >20    lelong  x               0x%x bytes per page
34
35 0      belong 0x53000000       EFS2 Qualcomm filesystem super block, big endian,
36 >8     string !SSFErepu        invalid,
37 >4     beshort &1              NAND
38 >4     beshort ^1              NOR
39 >4     beshort x               version 0x%x,
40 >24    belong  x               %d blocks,
41 >16    belong  x               0x%x pages per block,
42 >20    belong  x               0x%x bytes per page
43
44 # TROC file system
45 0       string  TROC            TROC filesystem,
46 >4      lelong  x               %d file entries
47
48 # PFS file system
49 0       string  PFS/            PFS filesystem,
50 >4      string  x               version "%s",
51 >14     leshort x               %d files
52
53 # MPFS file system
54 0       string  MPFS            MPFS (Microchip) filesystem,
55 >4      byte    x               version %d.
56 >5      byte    x               \b%d,
57 >6      leshort x               %d file entries
58
59 # cramfs filesystem - russell@coker.com.au
60 0       lelong  0x28cd3d45      CramFS filesystem, little endian
61 >4      lelong  <0              invalid
62 >4      lelong  x               size %lu
63 >8      lelong  &1              version #2
64 >8      lelong  &2              sorted_dirs
65 >8      lelong  &4              hole_support
66 >32     lelong  x               CRC 0x%x,
67 >36     lelong  x               edition %lu,
68 >40     lelong  <0              invalid
69 >40     lelong  x               %lu blocks,
70 >44     lelong  <0              invalid
71 >44     lelong  x               %lu files
72 >4      lelong  x               {jump-to-offset:%lu}
73 >4      lelong  x               {file-size:%lu}
74
75 0       belong  0x28cd3d45      CramFS filesystem, big endian
76 >4      belong  <0              invalid
77 >4      belong  x               size %lu
78 >8      belong  &1              version #2
79 >8      belong  &2              sorted_dirs
80 >8      belong  &4              hole_support
81 >32     belong  x               CRC 0x%x,
82 >36     belong  x               edition %lu,
83 >40     belong  <0              invalid
84 >40     belong  x               %lu blocks,
85 >44     belong  <0              invalid
86 >44     belong  x               %lu files
87 >4      belong  x               {jump-to-offset:%lu}
88 >4      belong  x               {file-size:%lu}
89
90
91
92 # JFFS2 file system
93 # If used with binwalk's smart signature feature (on by default, -S to disable)
94 # this signature can potentially lead to missing some JFFS2 file systems if there
95 # are multiple JFFS2 file systems in a target file and there are no other identified
96 # files in between the JFFS2 file systems. This is an unlikely scenario however, and
97 # the below signatures are much improved in terms of readability and accuracy in the
98 # vast majority of real world scenarios.
99 0               leshort 0x1985  JFFS2 filesystem, little endian{filter-include}
100 >2              leshort !0xE001
101 >>2             leshort !0xE002
102 >>>2            leshort !0x2003
103 >>>>2           leshort !0x2004
104 >>>>>2          leshort !0x2006
105 >>>>>>2         leshort !0xE008
106 >>>>>>>2        leshort !0xE009 \b, invalid
107 >(4.l)          leshort !0x1985         
108 >>(4.l+1)       leshort !0x1985 
109 >>>(4.l+2)      leshort !0x1985 
110 >>>>(4.l+3)     leshort !0x1985
111 >>>>>(4.l)      leshort !0xFFFF
112 >>>>>>(4.l+1)   leshort !0xFFFF
113 >>>>>>>(4.l+2)  leshort !0xFFFF
114 >>>>>>>>(4.l+3) leshort !0xFFFF \b, invalid
115 >4              lelong  x       {one-of-many}{jump-to-offset:%d}
116
117 0               beshort 0x1985  JFFS2 filesystem, big endian{filter-include}
118 >2              beshort !0xE001
119 >>2             beshort !0xE002
120 >>>2            beshort !0x2003
121 >>>>2           beshort !0x2004
122 >>>>>2          beshort !0x2006
123 >>>>>>2         beshort !0xE008
124 >>>>>>>2        beshort !0xE009 \b, invalid
125 >(4.L)          beshort !0x1985  
126 >>(4.L+1)       beshort !0x1985  
127 >>>(4.L+2)      beshort !0x1985
128 >>>>(4.L+3)     beshort !0x1985 
129 >>>>>(4.L)      beshort !0xFFFF
130 >>>>>>(4.L+1)   beshort !0xFFFF
131 >>>>>>>(4.L+2)  beshort !0xFFFF
132 >>>>>>>>(4.L+3) beshort !0xFFFF \b, invalid
133 >4              belong  x       {one-of-many}{jump-to-offset:%d}
134
135
136 # Squashfs, big endian
137 0       string  sqsh    Squashfs filesystem, big endian,
138 >28     beshort >10     invalid
139 >28     beshort <1      invalid
140 >30     beshort >10     invalid
141 >28     beshort x       version %d.
142 >30     beshort x       \b%d,
143 >28     beshort >3      compression:
144 >>20    beshort 1       \bgzip,
145 >>20    beshort 2       \blzma,
146 >>20    beshort 0       \binvalid,
147 >>20    beshort >4      \binvalid,
148 >28     beshort <3
149 >>8     belong  x       size: %d bytes,
150 >28     beshort 3
151 >>63    bequad x        size: %lld bytes,
152 >28     beshort >3
153 >>40    bequad  x       size: %lld bytes,
154 >4      belong  x       %d inodes,
155 >28     beshort >3
156 >>12    belong          blocksize: %d bytes,
157 >28     beshort <2
158 >>32    beshort x       blocksize: %d bytes,
159 >28     beshort 2
160 >>51    belong  x       blocksize: %d bytes,
161 >28     beshort 3
162 >>51    belong  x       blocksize: %d bytes,
163 >28     beshort >3
164 >>12    belong  x       blocksize: %d bytes,
165 >28     beshort <4
166 >>39    bedate  x       created: %s
167 >28     beshort >3
168 >>8     bedate x        created: %s
169 >28     beshort <3
170 >>8     belong  x       {jump-to-offset:%d}
171 >28     beshort 3       
172 >>63    bequad  x       {jump-to-offset:%lld}
173 >28     beshort >3
174 >>40    bequad  x       {jump-to-offset:%lld}
175
176 # Squashfs, little endian
177 0       string  hsqs    Squashfs filesystem, little endian,
178 >28     leshort >10     invalid
179 >28     leshort <1      invalid
180 >30     leshort >10     invalid
181 >28     leshort x       version %d.
182 >30     leshort x       \b%d,
183 >28     leshort >3      compression: 
184 >>20    leshort 1       \bgzip,
185 >>20    leshort 2       \blzma,
186 >>20    leshort 0       \binvalid,
187 >>20    leshort >4      \binvalid,
188 >28     leshort <3
189 >>8     lelong  x       size: %d bytes,
190 >>8     lelong  x       {file-size:%d}
191 >28     leshort 3
192 >>63    lequad x        size: %lld bytes,
193 >>63    lequad x        {file-size:%lld}
194 >28     leshort >3      
195 >>40    lequad  x       size: %lld bytes,
196 >>40    lequad  x       {file-size:%lld}
197 >4      lelong  x       %d inodes,
198 >28     leshort >3
199 >>12    lelong          blocksize: %d bytes,
200 >28     leshort <2
201 >>32    leshort x       blocksize: %d bytes,
202 >28     leshort 2
203 >>51    lelong  x       blocksize: %d bytes,
204 >28     leshort 3
205 >>51    lelong  x       blocksize: %d bytes,
206 >28     leshort >3      
207 >>12    lelong  x       blocksize: %d bytes,
208 >28     leshort <4
209 >>39    ledate  x       created: %s
210 >28     leshort >3
211 >>8     ledate x        created: %s
212 >28     leshort <3
213 >>8     lelong  x       {jump-to-offset:%d}
214 >28     leshort 3
215 >>63    lequad x        {jump-to-offset:%lld}
216 >28     leshort >3
217 >>40    lequad  x       {jump-to-offset:%lld}
218
219 # Squashfs with LZMA compression
220 0       string  sqlz    Squashfs filesystem, big endian, lzma compression, 
221 >28     beshort >10     invalid
222 >28     beshort <1      invalid
223 >30     beshort >10     invalid
224 >28     beshort x       version %d.
225 >30     beshort x       \b%d,
226 >28     beshort >3      compression:
227 >>20    beshort 1       \bgzip,
228 >>20    beshort 2       \blzma,
229 >>20    beshort 0       \binvalid,
230 >>20    beshort >4      \binvalid,
231 >28     beshort <3
232 >>8     belong  x       size: %d bytes,
233 >>8     belong  x       {file-size:%d}
234 >28     beshort 3
235 >>63    bequad x        size: %lld bytes,
236 >>63    bequad x        {file-size:%lld}
237 >28     beshort >3
238 >>40    bequad  x       size: %lld bytes,
239 >>40    bequad  x       {file-size:%lld}
240 >4      belong  x       %d inodes,
241 >28     beshort >3
242 >>12    belong          blocksize: %d bytes,
243 >28     beshort <2
244 >>32    beshort x       blocksize: %d bytes,
245 >28     beshort 2
246 >>51    belong  x       blocksize: %d bytes,
247 >28     beshort 3
248 >>51    belong  x       blocksize: %d bytes,
249 >28     beshort >3
250 >>12    belong  x       blocksize: %d bytes,
251 >28     beshort <4
252 >>39    bedate  x       created: %s
253 >28     beshort >3
254 >>8     bedate x        created: %s
255 >28     beshort <3
256 >>8     belong  x       {jump-to-offset:%d}
257 >28     beshort 3
258 >>63    bequad  x       {jump-to-offset:%lld}
259 >28     beshort >3
260 >>40    bequad  x       {jump-to-offset:%lld}
261
262 # Squashfs 3.3 LZMA signature
263 0       string  qshs    Squashfs filesystem, big endian, lzma signature,
264 >28     beshort >10     invalid
265 >28     beshort <1      invalid
266 >30     beshort >10     invalid
267 >28     beshort x       version %d.
268 >30     beshort x       \b%d,
269 >28     beshort >3      compression:
270 >>20    beshort 1       \bgzip,
271 >>20    beshort 2       \blzma,
272 >>20    beshort 0       \binvalid,
273 >>20    beshort >4      \binvalid,
274 >28     beshort <3
275 >>8     belong  x       size: %d bytes,
276 >>8     belong  x       {file-size:%d}
277 >28     beshort 3
278 >>63    bequad x        size: %lld bytes,
279 >>63    bequad x        {file-size:%lld}
280 >28     beshort >3
281 >>40    bequad  x       size: %lld bytes,
282 >>40    bequad  x       {file-size:%lld}
283 >4      belong  x       %d inodes,
284 >28     beshort >3
285 >>12    belong          blocksize: %d bytes,
286 >28     beshort <2
287 >>32    beshort x       blocksize: %d bytes,
288 >28     beshort 2
289 >>51    belong  x       blocksize: %d bytes,
290 >28     beshort 3
291 >>51    belong  x       blocksize: %d bytes,
292 >28     beshort >3
293 >>12    belong  x       blocksize: %d bytes,
294 >28     beshort <4
295 >>39    bedate  x       created: %s
296 >28     beshort >3
297 >>8     bedate x        created: %s
298 >28     beshort <3
299 >>8     belong  x       {jump-to-offset:%d}
300 >28     beshort 3
301 >>63    bequad  x       {jump-to-offset:%lld}
302 >28     beshort >3
303 >>40    bequad  x       {jump-to-offset:%lld}
304
305 # Squashfs for DD-WRT
306 0       string  tqsh    Squashfs filesystem, big endian, DD-WRT signature,
307 >28     beshort >10     invalid
308 >28     beshort <1      invalid
309 >30     beshort >10     invalid
310 >28     beshort x       version %d.
311 >30     beshort x       \b%d,
312 >28     beshort >3      compression:
313 >>20    beshort 1       \bgzip,
314 >>20    beshort 2       \blzma,
315 >>20    beshort 0       \binvalid,
316 >>20    beshort >4      \binvalid,
317 >28     beshort <3
318 >>8     belong  x       size: %d bytes,
319 >>8     belong  x       {file-size:%d}
320 >28     beshort 3
321 >>63    bequad x        size: %lld bytes,
322 >>63    bequad x        {file-size:%lld}
323 >28     beshort >3
324 >>40    bequad  x       size: %lld bytes,
325 >>40    bequad  x       {file-size:%lld}
326 >4      belong  x       %d inodes,
327 >28     beshort >3
328 >>12    belong          blocksize: %d bytes,
329 >28     beshort <2
330 >>32    beshort x       blocksize: %d bytes,
331 >28     beshort 2
332 >>51    belong  x       blocksize: %d bytes,
333 >28     beshort 3
334 >>51    belong  x       blocksize: %d bytes,
335 >28     beshort >3
336 >>12    belong  x       blocksize: %d bytes,
337 >28     beshort <4
338 >>39    bedate  x       created: %s
339 >28     beshort >3
340 >>8     bedate x        created: %s
341 >28     beshort <3
342 >>8     belong  x       {jump-to-offset:%d}
343 >28     beshort 3
344 >>63    bequad  x       {jump-to-offset:%lld}
345 >28     beshort >3
346 >>40    bequad  x       {jump-to-offset:%lld}
347
348 # Squashfs for DD-WRT
349 0       string  hsqt    Squashfs filesystem, little endian, DD-WRT signature,
350 >28     leshort >10     invalid
351 >28     leshort <1      invalid
352 >30     leshort >10     invalid
353 >28     leshort x       version %d.
354 >30     leshort x       \b%d,
355 >28     leshort >3      compression:
356 >>20    leshort 1       \bgzip,
357 >>20    leshort 2       \blzma,
358 >>20    leshort 0       \binvalid,
359 >>20    leshort >4      \binvalid,
360 >28     leshort <3
361 >>8     lelong  x       size: %d bytes,
362 >>8     lelong  x       {file-size:%d}
363 >28     leshort 3
364 >>63    lequad x        size: %lld bytes,
365 >>63    lequad x        {file-size:%lld}
366 >28     leshort >3
367 >>40    lequad  x       size: %lld bytes,
368 >>40    lequad  x       {file-size:%lld}
369 >4      lelong  x       %d inodes,
370 >28     leshort >3
371 >>12    lelong          blocksize: %d bytes,
372 >28     leshort <2
373 >>32    leshort x       blocksize: %d bytes,
374 >28     leshort 2
375 >>51    lelong  x       blocksize: %d bytes,
376 >28     leshort 3
377 >>51    lelong  x       blocksize: %d bytes,
378 >28     leshort >3
379 >>12    lelong  x       blocksize: %d bytes,
380 >28     leshort <4
381 >>39    ledate  x       created: %s
382 >28     leshort >3
383 >>8     ledate x        created: %s
384 >28     leshort <3
385 >>8     lelong  x       {jump-to-offset:%d}
386 >28     leshort 3
387 >>63    lequad x        {jump-to-offset:%lld}
388 >28     leshort >3
389 >>40    lequad  x       {jump-to-offset:%lld}
390
391 # Non-standard Squashfs signature found on some D-Link routers
392 0       string  shsq    Squashfs filesystem, little endian, non-standard signature, 
393 >28     leshort >10     invalid
394 >28     leshort <1      invalid
395 >30     leshort >10     invalid
396 >28     leshort x       version %d.
397 >30     leshort x       \b%d,
398 >28     leshort >3      compression:
399 >>20    leshort 1       \bgzip,
400 >>20    leshort 2       \blzma,
401 >>20    leshort 0       \binvalid,
402 >>20    leshort >4      \binvalid,
403 >28     leshort <3
404 >>8     lelong  x       size: %d bytes,
405 >>8     lelong  x       {file-size:%d}
406 >28     leshort 3
407 >>63    lequad x        size: %lld bytes,
408 >>63    lequad x        {file-size:%lld}
409 >28     leshort >3
410 >>40    lequad  x       size: %lld bytes,
411 >>40    lequad  x       {file-size:%lld}
412 >4      lelong  x       %d inodes,
413 >28     leshort >3
414 >>12    lelong          blocksize: %d bytes,
415 >28     leshort <2
416 >>32    leshort x       blocksize: %d bytes,
417 >28     leshort 2
418 >>51    lelong  x       blocksize: %d bytes,
419 >28     leshort 3
420 >>51    lelong  x       blocksize: %d bytes,
421 >28     leshort >3
422 >>12    lelong  x       blocksize: %d bytes,
423 >28     leshort <4
424 >>39    ledate  x       created: %s
425 >28     leshort >3
426 >>8     ledate x        created: %s
427 >28     leshort <3
428 >>8     lelong  x       {jump-to-offset:%d}
429 >28     leshort 3
430 >>63    lequad x        {jump-to-offset:%lld}
431 >28     leshort >3
432 >>40    lequad  x       {jump-to-offset:%lld}
433
434 # ext2/ext3 filesystems - Andreas Dilger <adilger@dilger.ca>
435 # ext4 filesystem - Eric Sandeen <sandeen@sandeen.net>
436 # volume label and UUID Russell Coker
437 # http://etbe.coker.com.au/2008/07/08/label-vs-uuid-vs-device/
438 0   leshort         0xEF53              Linux EXT filesystem,{filter-include}{offset-adjust:-0x438}
439 >2      leshort         >4              invalid state
440 >2      leshort         3               invalid state
441 >2      leshort         <0              invalid state
442 >4      leshort         >3              invalid error behavior
443 >4      leshort         <0              invalid error behavior
444 >4      lelong          >1              invalid major revision
445 >4  lelong              <0              invalid major revision
446 >4  lelong          x               rev %d
447 >6  leshort         x               \b.%d
448 # No journal?  ext2
449 >36  lelong          ^0x0000004      ext2 filesystem data
450 >>2 leshort         ^0x0000001      (mounted or unclean)
451 # Has a journal?  ext3 or ext4
452 >36  lelong          &0x0000004
453 #  and small INCOMPAT?
454 >>40 lelong          <0x0000040
455 #   and small RO_COMPAT?
456 >>>44 lelong         <0x0000008      ext3 filesystem data
457 #   else large RO_COMPAT?
458 >>>44 lelong         >0x0000007      ext4 filesystem data
459 #  else large INCOMPAT?
460 >>40 lelong          >0x000003f      ext4 filesystem data
461 >48  belong          x               \b, UUID=%08x
462 >52  beshort         x               \b-%04x
463 >54  beshort         x               \b-%04x
464 >56  beshort         x               \b-%04x
465 >58  belong          x               \b-%08x
466 >60  beshort         x               \b%04x
467 >64  string          >0              \b, volume name "%s"
468
469
470 #romfs filesystems - Juan Cespedes <cespedes@debian.org>
471 0       string  -rom1fs-\0              romfs filesystem, version 1
472 >8      belong  >10000000               invalid
473 >8      belong  x                       size: %d bytes,
474 >16     string  x                       {file-name:%s}
475 >16     string  x                       named "%s"
476 >8      belong  x                       {file-size:%d}
477 >8      belong  x                       {jump-to-offset:%d}
478
479 # Wind River MemFS file system, found in some VxWorks devices
480 0       string  owowowowowowowowowowowowowowow          Wind River management filesystem,
481 >30     string  !ow                                     invalid,
482 >32     belong  1                                       compressed,
483 >32     belong  2                                       plain text,
484 >36     belong  x                                       %d files
485
486
487 # netboot image - Juan Cespedes <cespedes@debian.org>
488 0       lelong                  0x1b031336L     Netboot image,
489 >4      lelong&0xFFFFFF00       0
490 >>4     lelong&0x100            0x000           mode 2
491 >>4     lelong&0x100            0x100           mode 3
492 >4      lelong&0xFFFFFF00       !0              unknown mode (invalid)