Imported Upstream version 5.45
[platform/upstream/python3-magic.git] / magic / Magdir / linux
1
2 #------------------------------------------------------------------------------
3 # $File: linux,v 1.85 2023/07/17 14:40:09 christos Exp $
4 # linux:  file(1) magic for Linux files
5 #
6 # Values for Linux/i386 binaries, from Daniel Quinlan <quinlan@yggdrasil.com>
7 # The following basic Linux magic is useful for reference, but using
8 # "long" magic is a better practice in order to avoid collisions.
9 #
10 # 2     leshort         100             Linux/i386
11 # >0    leshort         0407            impure executable (OMAGIC)
12 # >0    leshort         0410            pure executable (NMAGIC)
13 # >0    leshort         0413            demand-paged executable (ZMAGIC)
14 # >0    leshort         0314            demand-paged executable (QMAGIC)
15 #
16 0       lelong          0x00640107      Linux/i386 impure executable (OMAGIC)
17 >16     lelong          0               \b, stripped
18 0       lelong          0x00640108      Linux/i386 pure executable (NMAGIC)
19 >16     lelong          0               \b, stripped
20 0       lelong          0x0064010b      Linux/i386 demand-paged executable (ZMAGIC)
21 >16     lelong          0               \b, stripped
22 0       lelong          0x006400cc      Linux/i386 demand-paged executable (QMAGIC)
23 >16     lelong          0               \b, stripped
24 #
25 0       string          \007\001\000    Linux/i386 object file
26 >20     lelong          >0x1020         \b, DLL library
27 # Linux-8086 stuff:
28 0       string          \01\03\020\04   Linux-8086 impure executable
29 >28     long            !0              not stripped
30 0       string          \01\03\040\04   Linux-8086 executable
31 >28     long            !0              not stripped
32 #
33 0       string          \243\206\001\0  Linux-8086 object file
34 #
35 0       string          \01\03\020\20   Minix-386 impure executable
36 >28     long            !0              not stripped
37 0       string          \01\03\040\20   Minix-386 executable
38 >28     long            !0              not stripped
39 0       string          \01\03\04\20    Minix-386 NSYM/GNU executable
40 >28     long            !0              not stripped
41 # core dump file, from Bill Reynolds <bill@goshawk.lanl.gov>
42 216     lelong          0421            Linux/i386 core file
43 !:strength / 2
44 >220    string          >\0             of '%s'
45 >200    lelong          >0              (signal %d)
46 #
47 # LILO boot/chain loaders, from Daniel Quinlan <quinlan@yggdrasil.com>
48 # this can be overridden by the DOS executable (COM) entry
49 2       string          LILO            Linux/i386 LILO boot/chain loader
50 #
51 # Linux make config build file, from Ole Aamot <oka@oka.no>
52 # Updated by Ken Sharp
53 28      string          make\ config            Linux make config build file (old)
54 49      search/70       Kernel\ Configuration   Linux make config build file
55
56 #
57 # PSF fonts, from H. Peter Anvin <hpa@yggdrasil.com>
58 # Updated by Adam Buchbinder <adam.buchbinder@gmail.com>
59 # See: https://www.win.tue.nl/~aeb/linux/kbd/font-formats-1.html
60 0       leshort         0x0436          Linux/i386 PC Screen Font v1 data,
61 >2      byte&0x01       0               256 characters,
62 >2      byte&0x01       !0              512 characters,
63 >2      byte&0x02       0               no directory,
64 >2      byte&0x02       !0              Unicode directory,
65 >3      byte            >0              8x%d
66 0       string          \x72\xb5\x4a\x86\x00\x00 Linux/i386 PC Screen Font v2 data,
67 >16     lelong          x               %d characters,
68 >12     lelong&0x01     0               no directory,
69 >12     lelong&0x01     !0              Unicode directory,
70 >28     lelong          x               %d
71 >24     lelong          x               \bx%d
72
73 # Linux swap and hibernate files
74 # Linux kernel: include/linux/swap.h
75 # util-linux: libblkid/src/superblocks/swap.c
76
77 # format v0, unsupported since 2002
78 0xff6   string          SWAP-SPACE      Linux old swap file, 4k page size
79 0x1ff6  string          SWAP-SPACE      Linux old swap file, 8k page size
80 0x3ff6  string          SWAP-SPACE      Linux old swap file, 16k page size
81 0x7ff6  string          SWAP-SPACE      Linux old swap file, 32k page size
82 0xfff6  string          SWAP-SPACE      Linux old swap file, 64k page size
83
84 # format v1, supported since 1998
85 0               name    linux-swap
86 >0x400  lelong          1       little endian, version %u,
87 >>0x404 lelong          x       size %u pages,
88 >>0x408 lelong          x       %u bad pages,
89 >0x400  belong          1       big endian, version %u,
90 >>0x404 belong          x       size %u pages,
91 >>0x408 belong          x       %u bad pages,
92 >0x41c  string          \0      no label,
93 >0x41c  string          >\0     LABEL=%s,
94 >0x40c  ubelong         x       UUID=%08x
95 >0x410  ubeshort        x       \b-%04x
96 >0x412  ubeshort        x       \b-%04x
97 >0x414  ubeshort        x       \b-%04x
98 >0x416  ubelong         x       \b-%08x
99 >0x41a  ubeshort        x       \b%04x
100
101 0xff6   string          SWAPSPACE2      Linux swap file, 4k page size,
102 >0              use                     linux-swap
103 0x1ff6  string          SWAPSPACE2      Linux swap file, 8k page size,
104 >0              use                     linux-swap
105 0x3ff6  string          SWAPSPACE2      Linux swap file, 16k page size,
106 >0              use                     linux-swap
107 0x7ff6  string          SWAPSPACE2      Linux swap file, 32k page size,
108 >0              use                     linux-swap
109 0xfff6  string          SWAPSPACE2      Linux swap file, 64k page size,
110 >0              use                     linux-swap
111
112 0       name    linux-hibernate
113 >0      string  S1SUSPEND       \b, with SWSUSP1 image
114 >0      string  S2SUSPEND       \b, with SWSUSP2 image
115 >0      string  ULSUSPEND       \b, with uswsusp image
116 >0      string  LINHIB0001      \b, with compressed hibernate image
117 >0      string  \xed\xc3\x02\xe9\x98\x56\xe5\x0c        \b, with tuxonice image
118 >0      default x                       \b, with unknown hibernate image
119
120 0xfec   string          SWAPSPACE2      Linux swap file, 4k page size,
121 >0              use                     linux-swap
122 >0xff6  use                     linux-hibernate
123 0x1fec  string          SWAPSPACE2      Linux swap file, 8k page size,
124 >0              use                     linux-swap
125 >0x1ff6 use                     linux-hibernate
126 0x3fec  string          SWAPSPACE2      Linux swap file, 16k page size,
127 >0              use                     linux-swap
128 >0x3ff6 use                     linux-hibernate
129 0x7fec  string          SWAPSPACE2      Linux swap file, 32k page size,
130 >0              use                     linux-swap
131 >0x7ff6 use                     linux-hibernate
132 0xffec  string          SWAPSPACE2      Linux swap file, 64k page size,
133 >0              use                     linux-swap
134 >0xfff6 use                     linux-hibernate
135
136 #
137 # Linux kernel boot images, from Albert Cahalan <acahalan@cs.uml.edu>
138 # and others such as Axel Kohlmeyer <akohlmey@rincewind.chemie.uni-ulm.de>
139 # and Nicolas Lichtmaier <nick@debian.org>
140 # All known start with: b8 c0 07 8e d8 b8 00 90 8e c0 b9 00 01 29 f6 29
141 # Linux kernel boot images (i386 arch) (Wolfram Kleff)
142 # URL: https://www.kernel.org/doc/Documentation/x86/boot.txt
143 514     string          HdrS            Linux kernel
144 !:strength + 55
145 # often no extension like in linux, vmlinuz, bzimage or memdisk but sometimes
146 # Acronis Recovery kernel64.dat and Plop Boot Manager plpbtrom.bin
147 # DamnSmallLinux 1.5 damnsmll.lnx 
148 !:ext   /dat/bin/lnx
149 >510    leshort         0xAA55          x86 boot executable
150 >>518   leshort         >0x1ff
151 >>>529  byte            0               zImage,
152 >>>529  byte            1               bzImage,
153 >>>526  lelong          >0
154 >>>>(526.s+0x200) string        >\0     version %s,
155 >>498   leshort         1               RO-rootFS,
156 >>498   leshort         0               RW-rootFS,
157 >>508   leshort         >0              root_dev %#X,
158 >>502   leshort         >0              swap_dev %#X,
159 >>504   leshort         >0              RAMdisksize %u KB,
160 >>506   leshort         0xFFFF          Normal VGA
161 >>506   leshort         0xFFFE          Extended VGA
162 >>506   leshort         0xFFFD          Prompt for Videomode
163 >>506   leshort         >0              Video mode %d
164 # This also matches new kernels, which were caught above by "HdrS".
165 0               belong  0xb8c0078e      Linux kernel
166 >0x1e3          string  Loading         version 1.3.79 or older
167 >0x1e9          string  Loading         from prehistoric times
168
169 # System.map files - Nicolas Lichtmaier <nick@debian.org>
170 8       search/1        \ A\ _text      Linux kernel symbol map text
171
172 # LSM entries - Nicolas Lichtmaier <nick@debian.org>
173 0       search/1        Begin3  Linux Software Map entry text
174 0       search/1        Begin4  Linux Software Map entry text (new format)
175
176 # From Matt Zimmerman, enhanced for v3 by Matthew Palmer
177 0       belong  0x4f4f4f4d      User-mode Linux COW file
178 >4      belong  <3              \b, version %d
179 >>8     string  >\0             \b, backing file %s
180 >4      belong  >2              \b, version %d
181 >>32    string  >\0             \b, backing file %s
182
183 ############################################################################
184 # Linux kernel versions
185
186 0               string          \xb8\xc0\x07\x8e\xd8\xb8\x00\x90        Linux
187 >497            leshort         0               x86 boot sector
188 >>514           belong          0x8e    of a kernel from the dawn of time!
189 >>514           belong          0x908ed8b4      version 0.99-1.1.42
190 >>514           belong          0x908ed8b8      for memtest86
191
192 >497            leshort         !0              x86 kernel
193 >>504           leshort         >0              RAMdisksize=%u KB
194 >>502           leshort         >0              swap=%#X
195 >>508           leshort         >0              root=%#X
196 >>>498          leshort         1               \b-ro
197 >>>498          leshort         0               \b-rw
198 >>506           leshort         0xFFFF          vga=normal
199 >>506           leshort         0xFFFE          vga=extended
200 >>506           leshort         0xFFFD          vga=ask
201 >>506           leshort         >0              vga=%d
202 >>514           belong          0x908ed881      version 1.1.43-1.1.45
203 >>514           belong          0x15b281cd
204 >>>0xa8e        belong          0x55AA5a5a      version 1.1.46-1.2.13,1.3.0
205 >>>0xa99        belong          0x55AA5a5a      version 1.3.1,2
206 >>>0xaa3        belong          0x55AA5a5a      version 1.3.3-1.3.30
207 >>>0xaa6        belong          0x55AA5a5a      version 1.3.31-1.3.41
208 >>>0xb2b        belong          0x55AA5a5a      version 1.3.42-1.3.45
209 >>>0xaf7        belong          0x55AA5a5a      version 1.3.46-1.3.72
210 >>514           string          HdrS
211 >>>518          leshort         >0x1FF
212 >>>>529         byte            0               \b, zImage
213 >>>>529         byte            1               \b, bzImage
214 >>>>(526.s+0x200) string        >\0             \b, version %s
215
216 # Linux boot sector thefts.
217 0               belong          0xb8c0078e      Linux
218 >0x1e6          belong          0x454c4b53      ELKS Kernel
219 >0x1e6          belong          !0x454c4b53     style boot sector
220
221 ############################################################################
222 # Linux S390 kernel image
223 # Created by: Jan Kaluza <jkaluza@redhat.com>
224 8 string \x02\x00\x00\x18\x60\x00\x00\x50\x02\x00\x00\x68\x60\x00\x00\x50\x40\x40\x40\x40\x40\x40\x40\x40 Linux S390
225 >0x00010000 search/b/4096 \x00\x0a\x00\x00\x8b\xad\xcc\xcc
226 # 64bit
227 >>&0 string \xc1\x00\xef\xe3\xf0\x68\x00\x00 Z10 64bit kernel
228 >>&0 string \xc1\x00\xef\xc3\x00\x00\x00\x00 Z9-109 64bit kernel
229 >>&0 string \xc0\x00\x20\x00\x00\x00\x00\x00 Z990 64bit kernel
230 >>&0 string \x00\x00\x00\x00\x00\x00\x00\x00 Z900 64bit kernel
231 # 32bit
232 >>&0 string \x81\x00\xc8\x80\x00\x00\x00\x00 Z10 32bit kernel
233 >>&0 string \x81\x00\xc8\x80\x00\x00\x00\x00 Z9-109 32bit kernel
234 >>&0 string \x80\x00\x20\x00\x00\x00\x00\x00 Z990 32bit kernel
235 >>&0 string \x80\x00\x00\x00\x00\x00\x00\x00 Z900 32bit kernel
236
237 ############################################################################
238 # Linux ARM compressed kernel image
239 # From: Kevin Cernekee <cernekee@gmail.com>
240 # Update: Joerg Jenderek
241 0x24    lelong  0x016f2818      Linux kernel ARM boot executable zImage
242 # There are three possible situations: LE, BE with LE bootloader and pure BE.
243 # In order to aid telling these apart a new endian flag was added. In order
244 # to support kernels before the flag and BE with LE bootloader was added we'll
245 # do a negative check against the BE variant of the flag when we see a LE magic.
246 >0x30   belong  !0x04030201     (little-endian)
247 # raspian "kernel7.img", Vu+ Ultimo4K "kernel_auto.bin"
248 !:ext   img/bin
249 >0x30   belong  0x04030201      (big-endian)
250 0x24    belong  0x016f2818      Linux kernel ARM boot executable zImage (big-endian)
251
252 ############################################################################
253 # Linux AARCH64 kernel image
254 0x38    lelong  0x644d5241  Linux kernel ARM64 boot executable Image
255 >0x18   lelong  ^1          \b, little-endian
256 >0x18   lelong  &1          \b, big-endian
257 >0x18   lelong  &2          \b, 4K pages
258 >0x18   lelong  &4          \b, 16K pages
259 >0x18   lelong  &6          \b, 32K pages
260
261 ############################################################################
262 # Linux 8086 executable
263 0       lelong&0xFF0000FF 0xC30000E9    Linux-Dev86 executable, headerless
264 >5      string          .
265 >>4     string          >\0             \b, libc version %s
266
267 0       lelong&0xFF00FFFF 0x4000301     Linux-8086 executable
268 >2      byte&0x01       !0              \b, unmapped zero page
269 >2      byte&0x20       0               \b, impure
270 >2      byte&0x20       !0
271 >>2     byte&0x10       !0              \b, A_EXEC
272 >2      byte&0x02       !0              \b, A_PAL
273 >2      byte&0x04       !0              \b, A_NSYM
274 >2      byte&0x08       !0              \b, A_STAND
275 >2      byte&0x40       !0              \b, A_PURE
276 >2      byte&0x80       !0              \b, A_TOVLY
277 >28     long            !0              \b, not stripped
278 >37     string          .
279 >>36    string          >\0             \b, libc version %s
280
281 # 0     lelong&0xFF00FFFF 0x10000301    ld86 I80386 executable
282 # 0     lelong&0xFF00FFFF 0xB000301     ld86 M68K executable
283 # 0     lelong&0xFF00FFFF 0xC000301     ld86 NS16K executable
284 # 0     lelong&0xFF00FFFF 0x17000301    ld86 SPARC executable
285
286 # SYSLINUX boot logo files (from 'ppmtolss16' sources)
287 # https://www.syslinux.org/wiki/index.php/SYSLINUX#Display_graphic_from_filename:
288 # file extension .lss .16
289 0       lelong  =0x1413f33d             SYSLINUX' LSS16 image data
290 # syslinux-4.05/mime/image/x-lss16.xml
291 !:mime image/x-lss16
292 >4      leshort x                       \b, width %d
293 >6      leshort x                       \b, height %d
294
295 0       string  OOOM                    User-Mode-Linux's Copy-On-Write disk image
296 >4      belong  x                       version %d
297
298 # SE Linux policy database
299 # From: Mike Frysinger <vapier@gentoo.org>
300 0       lelong  0xf97cff8c              SE Linux policy
301 >16     lelong  x                       v%d
302 >20     lelong  1                       MLS
303 >24     lelong  x                       %d symbols
304 >28     lelong  x                       %d ocons
305
306 # Linux Logical Volume Manager (LVM)
307 # Emmanuel VARAGNAT <emmanuel.varagnat@guzu.net>
308 #
309 # System ID, UUID and volume group name are 128 bytes long
310 # but they should never be full and initialized with zeros...
311 #
312 # LVM1
313 #
314 0x0     string/b        HM\001          LVM1 (Linux Logical Volume Manager), version 1
315 >0x12c  string/b        >\0             , System ID: %s
316
317 0x0     string/b        HM\002          LVM1 (Linux Logical Volume Manager), version 2
318 >0x12c  string/b        >\0             , System ID: %s
319
320 #  LVM2
321 #
322 # It seems that the label header can be in one the four first sector
323 # of the disk... (from _find_labeller in lib/label/label.c of LVM2)
324 #
325 # 0x200 seems to be the common case
326 0               name    lvm2
327 # display UUID in LVM format + display all 32 bytes (instead of max string length: 31)
328 >0x0          string  >\x2f          \b, UUID: %.6s
329 >0x6          string  >\x2f          \b-%.4s
330 >0xa          string  >\x2f          \b-%.4s
331 >0xe          string  >\x2f          \b-%.4s
332 >0x12         string  >\x2f          \b-%.4s
333 >0x16         string  >\x2f          \b-%.4s
334 >0x1a         string  >\x2f          \b-%.6s
335 >0x20         lequad  x              \b, size: %lld
336
337
338 # read the offset to add to the start of the header, and the header
339 # start in 0x200
340 0x218           string/b  LVM2\ 001      LVM2 PV (Linux Logical Volume Manager)
341 >&(&-12.l-0x20) use     lvm2
342
343 0x018           string/b  LVM2\ 001      LVM2 PV (Linux Logical Volume Manager)
344 >&(&-12.l-0x20) use     lvm2
345
346 0x418           string/b  LVM2\ 001      LVM2 PV (Linux Logical Volume Manager)
347 >&(&-12.l-0x20) use     lvm2
348
349 0x618           string/b  LVM2\ 001      LVM2 PV (Linux Logical Volume Manager)
350 >&(&-12.l-0x20) use     lvm2
351
352 # LVM snapshot
353 # from Jason Farrel
354 0       string  SnAp    LVM Snapshot (CopyOnWrite store)
355 >4      lelong  !0      - valid,
356 >4      lelong  0       - invalid,
357 >8      lelong  x       version %d,
358 >12     lelong  x       chunk_size %d
359
360 # SE Linux policy database
361 0       lelong  0xf97cff8c              SE Linux policy
362 >16     lelong  x                       v%d
363 >20     lelong  1                       MLS
364 >24     lelong  x                       %d symbols
365 >28     lelong  x                       %d ocons
366
367 # Summary: Xen saved domain file
368 # Created by: Radek Vokal <rvokal@redhat.com>
369 0       string          LinuxGuestRecord        Xen saved domain
370 >20     search/256      (name
371 >>&1    string          x                       (name %s)
372
373 # Type: Xen, the virtual machine monitor
374 # From: Radek Vokal <rvokal@redhat.com>
375 0       string          LinuxGuestRecord        Xen saved domain
376 #>2     regex           \(name\ [^)]*\)         %s
377 >20     search/256      (name                   (name
378 >>&1    string          x                       %s...)
379
380 # Systemd journald files
381 # See https://www.freedesktop.org/wiki/Software/systemd/journal-files/.
382 # From: Zbigniew Jedrzejewski-Szmek <zbyszek@in.waw.pl>
383 # Update:       Joerg Jenderek
384 # URL:          https://systemd.io/JOURNAL_FILE_FORMAT/
385 # Reference:    http://mark0.net/download/triddefs_xml.7z/defs/j/journal-sysd.trid.xml
386 # Note:         called "systemd journal" by TrID
387 #               verified by `journalctl --file=user-1000.journal`
388 # check magic signature[8]
389 0       string  LPKSHHRH
390 # check that state is one of known values
391 # STATE_OFFLINE~0 STATE_ONLINE~1 STATE_ARCHIVED~2
392 >16             ubyte&252       0
393 # check that each half of three unique id128s is non-zero
394 # file_id
395 >>24            ubequad         >0
396 >>>32           ubequad         >0
397 # machine_id
398 >>>>40          ubequad         >0
399 >>>>>48         ubequad         >0
400 # boot_id; last writer
401 >>>>>>56        ubequad         >0
402 >>>>>>>64       ubequad         >0      Journal file
403 #!:mime application/octet-stream
404 !:mime application/x-linux-journal
405 # provide more info
406 # head_entry_realtime; contains a POSIX timestamp stored in microseconds
407 >>>>>>>>184     leqdate/1000000 !0      \b, %s
408 >>>>>>>>184     leqdate         0       empty
409 # If a file is closed after writing the state field should be set to STATE_OFFLINE
410 >>>>>>>>16      ubyte           0       \b,
411 # for offline and empty only journal~ extension found
412 >>>>>>>>>184    leqdate         0       offline
413 # https://man7.org/linux/man-pages/man8/systemd-journald.service.8.html
414 # GRR: add char ~ inside parse_ext in ../../src/apprentice.c to avoid in file version 5.44 error like:
415 # Magdir/linux, 463: Warning: EXTENSION type `          journal~' has bad char '~'
416 !:ext           journal~
417 # for offline and non empty often *.journal~ but also user-1001.journal
418 >>>>>>>>>184    leqdate         !0      offline
419 !:ext           journal/journal~
420 # if a file is opened for writing the state field should be set to STATE_ONLINE
421 >>>>>>>>16      ubyte           1       \b,
422 # for online and empty only journal~ extension found
423 >>>>>>>>>184    leqdate         0       online
424 # system@0005febee06e2ff2-f7ea54d10e4346ff.journal~
425 !:ext           journal~
426 # for online and non empty only journal extension found
427 >>>>>>>>>184    leqdate         !0      online
428 # system.journal user-1000.journal
429 !:ext           journal
430 # after a file has been rotated it should be set to STATE_ARCHIVED
431 >>>>>>>>16      ubyte           2       \b, archived
432 !:ext           journal
433 # no *.journal~ found
434 #!:ext          journal/journal~
435 # compatible_flags
436 >>>>>>>>8       ulelong&1       1       \b, sealed
437 # incompatible_flags; COMPRESSED_XZ~1 COMPRESSED_LZ4~2 KEYED_HASH~4 COMPRESSED_ZSTD~8 COMPACT~16
438 #>>>>>>>>12     ulelong         x       FLAGS=%#x
439 >>>>>>>>12      ulelong&1       1       \b, compressed
440 >>>>>>>>12      ulelong&2       !0      \b, compressed lz4
441 >>>>>>>>12      ulelong&4       !0      \b, keyed hash siphash24
442 >>>>>>>>12      ulelong&8       !0      \b, compressed zstd
443 >>>>>>>>12      ulelong&16      !0      \b, compact
444 # uint8_t reserved[7]; apparently nil
445 #>>17           long            !0      \b, reserved %#8.8x
446 # seqnum_id; like: 0 e623691afec94b5aa968ae2d726c49cc f98b2af481924b29 8d6816ca3639edc6
447 #>>>>>>>>72     ubequad         x       \b, seqnum_id %#16.16llx
448 #>>>>>>>>80     ubequad         x       b%16.16llx
449 # header_size like: 100h
450 >>>>>>>>88      ulequad         !0x100h \b, header size %#llx
451 # arena_size  like: 0 7fff00h ffff00h 17fff00h
452 #>>>>>>>>96     ulequad         >0      \b, arena size %#llx
453 # data_hash_table_offset like: 0 15f0h 15f0h
454 #>>>>>>>>104    ulequad         >0      \b, hash table offset %#llx
455 # data_hash_table_size like: 0 38e380h
456 #>>>>>>>>112    ulequad         >0      \b, hash table size %#llx
457 # field_hash_table_offset like: 0 110h
458 #>>>>>>>>120    ulequad         >0      \b, field hash table offset %#llx
459 # field_hash_table_size like: 0 14d0h
460 #>>>>>>>>128    ulequad         >0      \b, field hash table size %#llx
461 # tail_object_offset like: 0 43edd8h 511278h c68968h d487d0h efaa98h
462 #>>>>>>>>136    ulequad         >0      \b, tail object offset %#llx
463 # n_objects like: 0 1032h 5a2eh 92bdh a8b5h aa75h 112adh 40c23h 4714eh
464 #>>>>>>>>144    ulequad         >0      \b, objects %#llx
465 # n_entries like: 0 3aeh 235ah 2dc4h 3125h 16129h 187a1h
466 >>>>>>>>152     ulequad         >0      \b, entries %#llx
467 # tail_entry_seqnum like: 0 1988h 16249h 24c12h 24c12h 41e64h 9fefdh
468 #>>>>>>>>160    ulequad         >0      \b, tail entry seqnum %#llx
469 # head_entry_seqnum like: 0 1h 15dbh 6552h 213bfh 213bfh 3e672h 9a28ah
470 #>>>>>>>>168    ulequad         >0      \b, head entry seqnum %#llx
471 # entry_array_offset like: 0 390058h 3909d8h 3909e0h
472 #>>>>>>>>176    ulequad         >0      \b, entry array offset %#llx
473
474 # BCache backing and cache devices
475 # From: Gabriel de Perthuis <g2p.code@gmail.com>
476 0x1008          lequad          8
477 >0x1018         string          \xc6\x85\x73\xf6\x4e\x1a\x45\xca\x82\x65\xf5\x7f\x48\xba\x6d\x81        BCache
478 >>0x1010        ulequad         0       cache device
479 >>0x1010        ulequad         1       backing device
480 >>0x1010        ulequad         3       cache device
481 >>0x1010        ulequad         4       backing device
482 >>0x1048        string          >0      \b, label "%.32s"
483 >>0x1028        ubelong         x       \b, uuid %08x
484 >>0x102c        ubeshort        x       \b-%04x
485 >>0x102e        ubeshort        x       \b-%04x
486 >>0x1030        ubeshort        x       \b-%04x
487 >>0x1032        ubelong         x       \b-%08x
488 >>0x1036        ubeshort        x       \b%04x
489 >>0x1038        ubelong         x       \b, set uuid %08x
490 >>0x103c        ubeshort        x       \b-%04x
491 >>0x103e        ubeshort        x       \b-%04x
492 >>0x1040        ubeshort        x       \b-%04x
493 >>0x1042        ubelong         x       \b-%08x
494 >>0x1046        ubeshort        x       \b%04x
495
496 # Linux device tree:
497 # File format description can be found in the Linux kernel sources at
498 # Documentation/devicetree/booting-without-of.txt
499 # From Christoph Biedl
500 0               belong          0xd00dfeed
501 # structure must be within blob, strings are omitted to handle devicetrees > 1M
502 >&(8.L)         byte            x
503 >>20            belong          >1      Device Tree Blob version %d
504 >>>4            belong          x       \b, size=%d
505 >>>20           belong          >1
506 >>>>28          belong          x       \b, boot CPU=%d
507 >>>20           belong          >2
508 >>>>32          belong          x       \b, string block size=%d
509 >>>20           belong          >16
510 >>>>36          belong          x       \b, DT structure block size=%d
511
512 # glibc locale archive as defined in glibc locale/locarchive.h
513 0               lelong          0xde020109      locale archive
514 >24             lelong          x               %d strings
515
516 # Linux Software RAID (mdadm)
517 # Russell Coker <russell@coker.com.au>
518 0       name    linuxraid
519 >16     belong  x               UUID=%8x:
520 >20     belong  x               \b%8x:
521 >24     belong  x               \b%8x:
522 >28     belong  x               \b%8x
523 >32     string  x               name=%s
524 >72     lelong  x               level=%d
525 >92     lelong  x               disks=%d
526
527 4096    lelong  0xa92b4efc      Linux Software RAID
528 >4100   lelong  x               version 1.2 (%d)
529 >4096   use     linuxraid
530
531 0       lelong  0xa92b4efc      Linux Software RAID
532 >4      lelong  x               version 1.1 (%d)
533 >0      use     linuxraid
534
535 # Summary:     Database file for mlocate
536 # Description: A database file as used by mlocate, a fast implementation
537 #              of locate/updatedb. It uses merging to reuse the existing
538 #              database and avoid rereading most of the filesystem. It's
539 #              the default version of locate on Arch Linux (and others).
540 # File path:   /var/lib/mlocate/mlocate.db by default (but configurable)
541 # Site:        https://fedorahosted.org/mlocate/
542 # Format docs: https://linux.die.net/man/5/mlocate.db
543 # Type: mlocate database file
544 # URL:  https://fedorahosted.org/mlocate/
545 # From: Wander Nauta <info@wandernauta.nl>
546 0               string          \0mlocate       mlocate database
547 >12             byte            x               \b, version %d
548 >13             byte            1               \b, require visibility
549 >16             string          x               \b, root %s
550
551 # Dump files for iproute2 tool. Generated by the "ip r|a save" command. URL:
552 # https://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
553 # From: Pavel Emelyanov <xemul@parallels.com>
554 0               lelong          0x45311224      iproute2 routes dump
555 0               lelong          0x47361222      iproute2 addresses dump
556
557 # Image and service files for CRIU tool.
558 # URL: https://criu.org
559 # From: Pavel Emelyanov <xemul@parallels.com>
560 0               lelong          0x54564319      CRIU image file v1.1
561 0               lelong          0x55105940      CRIU service file
562 0               lelong          0x58313116      CRIU inventory
563
564 # Kdump compressed dump files
565 # https://github.com/makedumpfile/makedumpfile/blob/master/IMPLEMENTATION
566
567 0               string          KDUMP\x20\x20\x20       Kdump compressed dump
568 >0              use             kdump-compressed-dump
569
570 0               name            kdump-compressed-dump
571 >8              long            x               v%d
572 >12             string          >\0             \b, system %s
573 >77             string          >\0             \b, node %s
574 >142            string          >\0             \b, release %s
575 >207            string          >\0             \b, version %s
576 >272            string          >\0             \b, machine %s
577 >337            string          >\0             \b, domain %s
578
579 # Flattened format
580 0               string          makedumpfile
581 >16             bequad          1
582 >>0x1010        string          KDUMP\x20\x20\x20       Flattened kdump compressed dump
583 >>>0x1010       use             kdump-compressed-dump
584
585 # Device Tree files
586 0               search/1024     /dts-v1/        Device Tree File (v1)
587 # beat c code
588 !:strength +14
589
590
591 # e2fsck undo file
592 # David Gilman <davidgilman1@gmail.com>
593 0               string          E2UNDO02        e2fsck undo file, version 2
594 >44             lelong          x               \b, undo file is
595 >>44            lelong&1        0               not finished
596 >>44            lelong&1        1               finished
597 >48             lelong          x               \b, undo file features:
598 >>48            lelong&1        0               lacks filesystem offset
599 >>48            lelong&1        1               has filesystem offset
600 >>>64           lequad          x               at %#llx
601
602 # ansible vault (does not really belong here)
603 0               string          $ANSIBLE_VAULT; Ansible Vault
604 >&0             regex           [0-9]+\\.[0-9]+ \b, version %s
605 >>&0            string          ;
606 >>>&0           regex           [A-Z0-9]+       \b, encryption %s
607
608 # From:         Joerg Jenderek
609 # URL:          https://www.gnu.org/software/grub
610 # Reference:    https://ftp.gnu.org/gnu/grub/grub-2.06.tar.gz
611 #               grub-2.06/include/grub/keyboard_layouts.h 
612 #               grub-2.06/grub-core/commands/keylayouts.c
613 # GRUB_KEYBOARD_LAYOUTS_FILEMAGIC
614 0       string          GRUBLAYO                GRUB Keyboard
615 !:mime                  application/x-grub-keyboard
616 !:ext                   gkb
617 # GRUB_KEYBOARD_LAYOUTS_VERSION like: 10
618 >8      ulelong         !10                     \b, version %u
619 # 4 grub_uint32_t grub_keyboard_layout[160]
620 # for normal french keyboard this is letter a
621 >92     ubyte           !0x71
622 >>92    ubyte           >0x40                   \b, english q is %c
623 #>732   ubyte           x                       \b, english Q is %c
624 # for normal german keyboard this is letter z
625 >124    ubyte           !0x79
626 >>124   ubyte           >0x40                   \b, english y is %c
627 #>764   ubyte           x                       \b, english Y is %c