Imported Upstream version 2.0.1
[packages/binwalk.git] / src / magic / filesystems
1 #--------------------File Systems---------------------
2
3 # Minix filesystems - Juan Cespedes <cespedes@debian.org>
4 # These signatures are useless until they can be improved.
5 #0x410   leshort         0x137f          Minix filesystem
6 #>0x402  beshort         !0              \b, %d zones
7 #>0x1e   string          minix           \b, bootable
8 #0x410   leshort         0x138f          Minix filesystem, 30 char names
9 #0x410   leshort         0x2468          Minix filesystem, version 2
10 #0x410   leshort         0x2478          Minix filesystem, version 2, 30 char names
11 #0x410  leshort         0x4d5a          Minix filesystem, version 3
12 #0x410  leshort         0x4d6a          Minix filesystem, version 3, 30 char names
13
14 #0x410   beshort         0x137f          Minix filesystem (big endian)
15 #>0x402  beshort         !0              \b, %d zones
16 #>0x1e   string          minix           \b, bootable
17 #0x410   beshort         0x138f          Minix filesystem (big endian), 30 char names
18 #0x410   beshort         0x2468          Minix filesystem (big endian), version 2
19 #0x410   beshort         0x2478          Minix filesystem (big endian), version 2, 30 char names
20 #0x410  beshort         0x4d5a          Minix filesystem (big endian), version 3
21 #0x410  beshort         0x4d6a          Minix filesystem (big endian), version 3, 30 char names
22
23 # YAFFS
24 0       string  \x03\x00\x00\x00\x01\x00\x00\x00\xFF\xFF        YAFFS filesystem
25
26 # EFS2 file system - jojo@utulsa.edu
27 0      lelong 0x53000000       EFS2 Qualcomm filesystem super block, little endian,
28 >8     string !EFSSuper        invalid,
29 >4     leshort &1              NAND
30 >4     leshort ^1              NOR
31 >4     leshort x               version 0x%x,
32 >24    lelong  x               %d blocks,
33 >16    lelong  x               0x%x pages per block,
34 >20    lelong  x               0x%x bytes per page
35
36 0      belong 0x53000000       EFS2 Qualcomm filesystem super block, big endian,
37 >8     string !SSFErepu        invalid,
38 >4     beshort &1              NAND
39 >4     beshort ^1              NOR
40 >4     beshort x               version 0x%x,
41 >24    belong  x               %d blocks,
42 >16    belong  x               0x%x pages per block,
43 >20    belong  x               0x%x bytes per page
44
45 # TROC file system
46 0       string  TROC            TROC filesystem,
47 >4      lelong  x               %d file entries
48
49 # PFS file system
50 0       string  PFS/            PFS filesystem,
51 >4      string  x               version "%s",
52 >14     leshort x               %d files
53
54 # MPFS file system
55 0       string  MPFS            MPFS (Microchip) filesystem,
56 >4      byte    x               version %d.
57 >5      byte    x               \b%d,
58 >6      leshort x               %d file entries
59
60 # cramfs filesystem - russell@coker.com.au
61 0       lelong  0x28cd3d45      CramFS filesystem, little endian
62 >4      lelong  <0              invalid
63 >4      lelong  >1073741824     invalid
64 >4      lelong  x               size %u
65 >8      lelong  &1              version #2
66 >8      lelong  &2              sorted_dirs
67 >8      lelong  &4              hole_support
68 >32     lelong  x               CRC 0x%x,
69 >36     lelong  x               edition %u,
70 >40     lelong  <0              invalid
71 >40     lelong  x               %u blocks,
72 >44     lelong  <0              invalid
73 >44     lelong  x               %u files
74 >4      lelong  x               {jump-to-offset:%u}
75 >4      lelong  x               {file-size:%u}
76
77 0       belong  0x28cd3d45      CramFS filesystem, big endian
78 >4      belong  <0              invalid
79 >4      belong  >1073741824     invalid
80 >4      belong  x               size %u
81 >8      belong  &1              version #2
82 >8      belong  &2              sorted_dirs
83 >8      belong  &4              hole_support
84 >32     belong  x               CRC 0x%x,
85 >36     belong  x               edition %u,
86 >40     belong  <0              invalid
87 >40     belong  x               %u blocks,
88 >44     belong  <0              invalid
89 >44     belong  x               %u files
90 >4      belong  x               {jump-to-offset:%u}
91 >4      belong  x               {file-size:%u}
92
93
94
95 # JFFS2 file system
96 # If used with binwalk's smart signature feature (on by default, -S to disable)
97 # this signature can potentially lead to missing some JFFS2 file systems if there
98 # are multiple JFFS2 file systems in a target file and there are no other identified
99 # files in between the JFFS2 file systems. This is an unlikely scenario however, and
100 # the below signatures are much improved in terms of readability and accuracy in the
101 # vast majority of real world scenarios.
102 0               leshort 0x1985  JFFS2 filesystem, little endian
103 >2              leshort !0xE001
104 >>2             leshort !0xE002
105 >>>2            leshort !0x2003
106 >>>>2           leshort !0x2004
107 >>>>>2          leshort !0x2006
108 >>>>>>2         leshort !0xE008
109 >>>>>>>2        leshort !0xE009 \b, invalid
110 >(4.l)          leshort !0x1985         
111 >>(4.l+1)       leshort !0x1985 
112 >>>(4.l+2)      leshort !0x1985 
113 >>>>(4.l+3)     leshort !0x1985
114 >>>>>(4.l)      leshort !0xFFFF
115 >>>>>>(4.l+1)   leshort !0xFFFF
116 >>>>>>>(4.l+2)  leshort !0xFFFF
117 >>>>>>>>(4.l+3) leshort !0xFFFF \b, invalid
118 >4              lelong  0       invalid
119 >4              lelong  <0      invalid
120 >4              lelong  x       {one-of-many}{jump-to-offset:%d}
121
122 0               beshort 0x1985  JFFS2 filesystem, big endian
123 >2              beshort !0xE001
124 >>2             beshort !0xE002
125 >>>2            beshort !0x2003
126 >>>>2           beshort !0x2004
127 >>>>>2          beshort !0x2006
128 >>>>>>2         beshort !0xE008
129 >>>>>>>2        beshort !0xE009 \b, invalid
130 >(4.L)          beshort !0x1985  
131 >>(4.L+1)       beshort !0x1985  
132 >>>(4.L+2)      beshort !0x1985
133 >>>>(4.L+3)     beshort !0x1985 
134 >>>>>(4.L)      beshort !0xFFFF
135 >>>>>>(4.L+1)   beshort !0xFFFF
136 >>>>>>>(4.L+2)  beshort !0xFFFF
137 >>>>>>>>(4.L+3) beshort !0xFFFF \b, invalid
138 >4              belong  0       invalid
139 >4              belong  <0      invalid
140 >4              belong  x       {one-of-many}{jump-to-offset:%d}
141
142
143 # Squashfs, big endian
144 0       string  sqsh    Squashfs filesystem, big endian,
145 >28     beshort >10     invalid
146 >28     beshort <1      invalid
147 >30     beshort >10     invalid
148 >28     beshort x       version %d.
149 >30     beshort x       \b%d,
150 >28     beshort >3      compression:
151 >>20    beshort 1       \bgzip,
152 >>20    beshort 2       \blzma,
153 >>20    beshort 3       \bgzip (non-standard type definition),
154 >>20    beshort 4       \blzma (non-standard type definition),
155 >>20    beshort 0       \binvalid,
156 >>20    beshort >4      \binvalid,
157 >28     beshort <3
158 >>8     belong  x       size: %d bytes,
159 >>8         belong      x       \b{jump-to-offset:%d}
160 >>8         belong      x       \b{file-size:%d}
161 >28     beshort 3
162 >>63    bequad x        size: %lld bytes,
163 >>63    bequad  x       \b{jump-to-offset:%lld}
164 >>63    bequad  x       \b{file-size:%lld}
165 >28     beshort >3
166 >>40    bequad  x       size: %lld bytes,
167 >>40    bequad  x       \b{jump-to-offset:%lld}
168 >>40    bequad  x       \b{file-size:%lld}
169 >4      belong  x       %d inodes,
170 >28     beshort >3
171 >>12    belong          blocksize: %d bytes,
172 >28     beshort <2
173 >>32    beshort x       blocksize: %d bytes,
174 >28     beshort 2
175 >>51    belong  x       blocksize: %d bytes,
176 >28     beshort 3
177 >>51    belong  x       blocksize: %d bytes,
178 >28     beshort >3
179 >>12    belong  x       blocksize: %d bytes,
180 >28     beshort <4
181 >>39    bedate  x       created: %s
182 >28     beshort >3
183 >>8     bedate x        created: %s
184
185 # Squashfs, little endian
186 0       string  hsqs    Squashfs filesystem, little endian,
187 >28     leshort >10     invalid
188 >28     leshort <1      invalid
189 >30     leshort >10     invalid
190 >28     leshort x       version %d.
191 >30     leshort x       \b%d,
192 >28     leshort >3      compression:
193 >>20    leshort 1       \bgzip,
194 >>20    leshort 2       \blzma,
195 >>20    leshort 3       \bgzip (non-standard type definition),
196 >>20    leshort 4       \blzma (non-standard type definition),
197 >>20    leshort 0       \binvalid,
198 >>20    leshort >4      \binvalid,
199 >28     leshort <3
200 >>8     lelong  x       size: %d bytes,
201 >>8     lelong  x       {file-size:%d}
202 >28     leshort 3
203 >>63    lequad x        size: %lld bytes,
204 >>63    lequad x        {file-size:%lld}
205 >28     leshort >3      
206 >>40    lequad  x       size: %lld bytes,
207 >>40    lequad  x       {file-size:%lld}
208 >4      lelong  x       %d inodes,
209 >28     leshort >3
210 >>12    lelong          blocksize: %d bytes,
211 >28     leshort <2
212 >>32    leshort x       blocksize: %d bytes,
213 >28     leshort 2
214 >>51    lelong  x       blocksize: %d bytes,
215 >28     leshort 3
216 >>51    lelong  x       blocksize: %d bytes,
217 >28     leshort >3      
218 >>12    lelong  x       blocksize: %d bytes,
219 >28     leshort <4
220 >>39    ledate  x       created: %s
221 >28     leshort >3
222 >>8     ledate x        created: %s
223 >28     leshort <3
224 >>8     lelong  x       {jump-to-offset:%d}
225 >28     leshort 3
226 >>63    lequad x        {jump-to-offset:%lld}
227 >28     leshort >3
228 >>40    lequad  x       {jump-to-offset:%lld}
229
230 # Squashfs with LZMA compression
231 0       string  sqlz    Squashfs filesystem, big endian, lzma compression, 
232 >28     beshort >10     invalid
233 >28     beshort <1      invalid
234 >30     beshort >10     invalid
235 >28     beshort x       version %d.
236 >30     beshort x       \b%d,
237 >28     beshort >3      compression:
238 >>20    beshort 1       \bgzip,
239 >>20    beshort 2       \blzma,
240 >>20    beshort 3       \bgzip (non-standard type definition),
241 >>20    beshort 4       \blzma (non-standard type definition),
242 >>20    beshort 0       \binvalid,
243 >>20    beshort >4      \binvalid,
244 >28     beshort <3
245 >>8     belong  x       size: %d bytes,
246 >>8     belong  x       {file-size:%d}
247 >28     beshort 3
248 >>63    bequad x        size: %lld bytes,
249 >>63    bequad x        {file-size:%lld}
250 >28     beshort >3
251 >>40    bequad  x       size: %lld bytes,
252 >>40    bequad  x       {file-size:%lld}
253 >4      belong  x       %d inodes,
254 >28     beshort >3
255 >>12    belong          blocksize: %d bytes,
256 >28     beshort <2
257 >>32    beshort x       blocksize: %d bytes,
258 >28     beshort 2
259 >>51    belong  x       blocksize: %d bytes,
260 >28     beshort 3
261 >>51    belong  x       blocksize: %d bytes,
262 >28     beshort >3
263 >>12    belong  x       blocksize: %d bytes,
264 >28     beshort <4
265 >>39    bedate  x       created: %s
266 >28     beshort >3
267 >>8     bedate x        created: %s
268 >28     beshort <3
269 >>8     belong  x       {jump-to-offset:%d}
270 >28     beshort 3
271 >>63    bequad  x       {jump-to-offset:%lld}
272 >28     beshort >3
273 >>40    bequad  x       {jump-to-offset:%lld}
274
275 # Squashfs 3.3 LZMA signature
276 0       string  qshs    Squashfs filesystem, big endian, lzma signature,
277 >28     beshort >10     invalid
278 >28     beshort <1      invalid
279 >30     beshort >10     invalid
280 >28     beshort x       version %d.
281 >30     beshort x       \b%d,
282 >28     beshort >3      compression:
283 >>20    beshort 1       \bgzip,
284 >>20    beshort 2       \blzma,
285 >>20    beshort 3       \bgzip (non-standard type definition),
286 >>20    beshort 4       \blzma (non-standard type definition),
287 >>20    beshort 0       \binvalid,
288 >>20    beshort >4      \binvalid,
289 >28     beshort <3
290 >>8     belong  x       size: %d bytes,
291 >>8     belong  x       {file-size:%d}
292 >28     beshort 3
293 >>63    bequad x        size: %lld bytes,
294 >>63    bequad x        {file-size:%lld}
295 >28     beshort >3
296 >>40    bequad  x       size: %lld bytes,
297 >>40    bequad  x       {file-size:%lld}
298 >4      belong  x       %d inodes,
299 >28     beshort >3
300 >>12    belong          blocksize: %d bytes,
301 >28     beshort <2
302 >>32    beshort x       blocksize: %d bytes,
303 >28     beshort 2
304 >>51    belong  x       blocksize: %d bytes,
305 >28     beshort 3
306 >>51    belong  x       blocksize: %d bytes,
307 >28     beshort >3
308 >>12    belong  x       blocksize: %d bytes,
309 >28     beshort <4
310 >>39    bedate  x       created: %s
311 >28     beshort >3
312 >>8     bedate x        created: %s
313 >28     beshort <3
314 >>8     belong  x       {jump-to-offset:%d}
315 >28     beshort 3
316 >>63    bequad  x       {jump-to-offset:%lld}
317 >28     beshort >3
318 >>40    bequad  x       {jump-to-offset:%lld}
319
320 # Squashfs for DD-WRT
321 0       string  tqsh    Squashfs filesystem, big endian, DD-WRT signature,
322 >28     beshort >10     invalid
323 >28     beshort <1      invalid
324 >30     beshort >10     invalid
325 >28     beshort x       version %d.
326 >30     beshort x       \b%d,
327 >28     beshort >3      compression:
328 >>20    beshort 1       \bgzip,
329 >>20    beshort 2       \blzma,
330 >>20    beshort 3       \bgzip (non-standard type definition),
331 >>20    beshort 4       \blzma (non-standard type definition),
332 >>20    beshort 0       \binvalid,
333 >>20    beshort >4      \binvalid,
334 >28     beshort <3
335 >>8     belong  x       size: %d bytes,
336 >>8     belong  x       {file-size:%d}
337 >28     beshort 3
338 >>63    bequad x        size: %lld bytes,
339 >>63    bequad x        {file-size:%lld}
340 >28     beshort >3
341 >>40    bequad  x       size: %lld bytes,
342 >>40    bequad  x       {file-size:%lld}
343 >4      belong  x       %d inodes,
344 >28     beshort >3
345 >>12    belong          blocksize: %d bytes,
346 >28     beshort <2
347 >>32    beshort x       blocksize: %d bytes,
348 >28     beshort 2
349 >>51    belong  x       blocksize: %d bytes,
350 >28     beshort 3
351 >>51    belong  x       blocksize: %d bytes,
352 >28     beshort >3
353 >>12    belong  x       blocksize: %d bytes,
354 >28     beshort <4
355 >>39    bedate  x       created: %s
356 >28     beshort >3
357 >>8     bedate x        created: %s
358 >28     beshort <3
359 >>8     belong  x       {jump-to-offset:%d}
360 >28     beshort 3
361 >>63    bequad  x       {jump-to-offset:%lld}
362 >28     beshort >3
363 >>40    bequad  x       {jump-to-offset:%lld}
364
365 # Squashfs for DD-WRT
366 0       string  hsqt    Squashfs filesystem, little endian, DD-WRT signature,
367 >28     leshort >10     invalid
368 >28     leshort <1      invalid
369 >30     leshort >10     invalid
370 >28     leshort x       version %d.
371 >30     leshort x       \b%d,
372 >28     leshort >3      compression:
373 >>20    leshort 1       \bgzip,
374 >>20    leshort 2       \blzma,
375 >>20    leshort 3       \bgzip (non-standard type definition),
376 >>20    leshort 4       \blzma (non-standard type definition),
377 >>20    leshort 0       \binvalid,
378 >>20    leshort >4      \binvalid,
379 >28     leshort <3
380 >>8     lelong  x       size: %d bytes,
381 >>8     lelong  x       {file-size:%d}
382 >28     leshort 3
383 >>63    lequad x        size: %lld bytes,
384 >>63    lequad x        {file-size:%lld}
385 >28     leshort >3
386 >>40    lequad  x       size: %lld bytes,
387 >>40    lequad  x       {file-size:%lld}
388 >4      lelong  x       %d inodes,
389 >28     leshort >3
390 >>12    lelong          blocksize: %d bytes,
391 >28     leshort <2
392 >>32    leshort x       blocksize: %d bytes,
393 >28     leshort 2
394 >>51    lelong  x       blocksize: %d bytes,
395 >28     leshort 3
396 >>51    lelong  x       blocksize: %d bytes,
397 >28     leshort >3
398 >>12    lelong  x       blocksize: %d bytes,
399 >28     leshort <4
400 >>39    ledate  x       created: %s
401 >28     leshort >3
402 >>8     ledate x        created: %s
403 >28     leshort <3
404 >>8     lelong  x       {jump-to-offset:%d}
405 >28     leshort 3
406 >>63    lequad x        {jump-to-offset:%lld}
407 >28     leshort >3
408 >>40    lequad  x       {jump-to-offset:%lld}
409
410 # Non-standard Squashfs signature found on some D-Link routers
411 0       string  shsq    Squashfs filesystem, little endian, non-standard signature, 
412 >28     leshort >10     invalid
413 >28     leshort <1      invalid
414 >30     leshort >10     invalid
415 >28     leshort x       version %d.
416 >30     leshort x       \b%d,
417 >28     leshort >3      compression:
418 >>20    leshort 1       \bgzip,
419 >>20    leshort 2       \blzma,
420 >>20    leshort 3       \bgzip (non-standard type definition),
421 >>20    leshort 4       \blzma (non-standard type definition),
422 >>20    leshort 0       \binvalid,
423 >>20    leshort >4      \binvalid,
424 >28     leshort <3
425 >>8     lelong  x       size: %d bytes,
426 >>8     lelong  x       {file-size:%d}
427 >28     leshort 3
428 >>63    lequad x        size: %lld bytes,
429 >>63    lequad x        {file-size:%lld}
430 >28     leshort >3
431 >>40    lequad  x       size: %lld bytes,
432 >>40    lequad  x       {file-size:%lld}
433 >4      lelong  x       %d inodes,
434 >28     leshort >3
435 >>12    lelong          blocksize: %d bytes,
436 >28     leshort <2
437 >>32    leshort x       blocksize: %d bytes,
438 >28     leshort 2
439 >>51    lelong  x       blocksize: %d bytes,
440 >28     leshort 3
441 >>51    lelong  x       blocksize: %d bytes,
442 >28     leshort >3
443 >>12    lelong  x       blocksize: %d bytes,
444 >28     leshort <4
445 >>39    ledate  x       created: %s
446 >28     leshort >3
447 >>8     ledate x        created: %s
448 >28     leshort <3
449 >>8     lelong  x       {jump-to-offset:%d}
450 >28     leshort 3
451 >>63    lequad x        {jump-to-offset:%lld}
452 >28     leshort >3
453 >>40    lequad  x       {jump-to-offset:%lld}
454
455 # ext2/ext3 filesystems - Andreas Dilger <adilger@dilger.ca>
456 # ext4 filesystem - Eric Sandeen <sandeen@sandeen.net>
457 # volume label and UUID Russell Coker
458 # http://etbe.coker.com.au/2008/07/08/label-vs-uuid-vs-device/
459 0   leshort         0xEF53              Linux EXT filesystem,{offset-adjust:-0x438}
460 >2      leshort         >4              invalid state
461 >2      leshort         3               invalid state
462 >2      leshort         <0              invalid state
463 >4      leshort         >3              invalid error behavior
464 >4      leshort         <0              invalid error behavior
465 >4      lelong          >1              invalid major revision
466 >4  lelong              <0              invalid major revision
467 >4  lelong          x               rev %d
468 >6  leshort         x               \b.%d
469 # No journal?  ext2
470 >36  lelong          ^0x0000004      ext2 filesystem data
471 >>2 leshort         ^0x0000001      (mounted or unclean)
472 # Has a journal?  ext3 or ext4
473 >36  lelong          &0x0000004
474 #  and small INCOMPAT?
475 >>40 lelong          <0x0000040
476 #   and small RO_COMPAT?
477 >>>44 lelong         <0x0000008      ext3 filesystem data
478 #   else large RO_COMPAT?
479 >>>44 lelong         >0x0000007      ext4 filesystem data
480 #  else large INCOMPAT?
481 >>40 lelong          >0x000003f      ext4 filesystem data
482 >48  belong          x               \b, UUID=%08x
483 >52  beshort         x               \b-%04x
484 >54  beshort         x               \b-%04x
485 >56  beshort         x               \b-%04x
486 >58  belong          x               \b-%08x
487 >60  beshort         x               \b%04x
488 >64  string          >0              \b, volume name "%s"
489
490
491 #romfs filesystems - Juan Cespedes <cespedes@debian.org>
492 0       string  -rom1fs-\0              romfs filesystem, version 1
493 >8      belong  >10000000               invalid
494 >8      belong  x                       size: %d bytes,
495 >16     string  x                       {file-name:%s}
496 >16     string  x                       named "%s"
497 >8      belong  x                       {file-size:%d}
498 >8      belong  x                       {jump-to-offset:%d}
499
500 # Wind River MemFS file system, found in some VxWorks devices
501 0       string  owowowowowowowowowowowowowowow          Wind River management filesystem,
502 >30     string  !ow                                     invalid,
503 >32     belong  1                                       compressed,
504 >32     belong  2                                       plain text,
505 >36     belong  x                                       %d files
506
507 # netboot image - Juan Cespedes <cespedes@debian.org>
508 0       lelong                  0x1b031336L     Netboot image,
509 >4      lelong&0xFFFFFF00       0
510 >>4     lelong&0x100            0x000           mode 2
511 >>4     lelong&0x100            0x100           mode 3
512 >4      lelong&0xFFFFFF00       !0              unknown mode (invalid)
513
514 0       string                  WDK\x202.0\x00  WDK file system, version 2.0{offset-adjust:-18}
515
516 0       string          CD001                                           ISO{offset-adjust:-32769}
517 >6144   string          !NSR0                                           9660 CD-ROM filesystem data,
518 >6144   string          NSR0                                            UDF filesystem data,
519 >6148   string          1                                               version 1.0,
520 >6148   string          2                                               version 2.0,
521 >6148   string          3                                               version 3.0
522 >6148   byte            >0x33                                           invalid version,
523 >6148   byte            <0x31                                           invalid version,
524 >38     string          >\0                                             volume name: "%s",
525 >2047   string          \000CD001\001EL\x20TORITO\x20SPECIFICATION      bootable
526
527 # updated by Joerg Jenderek at Nov 2012
528 # DOS Emulator image is 128 byte, null right padded header + harddisc image
529 0               string  DOSEMU\0        DOS Emulator image
530 >0x27E          leshort !0xAA55         \b, invalid
531 >0x27E          leshort 0xAA55
532 #offset is 128
533 >>19            byte   128
534 >>>(19.b-1)     byte   0x0
535 >>>>7           lelong >0              \b, %d heads
536 >>>>11          lelong >0              \b, %d sectors/track
537 >>>>15          lelong >0              \b, %d cylinders
538
539 # From: Alex Beregszaszi <alex@fsn.hu>
540 0       string  COWD\x03        VMWare3 disk image,
541 >32     lelong  x               (%d/
542 >36     lelong  x               \b%d/
543 >40     lelong  x               \b%d)
544
545 0       string  COWD\x02        VMWare3 undoable disk image,
546 >32     string  >\0             "%s"
547
548 # TODO: Add header validation
549 0       string        VMDK             VMware4 disk image
550 0       string        KDMV             VMware4 disk image
551
552 #--------------------------------------------------------------------
553 # Qemu Emulator Image
554 # Lines written by Friedrich Schwittay (f.schwittay@yousable.de)
555 # Updated by Adam Buchbinder (adam.buchbinder@gmail.com)
556 # Made by reading sources, reading documentation, and doing trial and error
557 # on existing QCOW files
558 0       string          QFI\xFB QEMU QCOW Image
559
560 # BSD 2.x file system image; used in RetroBSD for PIC32.
561 0               string          FS\x3C\x3C              BSD 2.x filesystem,
562 >1020   string          !\x3E\x3EFS             invalid (missing FSMAGIC2),
563 >8              lelong          x                               size: {math:%d*1024} bytes,
564 >8              lelong          x                               \b{file-size:%d*1024}
565 >8              lelong          x                               \b{jump-to-offset:%d*1024}
566 >8              lelong          x                               total blocks: %d,
567 >972    lelong          x                               free blocks: %d,
568 >968    ledate          x                               last modified: %s
569 >980    byte            !0
570 >>980   string          x                               \b, last mounted on: "%s"
571
572 # Simple file system found in Foscam camera firmware
573 0       beshort 0xbd9a  Foscam WebUI filesystem,
574 >2      leshort x       checksum: 0x%X,
575 >16     lelong  <3      invalid first file name length,
576 >16     lelong  >127    invalid first file name length,
577 >20     byte    0       invalid first file name,
578 >20     byte    !0x2E
579 >>20    byte    !0x2F
580 >>>20   byte    <65     invalid first file name,
581 >>>20   byte    >122    invalid first file name,
582 >20     byte    x       first file name: {raw-replace}
583 >16     lelong  x       {raw-string-length:%d}
584 >20     string  x       {raw-string:%s}
585