polyfile-weave 0.5.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of polyfile-weave might be problematic. Click here for more details.

Files changed (585) hide show
  1. polyfile/__init__.py +15 -0
  2. polyfile/__main__.py +394 -0
  3. polyfile/arithmetic.py +27 -0
  4. polyfile/ast.py +114 -0
  5. polyfile/debugger.py +1039 -0
  6. polyfile/expressions.py +346 -0
  7. polyfile/fileutils.py +343 -0
  8. polyfile/html.py +135 -0
  9. polyfile/http/__init__.py +1 -0
  10. polyfile/http/defacto.py +37 -0
  11. polyfile/http/deprecated.py +51 -0
  12. polyfile/http/experimental.py +67 -0
  13. polyfile/http/http_11.py +548 -0
  14. polyfile/http/matcher.py +37 -0
  15. polyfile/http/structured_headers.py +48 -0
  16. polyfile/iterators.py +72 -0
  17. polyfile/jpeg.py +24 -0
  18. polyfile/kaitai/__init__.py +0 -0
  19. polyfile/kaitai/compiler.py +156 -0
  20. polyfile/kaitai/parser.py +312 -0
  21. polyfile/kaitai/parsers/__init__.py +0 -0
  22. polyfile/kaitai/parsers/aix_utmp.py +116 -0
  23. polyfile/kaitai/parsers/allegro_dat.py +367 -0
  24. polyfile/kaitai/parsers/andes_firmware.py +64 -0
  25. polyfile/kaitai/parsers/android_bootldr_asus.py +105 -0
  26. polyfile/kaitai/parsers/android_bootldr_huawei.py +181 -0
  27. polyfile/kaitai/parsers/android_bootldr_qcom.py +217 -0
  28. polyfile/kaitai/parsers/android_dto.py +138 -0
  29. polyfile/kaitai/parsers/android_img.py +319 -0
  30. polyfile/kaitai/parsers/android_nanoapp_header.py +83 -0
  31. polyfile/kaitai/parsers/android_opengl_shaders_cache.py +151 -0
  32. polyfile/kaitai/parsers/android_sparse.py +237 -0
  33. polyfile/kaitai/parsers/android_super.py +401 -0
  34. polyfile/kaitai/parsers/apm_partition_table.py +196 -0
  35. polyfile/kaitai/parsers/apple_single_double.py +180 -0
  36. polyfile/kaitai/parsers/asn1_der.py +235 -0
  37. polyfile/kaitai/parsers/au.py +138 -0
  38. polyfile/kaitai/parsers/avantes_roh60.py +112 -0
  39. polyfile/kaitai/parsers/avi.py +296 -0
  40. polyfile/kaitai/parsers/bcd.py +111 -0
  41. polyfile/kaitai/parsers/bitcoin_transaction.py +210 -0
  42. polyfile/kaitai/parsers/blender_blend.py +334 -0
  43. polyfile/kaitai/parsers/bmp.py +780 -0
  44. polyfile/kaitai/parsers/bson.py +411 -0
  45. polyfile/kaitai/parsers/btrfs_stream.py +318 -0
  46. polyfile/kaitai/parsers/bytes_with_io.py +27 -0
  47. polyfile/kaitai/parsers/chrome_pak.py +194 -0
  48. polyfile/kaitai/parsers/code_6502.py +456 -0
  49. polyfile/kaitai/parsers/compressed_resource.py +217 -0
  50. polyfile/kaitai/parsers/cpio_old_le.py +154 -0
  51. polyfile/kaitai/parsers/cramfs.py +344 -0
  52. polyfile/kaitai/parsers/creative_voice_file.py +342 -0
  53. polyfile/kaitai/parsers/dbf.py +274 -0
  54. polyfile/kaitai/parsers/dcmp_0.py +664 -0
  55. polyfile/kaitai/parsers/dcmp_1.py +422 -0
  56. polyfile/kaitai/parsers/dcmp_2.py +312 -0
  57. polyfile/kaitai/parsers/dcmp_variable_length_integer.py +66 -0
  58. polyfile/kaitai/parsers/dex.py +1086 -0
  59. polyfile/kaitai/parsers/dicom.py +4370 -0
  60. polyfile/kaitai/parsers/dime_message.py +201 -0
  61. polyfile/kaitai/parsers/dns_packet.py +569 -0
  62. polyfile/kaitai/parsers/doom_wad.py +654 -0
  63. polyfile/kaitai/parsers/dos_datetime.py +191 -0
  64. polyfile/kaitai/parsers/dos_mz.py +172 -0
  65. polyfile/kaitai/parsers/ds_store.py +513 -0
  66. polyfile/kaitai/parsers/dtb.py +310 -0
  67. polyfile/kaitai/parsers/dune_2_pak.py +126 -0
  68. polyfile/kaitai/parsers/edid.py +472 -0
  69. polyfile/kaitai/parsers/efivar_signature_list.py +331 -0
  70. polyfile/kaitai/parsers/elf.py +2482 -0
  71. polyfile/kaitai/parsers/ethernet_frame.py +114 -0
  72. polyfile/kaitai/parsers/exif.py +723 -0
  73. polyfile/kaitai/parsers/ext2.py +537 -0
  74. polyfile/kaitai/parsers/fallout2_dat.py +187 -0
  75. polyfile/kaitai/parsers/fallout_dat.py +156 -0
  76. polyfile/kaitai/parsers/fasttracker_xm_module.py +558 -0
  77. polyfile/kaitai/parsers/ftl_dat.py +90 -0
  78. polyfile/kaitai/parsers/genmidi_op2.py +161 -0
  79. polyfile/kaitai/parsers/gettext_mo.py +541 -0
  80. polyfile/kaitai/parsers/gif.py +492 -0
  81. polyfile/kaitai/parsers/gimp_brush.py +244 -0
  82. polyfile/kaitai/parsers/glibc_utmp.py +114 -0
  83. polyfile/kaitai/parsers/gltf_binary.py +132 -0
  84. polyfile/kaitai/parsers/google_protobuf.py +151 -0
  85. polyfile/kaitai/parsers/gpt_partition_table.py +175 -0
  86. polyfile/kaitai/parsers/gran_turismo_vol.py +140 -0
  87. polyfile/kaitai/parsers/grub2_font.py +337 -0
  88. polyfile/kaitai/parsers/gzip.py +232 -0
  89. polyfile/kaitai/parsers/hashcat_restore.py +60 -0
  90. polyfile/kaitai/parsers/hccap.py +111 -0
  91. polyfile/kaitai/parsers/hccapx.py +103 -0
  92. polyfile/kaitai/parsers/heaps_pak.py +177 -0
  93. polyfile/kaitai/parsers/heroes_of_might_and_magic_agg.py +116 -0
  94. polyfile/kaitai/parsers/heroes_of_might_and_magic_bmp.py +34 -0
  95. polyfile/kaitai/parsers/icmp_packet.py +136 -0
  96. polyfile/kaitai/parsers/ico.py +129 -0
  97. polyfile/kaitai/parsers/id3v1_1.py +220 -0
  98. polyfile/kaitai/parsers/id3v2_3.py +324 -0
  99. polyfile/kaitai/parsers/id3v2_4.py +423 -0
  100. polyfile/kaitai/parsers/ines.py +282 -0
  101. polyfile/kaitai/parsers/ipv4_packet.py +158 -0
  102. polyfile/kaitai/parsers/ipv6_packet.py +55 -0
  103. polyfile/kaitai/parsers/iso9660.py +544 -0
  104. polyfile/kaitai/parsers/java_class.py +1113 -0
  105. polyfile/kaitai/parsers/jpeg.py +361 -0
  106. polyfile/kaitai/parsers/luks.py +149 -0
  107. polyfile/kaitai/parsers/lzh.py +165 -0
  108. polyfile/kaitai/parsers/mac_os_resource_snd.py +493 -0
  109. polyfile/kaitai/parsers/mach_o.py +3033 -0
  110. polyfile/kaitai/parsers/mach_o_fat.py +92 -0
  111. polyfile/kaitai/parsers/magicavoxel_vox.py +391 -0
  112. polyfile/kaitai/parsers/manifest.json +1 -0
  113. polyfile/kaitai/parsers/mbr_partition_table.py +119 -0
  114. polyfile/kaitai/parsers/mcap.py +1015 -0
  115. polyfile/kaitai/parsers/microsoft_cfb.py +293 -0
  116. polyfile/kaitai/parsers/microsoft_network_monitor_v2.py +309 -0
  117. polyfile/kaitai/parsers/microsoft_pe.py +765 -0
  118. polyfile/kaitai/parsers/mifare_classic.py +706 -0
  119. polyfile/kaitai/parsers/minecraft_nbt.py +449 -0
  120. polyfile/kaitai/parsers/monomakh_sapr_chg.py +69 -0
  121. polyfile/kaitai/parsers/mozilla_mar.py +239 -0
  122. polyfile/kaitai/parsers/mp4.py +333 -0
  123. polyfile/kaitai/parsers/msgpack.py +467 -0
  124. polyfile/kaitai/parsers/nitf.py +1189 -0
  125. polyfile/kaitai/parsers/nt_mdt_pal.py +155 -0
  126. polyfile/kaitai/parsers/ogg.py +118 -0
  127. polyfile/kaitai/parsers/openpgp_message.py +993 -0
  128. polyfile/kaitai/parsers/packet_ppi.py +515 -0
  129. polyfile/kaitai/parsers/pcap.py +344 -0
  130. polyfile/kaitai/parsers/pcf_font.py +506 -0
  131. polyfile/kaitai/parsers/pcx.py +195 -0
  132. polyfile/kaitai/parsers/pcx_dcx.py +79 -0
  133. polyfile/kaitai/parsers/phar_without_stub.py +399 -0
  134. polyfile/kaitai/parsers/php_serialized_value.py +505 -0
  135. polyfile/kaitai/parsers/png.py +721 -0
  136. polyfile/kaitai/parsers/protocol_body.py +260 -0
  137. polyfile/kaitai/parsers/psx_tim.py +104 -0
  138. polyfile/kaitai/parsers/python_pickle.py +718 -0
  139. polyfile/kaitai/parsers/python_pyc_27.py +510 -0
  140. polyfile/kaitai/parsers/quake_mdl.py +441 -0
  141. polyfile/kaitai/parsers/quake_pak.py +112 -0
  142. polyfile/kaitai/parsers/quicktime_mov.py +634 -0
  143. polyfile/kaitai/parsers/rar.py +265 -0
  144. polyfile/kaitai/parsers/regf.py +569 -0
  145. polyfile/kaitai/parsers/renderware_binary_stream.py +877 -0
  146. polyfile/kaitai/parsers/resource_fork.py +611 -0
  147. polyfile/kaitai/parsers/respack.py +57 -0
  148. polyfile/kaitai/parsers/riff.py +409 -0
  149. polyfile/kaitai/parsers/rpm.py +964 -0
  150. polyfile/kaitai/parsers/rtcp_payload.py +579 -0
  151. polyfile/kaitai/parsers/rtp_packet.py +150 -0
  152. polyfile/kaitai/parsers/rtpdump.py +115 -0
  153. polyfile/kaitai/parsers/ruby_marshal.py +423 -0
  154. polyfile/kaitai/parsers/s3m.py +493 -0
  155. polyfile/kaitai/parsers/saints_row_2_vpp_pc.py +254 -0
  156. polyfile/kaitai/parsers/shapefile_index.py +174 -0
  157. polyfile/kaitai/parsers/shapefile_main.py +893 -0
  158. polyfile/kaitai/parsers/some_ip.py +209 -0
  159. polyfile/kaitai/parsers/some_ip_container.py +37 -0
  160. polyfile/kaitai/parsers/some_ip_sd.py +86 -0
  161. polyfile/kaitai/parsers/some_ip_sd_entries.py +160 -0
  162. polyfile/kaitai/parsers/some_ip_sd_options.py +374 -0
  163. polyfile/kaitai/parsers/specpr.py +404 -0
  164. polyfile/kaitai/parsers/sqlite3.py +472 -0
  165. polyfile/kaitai/parsers/ssh_public_key.py +252 -0
  166. polyfile/kaitai/parsers/standard_midi_file.py +390 -0
  167. polyfile/kaitai/parsers/stl.py +111 -0
  168. polyfile/kaitai/parsers/sudoers_ts.py +201 -0
  169. polyfile/kaitai/parsers/swf.py +406 -0
  170. polyfile/kaitai/parsers/systemd_journal.py +361 -0
  171. polyfile/kaitai/parsers/tcp_segment.py +57 -0
  172. polyfile/kaitai/parsers/tga.py +213 -0
  173. polyfile/kaitai/parsers/tls_client_hello.py +293 -0
  174. polyfile/kaitai/parsers/tr_dos_image.py +322 -0
  175. polyfile/kaitai/parsers/tsm.py +198 -0
  176. polyfile/kaitai/parsers/ttf.py +1847 -0
  177. polyfile/kaitai/parsers/udp_datagram.py +42 -0
  178. polyfile/kaitai/parsers/uefi_te.py +236 -0
  179. polyfile/kaitai/parsers/uimage.py +198 -0
  180. polyfile/kaitai/parsers/utf8_string.py +137 -0
  181. polyfile/kaitai/parsers/vfat.py +410 -0
  182. polyfile/kaitai/parsers/vlq_base128_be.py +104 -0
  183. polyfile/kaitai/parsers/vlq_base128_le.py +129 -0
  184. polyfile/kaitai/parsers/vmware_vmdk.py +167 -0
  185. polyfile/kaitai/parsers/vp8_ivf.py +112 -0
  186. polyfile/kaitai/parsers/warcraft_2_pud.py +423 -0
  187. polyfile/kaitai/parsers/wav.py +1014 -0
  188. polyfile/kaitai/parsers/websocket.py +167 -0
  189. polyfile/kaitai/parsers/windows_evt_log.py +304 -0
  190. polyfile/kaitai/parsers/windows_lnk_file.py +467 -0
  191. polyfile/kaitai/parsers/windows_minidump.py +575 -0
  192. polyfile/kaitai/parsers/windows_resource_file.py +243 -0
  193. polyfile/kaitai/parsers/windows_shell_items.py +190 -0
  194. polyfile/kaitai/parsers/windows_systemtime.py +52 -0
  195. polyfile/kaitai/parsers/wmf.py +502 -0
  196. polyfile/kaitai/parsers/xar.py +181 -0
  197. polyfile/kaitai/parsers/xwd.py +189 -0
  198. polyfile/kaitai/parsers/zip.py +685 -0
  199. polyfile/kaitai/parsers/zisofs.py +158 -0
  200. polyfile/kaitai/parsers/zx_spectrum_tap.py +184 -0
  201. polyfile/kaitaimatcher.py +113 -0
  202. polyfile/languagematcher.py +217 -0
  203. polyfile/logger.py +135 -0
  204. polyfile/magic.py +2983 -0
  205. polyfile/magic_defs/COPYING +29 -0
  206. polyfile/magic_defs/__init__.py +0 -0
  207. polyfile/magic_defs/acorn +102 -0
  208. polyfile/magic_defs/adi +13 -0
  209. polyfile/magic_defs/adventure +122 -0
  210. polyfile/magic_defs/aes +29 -0
  211. polyfile/magic_defs/algol68 +35 -0
  212. polyfile/magic_defs/allegro +9 -0
  213. polyfile/magic_defs/alliant +18 -0
  214. polyfile/magic_defs/alpha +32 -0
  215. polyfile/magic_defs/amanda +12 -0
  216. polyfile/magic_defs/amigaos +218 -0
  217. polyfile/magic_defs/android +259 -0
  218. polyfile/magic_defs/animation +1197 -0
  219. polyfile/magic_defs/aout +46 -0
  220. polyfile/magic_defs/apache +28 -0
  221. polyfile/magic_defs/apl +7 -0
  222. polyfile/magic_defs/apple +773 -0
  223. polyfile/magic_defs/application +7 -0
  224. polyfile/magic_defs/applix +13 -0
  225. polyfile/magic_defs/apt +52 -0
  226. polyfile/magic_defs/archive +2586 -0
  227. polyfile/magic_defs/aria +38 -0
  228. polyfile/magic_defs/arm +50 -0
  229. polyfile/magic_defs/asf +132 -0
  230. polyfile/magic_defs/assembler +18 -0
  231. polyfile/magic_defs/asterix +18 -0
  232. polyfile/magic_defs/att3b +41 -0
  233. polyfile/magic_defs/audio +1291 -0
  234. polyfile/magic_defs/avm +33 -0
  235. polyfile/magic_defs/basis +18 -0
  236. polyfile/magic_defs/beetle +7 -0
  237. polyfile/magic_defs/ber +65 -0
  238. polyfile/magic_defs/bflt +14 -0
  239. polyfile/magic_defs/bhl +10 -0
  240. polyfile/magic_defs/bioinformatics +178 -0
  241. polyfile/magic_defs/biosig +154 -0
  242. polyfile/magic_defs/blackberry +8 -0
  243. polyfile/magic_defs/blcr +25 -0
  244. polyfile/magic_defs/blender +50 -0
  245. polyfile/magic_defs/blit +24 -0
  246. polyfile/magic_defs/bm +10 -0
  247. polyfile/magic_defs/bout +11 -0
  248. polyfile/magic_defs/bsdi +33 -0
  249. polyfile/magic_defs/bsi +10 -0
  250. polyfile/magic_defs/btsnoop +13 -0
  251. polyfile/magic_defs/burp +7 -0
  252. polyfile/magic_defs/bytecode +41 -0
  253. polyfile/magic_defs/c-lang +110 -0
  254. polyfile/magic_defs/c64 +531 -0
  255. polyfile/magic_defs/cad +437 -0
  256. polyfile/magic_defs/cafebabe +107 -0
  257. polyfile/magic_defs/cbor +21 -0
  258. polyfile/magic_defs/ccf +14 -0
  259. polyfile/magic_defs/cddb +12 -0
  260. polyfile/magic_defs/chord +15 -0
  261. polyfile/magic_defs/cisco +12 -0
  262. polyfile/magic_defs/citrus +12 -0
  263. polyfile/magic_defs/clarion +27 -0
  264. polyfile/magic_defs/claris +48 -0
  265. polyfile/magic_defs/clipper +65 -0
  266. polyfile/magic_defs/clojure +30 -0
  267. polyfile/magic_defs/coff +98 -0
  268. polyfile/magic_defs/commands +201 -0
  269. polyfile/magic_defs/communications +22 -0
  270. polyfile/magic_defs/compress +461 -0
  271. polyfile/magic_defs/console +1213 -0
  272. polyfile/magic_defs/convex +69 -0
  273. polyfile/magic_defs/coverage +91 -0
  274. polyfile/magic_defs/cracklib +14 -0
  275. polyfile/magic_defs/crypto +31 -0
  276. polyfile/magic_defs/csv +8 -0
  277. polyfile/magic_defs/ctags +6 -0
  278. polyfile/magic_defs/ctf +23 -0
  279. polyfile/magic_defs/cubemap +8 -0
  280. polyfile/magic_defs/cups +56 -0
  281. polyfile/magic_defs/dact +11 -0
  282. polyfile/magic_defs/database +886 -0
  283. polyfile/magic_defs/dataone +47 -0
  284. polyfile/magic_defs/dbpf +15 -0
  285. polyfile/magic_defs/der +146 -0
  286. polyfile/magic_defs/diamond +12 -0
  287. polyfile/magic_defs/dif +33 -0
  288. polyfile/magic_defs/diff +41 -0
  289. polyfile/magic_defs/digital +59 -0
  290. polyfile/magic_defs/dolby +69 -0
  291. polyfile/magic_defs/dsf +25 -0
  292. polyfile/magic_defs/dump +96 -0
  293. polyfile/magic_defs/dwarfs +45 -0
  294. polyfile/magic_defs/dyadic +61 -0
  295. polyfile/magic_defs/ebml +8 -0
  296. polyfile/magic_defs/edid +11 -0
  297. polyfile/magic_defs/editors +43 -0
  298. polyfile/magic_defs/efi +15 -0
  299. polyfile/magic_defs/elf +379 -0
  300. polyfile/magic_defs/encore +22 -0
  301. polyfile/magic_defs/epoc +62 -0
  302. polyfile/magic_defs/erlang +21 -0
  303. polyfile/magic_defs/espressif +57 -0
  304. polyfile/magic_defs/esri +28 -0
  305. polyfile/magic_defs/etf +33 -0
  306. polyfile/magic_defs/fcs +9 -0
  307. polyfile/magic_defs/filesystems +2694 -0
  308. polyfile/magic_defs/finger +16 -0
  309. polyfile/magic_defs/firmware +133 -0
  310. polyfile/magic_defs/flash +62 -0
  311. polyfile/magic_defs/flif +36 -0
  312. polyfile/magic_defs/fonts +449 -0
  313. polyfile/magic_defs/forth +82 -0
  314. polyfile/magic_defs/fortran +9 -0
  315. polyfile/magic_defs/frame +62 -0
  316. polyfile/magic_defs/freebsd +164 -0
  317. polyfile/magic_defs/fsav +128 -0
  318. polyfile/magic_defs/fusecompress +12 -0
  319. polyfile/magic_defs/games +696 -0
  320. polyfile/magic_defs/gcc +17 -0
  321. polyfile/magic_defs/gconv +10 -0
  322. polyfile/magic_defs/gentoo +85 -0
  323. polyfile/magic_defs/geo +166 -0
  324. polyfile/magic_defs/geos +20 -0
  325. polyfile/magic_defs/gimp +77 -0
  326. polyfile/magic_defs/git +13 -0
  327. polyfile/magic_defs/glibc +21 -0
  328. polyfile/magic_defs/gnome +59 -0
  329. polyfile/magic_defs/gnu +173 -0
  330. polyfile/magic_defs/gnumeric +8 -0
  331. polyfile/magic_defs/gpt +240 -0
  332. polyfile/magic_defs/gpu +28 -0
  333. polyfile/magic_defs/grace +21 -0
  334. polyfile/magic_defs/graphviz +12 -0
  335. polyfile/magic_defs/gringotts +48 -0
  336. polyfile/magic_defs/guile +13 -0
  337. polyfile/magic_defs/hardware +12 -0
  338. polyfile/magic_defs/hitachi-sh +30 -0
  339. polyfile/magic_defs/hp +433 -0
  340. polyfile/magic_defs/human68k +26 -0
  341. polyfile/magic_defs/ibm370 +52 -0
  342. polyfile/magic_defs/ibm6000 +35 -0
  343. polyfile/magic_defs/icc +214 -0
  344. polyfile/magic_defs/iff +80 -0
  345. polyfile/magic_defs/images +4210 -0
  346. polyfile/magic_defs/inform +9 -0
  347. polyfile/magic_defs/intel +310 -0
  348. polyfile/magic_defs/interleaf +9 -0
  349. polyfile/magic_defs/island +10 -0
  350. polyfile/magic_defs/ispell +63 -0
  351. polyfile/magic_defs/isz +15 -0
  352. polyfile/magic_defs/java +52 -0
  353. polyfile/magic_defs/javascript +171 -0
  354. polyfile/magic_defs/jpeg +252 -0
  355. polyfile/magic_defs/json +8 -0
  356. polyfile/magic_defs/karma +9 -0
  357. polyfile/magic_defs/kde +11 -0
  358. polyfile/magic_defs/keepass +20 -0
  359. polyfile/magic_defs/kerberos +45 -0
  360. polyfile/magic_defs/kicad +85 -0
  361. polyfile/magic_defs/kml +34 -0
  362. polyfile/magic_defs/lammps +64 -0
  363. polyfile/magic_defs/lecter +6 -0
  364. polyfile/magic_defs/lex +12 -0
  365. polyfile/magic_defs/lif +50 -0
  366. polyfile/magic_defs/linux +557 -0
  367. polyfile/magic_defs/lisp +78 -0
  368. polyfile/magic_defs/llvm +22 -0
  369. polyfile/magic_defs/locoscript +12 -0
  370. polyfile/magic_defs/lua +31 -0
  371. polyfile/magic_defs/luks +126 -0
  372. polyfile/magic_defs/m4 +11 -0
  373. polyfile/magic_defs/mach +303 -0
  374. polyfile/magic_defs/macintosh +505 -0
  375. polyfile/magic_defs/macos +7 -0
  376. polyfile/magic_defs/magic +10 -0
  377. polyfile/magic_defs/magic.mgc +0 -0
  378. polyfile/magic_defs/mail.news +132 -0
  379. polyfile/magic_defs/make +21 -0
  380. polyfile/magic_defs/map +413 -0
  381. polyfile/magic_defs/maple +109 -0
  382. polyfile/magic_defs/marc21 +30 -0
  383. polyfile/magic_defs/mathcad +8 -0
  384. polyfile/magic_defs/mathematica +188 -0
  385. polyfile/magic_defs/matroska +17 -0
  386. polyfile/magic_defs/mcrypt +52 -0
  387. polyfile/magic_defs/measure +44 -0
  388. polyfile/magic_defs/mercurial +13 -0
  389. polyfile/magic_defs/metastore +8 -0
  390. polyfile/magic_defs/meteorological +53 -0
  391. polyfile/magic_defs/microfocus +21 -0
  392. polyfile/magic_defs/mime +9 -0
  393. polyfile/magic_defs/mips +120 -0
  394. polyfile/magic_defs/mirage +8 -0
  395. polyfile/magic_defs/misctools +140 -0
  396. polyfile/magic_defs/mkid +11 -0
  397. polyfile/magic_defs/mlssa +8 -0
  398. polyfile/magic_defs/mmdf +6 -0
  399. polyfile/magic_defs/modem +92 -0
  400. polyfile/magic_defs/modulefile +9 -0
  401. polyfile/magic_defs/motorola +71 -0
  402. polyfile/magic_defs/mozilla +37 -0
  403. polyfile/magic_defs/msdos +2304 -0
  404. polyfile/magic_defs/msooxml +68 -0
  405. polyfile/magic_defs/msvc +222 -0
  406. polyfile/magic_defs/msx +309 -0
  407. polyfile/magic_defs/mup +24 -0
  408. polyfile/magic_defs/music +17 -0
  409. polyfile/magic_defs/nasa +7 -0
  410. polyfile/magic_defs/natinst +24 -0
  411. polyfile/magic_defs/ncr +49 -0
  412. polyfile/magic_defs/neko +12 -0
  413. polyfile/magic_defs/netbsd +251 -0
  414. polyfile/magic_defs/netscape +26 -0
  415. polyfile/magic_defs/netware +11 -0
  416. polyfile/magic_defs/news +13 -0
  417. polyfile/magic_defs/nifty +202 -0
  418. polyfile/magic_defs/nim-lang +29 -0
  419. polyfile/magic_defs/nitpicker +14 -0
  420. polyfile/magic_defs/numpy +9 -0
  421. polyfile/magic_defs/oasis +12 -0
  422. polyfile/magic_defs/ocaml +14 -0
  423. polyfile/magic_defs/octave +6 -0
  424. polyfile/magic_defs/ole2compounddocs +760 -0
  425. polyfile/magic_defs/olf +98 -0
  426. polyfile/magic_defs/openfst +17 -0
  427. polyfile/magic_defs/opentimestamps +16 -0
  428. polyfile/magic_defs/oric +16 -0
  429. polyfile/magic_defs/os2 +186 -0
  430. polyfile/magic_defs/os400 +39 -0
  431. polyfile/magic_defs/os9 +80 -0
  432. polyfile/magic_defs/osf1 +10 -0
  433. polyfile/magic_defs/palm +156 -0
  434. polyfile/magic_defs/parix +13 -0
  435. polyfile/magic_defs/parrot +22 -0
  436. polyfile/magic_defs/pascal +39 -0
  437. polyfile/magic_defs/pbf +11 -0
  438. polyfile/magic_defs/pbm +8 -0
  439. polyfile/magic_defs/pc88 +24 -0
  440. polyfile/magic_defs/pc98 +77 -0
  441. polyfile/magic_defs/pci_ids +116 -0
  442. polyfile/magic_defs/pcjr +8 -0
  443. polyfile/magic_defs/pdf +51 -0
  444. polyfile/magic_defs/pdp +42 -0
  445. polyfile/magic_defs/perl +100 -0
  446. polyfile/magic_defs/pgf +52 -0
  447. polyfile/magic_defs/pgp +581 -0
  448. polyfile/magic_defs/pgp-binary-keys +388 -0
  449. polyfile/magic_defs/pkgadd +7 -0
  450. polyfile/magic_defs/plan9 +25 -0
  451. polyfile/magic_defs/playdate +57 -0
  452. polyfile/magic_defs/plus5 +18 -0
  453. polyfile/magic_defs/pmem +46 -0
  454. polyfile/magic_defs/polyfile_zip +5 -0
  455. polyfile/magic_defs/polyml +23 -0
  456. polyfile/magic_defs/printer +269 -0
  457. polyfile/magic_defs/project +10 -0
  458. polyfile/magic_defs/psdbms +14 -0
  459. polyfile/magic_defs/psl +14 -0
  460. polyfile/magic_defs/pulsar +13 -0
  461. polyfile/magic_defs/puzzle +17 -0
  462. polyfile/magic_defs/pwsafe +14 -0
  463. polyfile/magic_defs/pyramid +12 -0
  464. polyfile/magic_defs/python +305 -0
  465. polyfile/magic_defs/qt +30 -0
  466. polyfile/magic_defs/revision +66 -0
  467. polyfile/magic_defs/riff +840 -0
  468. polyfile/magic_defs/rinex +44 -0
  469. polyfile/magic_defs/ringdove +45 -0
  470. polyfile/magic_defs/rpi +52 -0
  471. polyfile/magic_defs/rpm +45 -0
  472. polyfile/magic_defs/rpmsg +7 -0
  473. polyfile/magic_defs/rst +11 -0
  474. polyfile/magic_defs/rtf +94 -0
  475. polyfile/magic_defs/ruby +55 -0
  476. polyfile/magic_defs/rust +21 -0
  477. polyfile/magic_defs/sc +7 -0
  478. polyfile/magic_defs/sccs +24 -0
  479. polyfile/magic_defs/scientific +144 -0
  480. polyfile/magic_defs/securitycerts +6 -0
  481. polyfile/magic_defs/selinux +24 -0
  482. polyfile/magic_defs/sendmail +37 -0
  483. polyfile/magic_defs/sequent +42 -0
  484. polyfile/magic_defs/sereal +35 -0
  485. polyfile/magic_defs/sgi +144 -0
  486. polyfile/magic_defs/sgml +161 -0
  487. polyfile/magic_defs/sharc +23 -0
  488. polyfile/magic_defs/sinclair +40 -0
  489. polyfile/magic_defs/sisu +18 -0
  490. polyfile/magic_defs/sketch +6 -0
  491. polyfile/magic_defs/smalltalk +25 -0
  492. polyfile/magic_defs/smile +34 -0
  493. polyfile/magic_defs/sniffer +482 -0
  494. polyfile/magic_defs/softquad +40 -0
  495. polyfile/magic_defs/sosi +40 -0
  496. polyfile/magic_defs/spec +21 -0
  497. polyfile/magic_defs/spectrum +184 -0
  498. polyfile/magic_defs/sql +288 -0
  499. polyfile/magic_defs/ssh +39 -0
  500. polyfile/magic_defs/ssl +20 -0
  501. polyfile/magic_defs/statistics +45 -0
  502. polyfile/magic_defs/subtitle +38 -0
  503. polyfile/magic_defs/sun +141 -0
  504. polyfile/magic_defs/svf +5 -0
  505. polyfile/magic_defs/sylk +36 -0
  506. polyfile/magic_defs/symbos +42 -0
  507. polyfile/magic_defs/sysex +429 -0
  508. polyfile/magic_defs/tcl +29 -0
  509. polyfile/magic_defs/teapot +6 -0
  510. polyfile/magic_defs/terminfo +63 -0
  511. polyfile/magic_defs/tex +141 -0
  512. polyfile/magic_defs/tgif +7 -0
  513. polyfile/magic_defs/ti-8x +239 -0
  514. polyfile/magic_defs/timezone +42 -0
  515. polyfile/magic_defs/tplink +95 -0
  516. polyfile/magic_defs/troff +38 -0
  517. polyfile/magic_defs/tuxedo +8 -0
  518. polyfile/magic_defs/typeset +8 -0
  519. polyfile/magic_defs/uf2 +72 -0
  520. polyfile/magic_defs/unicode +15 -0
  521. polyfile/magic_defs/unisig +12 -0
  522. polyfile/magic_defs/unknown +34 -0
  523. polyfile/magic_defs/usd +21 -0
  524. polyfile/magic_defs/uterus +16 -0
  525. polyfile/magic_defs/uuencode +28 -0
  526. polyfile/magic_defs/vacuum-cleaner +54 -0
  527. polyfile/magic_defs/varied.out +46 -0
  528. polyfile/magic_defs/varied.script +21 -0
  529. polyfile/magic_defs/vax +32 -0
  530. polyfile/magic_defs/vicar +17 -0
  531. polyfile/magic_defs/virtual +307 -0
  532. polyfile/magic_defs/virtutech +12 -0
  533. polyfile/magic_defs/visx +32 -0
  534. polyfile/magic_defs/vms +30 -0
  535. polyfile/magic_defs/vmware +6 -0
  536. polyfile/magic_defs/vorbis +155 -0
  537. polyfile/magic_defs/vxl +14 -0
  538. polyfile/magic_defs/warc +16 -0
  539. polyfile/magic_defs/weak +16 -0
  540. polyfile/magic_defs/web +18 -0
  541. polyfile/magic_defs/webassembly +17 -0
  542. polyfile/magic_defs/windows +1811 -0
  543. polyfile/magic_defs/wireless +7 -0
  544. polyfile/magic_defs/wordprocessors +630 -0
  545. polyfile/magic_defs/wsdl +23 -0
  546. polyfile/magic_defs/x68000 +25 -0
  547. polyfile/magic_defs/xdelta +13 -0
  548. polyfile/magic_defs/xenix +106 -0
  549. polyfile/magic_defs/xilinx +58 -0
  550. polyfile/magic_defs/xo65 +37 -0
  551. polyfile/magic_defs/xwindows +43 -0
  552. polyfile/magic_defs/yara +17 -0
  553. polyfile/magic_defs/zfs +96 -0
  554. polyfile/magic_defs/zilog +12 -0
  555. polyfile/magic_defs/zip +126 -0
  556. polyfile/magic_defs/zyxel +17 -0
  557. polyfile/nes.py +144 -0
  558. polyfile/nitf.py +15 -0
  559. polyfile/pdf.py +1264 -0
  560. polyfile/pickles.py +45 -0
  561. polyfile/polyfile.py +409 -0
  562. polyfile/profiling.py +115 -0
  563. polyfile/repl.py +624 -0
  564. polyfile/search.py +310 -0
  565. polyfile/serialization.py +323 -0
  566. polyfile/structmatcher.py +46 -0
  567. polyfile/structs.py +281 -0
  568. polyfile/templates/download.js +162 -0
  569. polyfile/templates/hexdump.css +268 -0
  570. polyfile/templates/hexdump.js +756 -0
  571. polyfile/templates/jquery-3.4.1.min.js +2 -0
  572. polyfile/templates/template.html +119 -0
  573. polyfile/wildcards.py +62 -0
  574. polyfile/zipmatcher.py +183 -0
  575. polyfile_weave-0.5.5.dist-info/METADATA +173 -0
  576. polyfile_weave-0.5.5.dist-info/RECORD +585 -0
  577. polyfile_weave-0.5.5.dist-info/WHEEL +5 -0
  578. polyfile_weave-0.5.5.dist-info/entry_points.txt +2 -0
  579. polyfile_weave-0.5.5.dist-info/licenses/LICENSE +202 -0
  580. polyfile_weave-0.5.5.dist-info/top_level.txt +2 -0
  581. polymerge/__init__.py +1 -0
  582. polymerge/__main__.py +296 -0
  583. polymerge/cfg.py +127 -0
  584. polymerge/polymerge.py +227 -0
  585. polymerge/polytracker.py +190 -0
@@ -0,0 +1,2694 @@
1
+ #------------------------------------------------------------------------------
2
+ # $File: filesystems,v 1.158 2023/05/21 17:19:08 christos Exp $
3
+ # filesystems: file(1) magic for different filesystems
4
+ #
5
+ 0 name partid
6
+ >0 ubyte 0x00 Unused
7
+ >0 ubyte 0x01 12-bit FAT
8
+ >0 ubyte 0x02 XENIX /
9
+ >0 ubyte 0x03 XENIX /usr
10
+ >0 ubyte 0x04 16-bit FAT, less than 32M
11
+ >0 ubyte 0x05 extended partition
12
+ >0 ubyte 0x06 16-bit FAT, more than 32M
13
+ >0 ubyte 0x07 OS/2 HPFS, NTFS, QNX2, Adv. UNIX
14
+ >0 ubyte 0x08 AIX or os, or etc.
15
+ >0 ubyte 0x09 AIX boot partition or Coherent
16
+ >0 ubyte 0x0a O/2 boot manager or Coherent swap
17
+ >0 ubyte 0x0b 32-bit FAT
18
+ >0 ubyte 0x0c 32-bit FAT, LBA-mapped
19
+ >0 ubyte 0x0d 7XXX, LBA-mapped
20
+ >0 ubyte 0x0e 16-bit FAT, LBA-mapped
21
+ >0 ubyte 0x0f extended partition, LBA-mapped
22
+ >0 ubyte 0x10 OPUS
23
+ >0 ubyte 0x11 OS/2 DOS 12-bit FAT
24
+ >0 ubyte 0x12 Compaq diagnostics
25
+ >0 ubyte 0x14 OS/2 DOS 16-bit FAT <32M
26
+ >0 ubyte 0x16 OS/2 DOS 16-bit FAT >=32M
27
+ >0 ubyte 0x17 OS/2 hidden IFS
28
+ >0 ubyte 0x18 AST Windows swapfile
29
+ >0 ubyte 0x19 Willowtech Photon coS
30
+ >0 ubyte 0x1b hidden win95 fat 32
31
+ >0 ubyte 0x1c hidden win95 fat 32 lba
32
+ >0 ubyte 0x1d hidden win95 fat 16 lba
33
+ >0 ubyte 0x20 Willowsoft OFS1
34
+ >0 ubyte 0x21 reserved
35
+ >0 ubyte 0x23 reserved
36
+ >0 ubyte 0x24 NEC DOS
37
+ >0 ubyte 0x26 reserved
38
+ >0 ubyte 0x31 reserved
39
+ >0 ubyte 0x32 Alien Internet Services NOS
40
+ >0 ubyte 0x33 reserved
41
+ >0 ubyte 0x34 reserved
42
+ >0 ubyte 0x35 JFS on OS2
43
+ >0 ubyte 0x36 reserved
44
+ >0 ubyte 0x38 Theos
45
+ >0 ubyte 0x39 Plan 9, or Theos spanned
46
+ >0 ubyte 0x3a Theos ver 4 4gb partition
47
+ >0 ubyte 0x3b Theos ve 4 extended partition
48
+ >0 ubyte 0x3c PartitionMagic recovery
49
+ >0 ubyte 0x3d Hidden Netware
50
+ >0 ubyte 0x40 VENIX 286 or LynxOS
51
+ >0 ubyte 0x41 PReP
52
+ >0 ubyte 0x42 linux swap sharing DRDOS disk
53
+ >0 ubyte 0x43 linux sharing DRDOS disk
54
+ >0 ubyte 0x44 GoBack change utility
55
+ >0 ubyte 0x45 Boot US Boot manager
56
+ >0 ubyte 0x46 EUMEL/Elan or Ergos 3
57
+ >0 ubyte 0x47 EUMEL/Elan or Ergos 3
58
+ >0 ubyte 0x48 EUMEL/Elan or Ergos 3
59
+ >0 ubyte 0x4a ALFX/THIN filesystem for DOS
60
+ >0 ubyte 0x4c Oberon partition
61
+ >0 ubyte 0x4d QNX4.x
62
+ >0 ubyte 0x4e QNX4.x 2nd part
63
+ >0 ubyte 0x4f QNX4.x 3rd part
64
+ >0 ubyte 0x50 DM (disk manager)
65
+ >0 ubyte 0x51 DM6 Aux1 (or Novell)
66
+ >0 ubyte 0x52 CP/M or Microport SysV/AT
67
+ >0 ubyte 0x53 DM6 Aux3
68
+ >0 ubyte 0x54 DM6 DDO
69
+ >0 ubyte 0x55 EZ-Drive (disk manager)
70
+ >0 ubyte 0x56 Golden Bow (disk manager)
71
+ >0 ubyte 0x57 Drive PRO
72
+ >0 ubyte 0x5c Priam Edisk (disk manager)
73
+ >0 ubyte 0x61 SpeedStor
74
+ >0 ubyte 0x63 GNU HURD or Mach or Sys V/386
75
+ >0 ubyte 0x64 Novell Netware 2.xx or Speedstore
76
+ >0 ubyte 0x65 Novell Netware 3.xx
77
+ >0 ubyte 0x66 Novell 386 Netware
78
+ >0 ubyte 0x67 Novell
79
+ >0 ubyte 0x68 Novell
80
+ >0 ubyte 0x69 Novell
81
+ >0 ubyte 0x70 DiskSecure Multi-Boot
82
+ >0 ubyte 0x71 reserved
83
+ >0 ubyte 0x73 reserved
84
+ >0 ubyte 0x74 reserved
85
+ >0 ubyte 0x75 PC/IX
86
+ >0 ubyte 0x76 reserved
87
+ >0 ubyte 0x77 M2FS/M2CS partition
88
+ >0 ubyte 0x78 XOSL boot loader filesystem
89
+ >0 ubyte 0x80 MINIX until 1.4a
90
+ >0 ubyte 0x81 MINIX since 1.4b
91
+ >0 ubyte 0x82 Linux swap or Solaris
92
+ >0 ubyte 0x83 Linux native
93
+ >0 ubyte 0x84 OS/2 hidden C: drive
94
+ >0 ubyte 0x85 Linux extended partition
95
+ >0 ubyte 0x86 NT FAT volume set
96
+ >0 ubyte 0x87 NTFS volume set or HPFS mirrored
97
+ >0 ubyte 0x8a Linux Kernel AiR-BOOT partition
98
+ >0 ubyte 0x8b Legacy Fault tolerant FAT32
99
+ >0 ubyte 0x8c Legacy Fault tolerant FAT32 ext
100
+ >0 ubyte 0x8d Hidden free FDISK FAT12
101
+ >0 ubyte 0x8e Linux Logical Volume Manager
102
+ >0 ubyte 0x90 Hidden free FDISK FAT16
103
+ >0 ubyte 0x91 Hidden free FDISK DOS EXT
104
+ >0 ubyte 0x92 Hidden free FDISK FAT16 Big
105
+ >0 ubyte 0x93 Amoeba filesystem
106
+ >0 ubyte 0x94 Amoeba bad block table
107
+ >0 ubyte 0x95 MIT EXOPC native partitions
108
+ >0 ubyte 0x97 Hidden free FDISK FAT32
109
+ >0 ubyte 0x98 Datalight ROM-DOS Super-Boot
110
+ >0 ubyte 0x99 Mylex EISA SCSI
111
+ >0 ubyte 0x9a Hidden free FDISK FAT16 LBA
112
+ >0 ubyte 0x9b Hidden free FDISK EXT LBA
113
+ >0 ubyte 0x9f BSDI?
114
+ >0 ubyte 0xa0 IBM Thinkpad hibernation
115
+ >0 ubyte 0xa1 HP Volume expansion (SpeedStor)
116
+ >0 ubyte 0xa3 HP Volume expansion (SpeedStor)
117
+ >0 ubyte 0xa4 HP Volume expansion (SpeedStor)
118
+ >0 ubyte 0xa5 386BSD partition type
119
+ >0 ubyte 0xa6 OpenBSD partition type
120
+ >0 ubyte 0xa7 NeXTSTEP 486
121
+ >0 ubyte 0xa8 Apple UFS
122
+ >0 ubyte 0xa9 NetBSD partition type
123
+ >0 ubyte 0xaa Olivetty Fat12 1.44MB Service part
124
+ >0 ubyte 0xab Apple Boot
125
+ >0 ubyte 0xae SHAG OS filesystem
126
+ >0 ubyte 0xaf Apple HFS
127
+ >0 ubyte 0xb0 BootStar Dummy
128
+ >0 ubyte 0xb1 reserved
129
+ >0 ubyte 0xb3 reserved
130
+ >0 ubyte 0xb4 reserved
131
+ >0 ubyte 0xb6 reserved
132
+ >0 ubyte 0xb7 BSDI BSD/386 filesystem
133
+ >0 ubyte 0xb8 BSDI BSD/386 swap
134
+ >0 ubyte 0xbb Boot Wizard Hidden
135
+ >0 ubyte 0xbe Solaris 8 partition type
136
+ >0 ubyte 0xbf Solaris partition type
137
+ >0 ubyte 0xc0 CTOS
138
+ >0 ubyte 0xc1 DRDOS/sec (FAT-12)
139
+ >0 ubyte 0xc2 Hidden Linux
140
+ >0 ubyte 0xc3 Hidden Linux swap
141
+ >0 ubyte 0xc4 DRDOS/sec (FAT-16, < 32M)
142
+ >0 ubyte 0xc5 DRDOS/sec (EXT)
143
+ >0 ubyte 0xc6 DRDOS/sec (FAT-16, >= 32M)
144
+ >0 ubyte 0xc7 Syrinx (Cyrnix?) or HPFS disabled
145
+ >0 ubyte 0xc8 Reserved for DR-DOS 8.0+
146
+ >0 ubyte 0xc9 Reserved for DR-DOS 8.0+
147
+ >0 ubyte 0xca Reserved for DR-DOS 8.0+
148
+ >0 ubyte 0xcb DR-DOS 7.04+ Secured FAT32 CHS
149
+ >0 ubyte 0xcc DR-DOS 7.04+ Secured FAT32 LBA
150
+ >0 ubyte 0xcd CTOS Memdump
151
+ >0 ubyte 0xce DR-DOS 7.04+ FAT16X LBA
152
+ >0 ubyte 0xcf DR-DOS 7.04+ EXT LBA
153
+ >0 ubyte 0xd0 REAL/32 secure big partition
154
+ >0 ubyte 0xd1 Old Multiuser DOS FAT12
155
+ >0 ubyte 0xd4 Old Multiuser DOS FAT16 Small
156
+ >0 ubyte 0xd5 Old Multiuser DOS Extended
157
+ >0 ubyte 0xd6 Old Multiuser DOS FAT16 Big
158
+ >0 ubyte 0xd8 CP/M 86
159
+ >0 ubyte 0xdb CP/M or Concurrent CP/M
160
+ >0 ubyte 0xdd Hidden CTOS Memdump
161
+ >0 ubyte 0xde Dell PowerEdge Server utilities
162
+ >0 ubyte 0xdf DG/UX virtual disk manager
163
+ >0 ubyte 0xe0 STMicroelectronics ST AVFS
164
+ >0 ubyte 0xe1 DOS access or SpeedStor 12-bit
165
+ >0 ubyte 0xe3 DOS R/O or Storage Dimensions
166
+ >0 ubyte 0xe4 SpeedStor 16-bit FAT < 1024 cyl.
167
+ >0 ubyte 0xe5 reserved
168
+ >0 ubyte 0xe6 reserved
169
+ >0 ubyte 0xeb BeOS
170
+ >0 ubyte 0xee GPT Protective MBR
171
+ >0 ubyte 0xef EFI system partition
172
+ >0 ubyte 0xf0 Linux PA-RISC boot loader
173
+ >0 ubyte 0xf1 SpeedStor or Storage Dimensions
174
+ >0 ubyte 0xf2 DOS 3.3+ Secondary
175
+ >0 ubyte 0xf3 reserved
176
+ >0 ubyte 0xf4 SpeedStor large partition
177
+ >0 ubyte 0xf5 Prologue multi-volumen partition
178
+ >0 ubyte 0xf6 reserved
179
+ >0 ubyte 0xf9 pCache: ext2/ext3 persistent cache
180
+ >0 ubyte 0xfa Bochs x86 emulator
181
+ >0 ubyte 0xfb VMware File System
182
+ >0 ubyte 0xfc VMware Swap
183
+ >0 ubyte 0xfd Linux RAID partition persistent sb
184
+ >0 ubyte 0xfe LANstep or IBM PS/2 IML
185
+ >0 ubyte 0xff Xenix Bad Block Table
186
+
187
+ 0 string \366\366\366\366 PC formatted floppy with no filesystem
188
+ # Sun disk labels
189
+ # From /usr/include/sun/dklabel.h:
190
+ 0774 beshort 0xdabe
191
+ # modified by Joerg Jenderek, because original test
192
+ # succeeds for Cabinet archive dao360.dl_ with negative blocks
193
+ >0770 long >0 Sun disk label
194
+ >>0 string x '%s
195
+ >>>31 string >\0 \b%s
196
+ >>>>63 string >\0 \b%s
197
+ >>>>>95 string >\0 \b%s
198
+ >>0 string x \b'
199
+ >>0734 short >0 %d rpm,
200
+ >>0736 short >0 %d phys cys,
201
+ >>0740 short >0 %d alts/cyl,
202
+ >>0746 short >0 %d interleave,
203
+ >>0750 short >0 %d data cyls,
204
+ >>0752 short >0 %d alt cyls,
205
+ >>0754 short >0 %d heads/partition,
206
+ >>0756 short >0 %d sectors/track,
207
+ >>0764 long >0 start cyl %d,
208
+ >>0770 long x %d blocks
209
+ # Is there a boot block written 1 sector in?
210
+ >512 belong&077777777 0600407 \b, boot block present
211
+
212
+ # Joerg Jenderek: Smart Boot Manager backup file is 25 (MSDOS) or 41 (LINUX) byte header + first sectors of disk
213
+ # (http://btmgr.sourceforge.net/docs/user-guide-3.html)
214
+ 0 string SBMBAKUP_ Smart Boot Manager backup file
215
+ >9 string x \b, version %-5.5s
216
+ >>14 string =_
217
+ >>>15 string x %-.1s
218
+ >>>>16 string =_ \b.
219
+ >>>>>17 string x \b%-.1s
220
+ >>>>>>18 string =_ \b.
221
+ >>>>>>>19 string x \b%-.1s
222
+ >>>22 ubyte 0
223
+ >>>>21 ubyte x \b, from drive %#x
224
+ >>>22 ubyte >0
225
+ >>>>21 string x \b, from drive %s
226
+ >>>535 search/17 \x55\xAA
227
+ >>>>&-512 indirect x \b; contains
228
+
229
+ # updated by Joerg Jenderek at Nov 2012
230
+ # DOS Emulator image is 128 byte, null right padded header + harddisc image
231
+ 0 string DOSEMU\0
232
+ >0x27E leshort 0xAA55
233
+ #offset is 128
234
+ >>19 ubyte 128
235
+ >>>(19.b-1) ubyte 0x0 DOS Emulator image
236
+ >>>>7 ulelong >0 \b, %u heads
237
+ >>>>11 ulelong >0 \b, %d sectors/track
238
+ >>>>15 ulelong >0 \b, %d cylinders
239
+ >>>>128 indirect x \b; contains
240
+
241
+ # added by Joerg Jenderek at Nov 2012
242
+ # http://www.thenakedpc.com/articles/v04/08/0408-05.html
243
+ # Symantec (Peter Norton) Image.dat file consists of variable header, bootrecord, part of FAT and root directory data
244
+ 0 string PNCIHISK\0 Norton Utilities disc image data
245
+ # real x86 boot sector with jump instruction
246
+ >509 search/1026 \x55\xAA\xeb
247
+ >>&-1 indirect x \b; contains
248
+ # http://file-extension.net/seeker/file_extension_dat
249
+ 0 string PNCIUNDO Norton Disk Doctor UnDo file
250
+ #
251
+
252
+ # DOS/MBR boot sector updated by Joerg Jenderek at Sep 2007,May 2011,2013
253
+ # for any allowed sector sizes
254
+ 30 search/481 \x55\xAA
255
+ # to display DOS/MBR boot sector (40) before old one (strength=50+21),Syslinux bootloader (71),SYSLINUX MBR (37+36),NetBSD mbr (110),AdvanceMAME mbr (111)
256
+ # DOS BPB information (70) and after DOS floppy (120) like in previous file version
257
+ !:strength +65
258
+ # for sector sizes < 512 Bytes
259
+ >11 uleshort <512
260
+ >>(11.s-2) uleshort 0xAA55 DOS/MBR boot sector
261
+ # for sector sizes with 512 or more Bytes
262
+ >0x1FE leshort 0xAA55 DOS/MBR boot sector
263
+
264
+ # ExFAT
265
+ 3 string/w =EXFAT
266
+ >0x1FE leshort 0xAA55
267
+ >>0x6E ubyte 1
268
+ >>>0x6F ubyte 0x80
269
+ >>>0 ubyte 0xEB DOS/MBR boot sector,
270
+ >>>0x69 ubyte x ExFAT Filesystem version %d.
271
+ >>>0x68 ubyte x \b%d
272
+ >>>0x6d ubyte x \b, (1<<%d) sectors per cluster
273
+ >>>0x48 ulequad x \b, sectors %lld
274
+ >>>0x64 ulelong x \b, serial number %#x
275
+
276
+ # keep old DOS/MBR boot sector as dummy for mbr and bootloader displaying
277
+ # only for sector sizes with 512 or more Bytes
278
+ 0x1FE leshort 0xAA55 DOS/MBR boot sector
279
+ #
280
+ # to display information (50) before DOS BPB (strength=70) and after DOS floppy (120) like in old file version
281
+ !:strength +65
282
+ >2 string OSBS OS/BS MBR
283
+ # added by Joerg Jenderek at Feb 2013 according to https://thestarman.pcministry.com/asm/mbr/
284
+ # and https://en.wikipedia.org/wiki/Master_Boot_Record
285
+ # test for nearly all MS-DOS Master Boot Record initial program loader (IPL) is now done by
286
+ # characteristic assembler instructions: xor ax,ax;mov ss,ax;mov sp,7c00
287
+ >0 search/2 \x33\xc0\x8e\xd0\xbc\x00\x7c MS-MBR
288
+ # Microsoft Windows 95A and early ( https://thestarman.pcministry.com/asm/mbr/STDMBR.htm )
289
+ # assembler instructions: mov si,sp;push ax;pop es;push ax;pop ds;sti;cld
290
+ >>8 ubequad 0x8bf45007501ffbfc
291
+ # https://thestarman.pcministry.com/asm/mbr/200MBR.htm
292
+ >>>0x16 ubyte 0xF3 \b,DOS 2
293
+ >>>>219 regex Author\ -\ Author:
294
+ # found "David Litton" , "A Pehrsson "
295
+ >>>>>&0 string x "%s"
296
+ >>>0x16 ubyte 0xF2
297
+ # NEC MS-DOS 3.30 Rev. 3 . See https://thestarman.pcministry.com/asm/mbr/DOS33MBR.htm
298
+ # assembler instructions: mov di,077c;cmp word ptrl[di],a55a;jnz
299
+ >>>>0x22 ubequad 0xbf7c07813d5aa575 \b,NEC 3.3
300
+ # version MS-DOS 3.30 til MS-Windows 95A (WinVer=4.00.1111)
301
+ >>>>0x22 default x \b,D0S version 3.3-7.0
302
+ # error messages are printed by assembler instructions: mov si,06nn;...;int 10 (0xBEnn06;...)
303
+ # where nn is string offset varying for different languages
304
+ # "Invalid partition table" nn=0x8b for english version
305
+ >>>>>(0x49.b) string Invalid\ partition\ table english
306
+ >>>>>(0x49.b) string Ung\201ltige\ Partitionstabelle german
307
+ >>>>>(0x49.b) string Table\ de\ partition\ invalide french
308
+ >>>>>(0x49.b) string Tabela\ de\ parti\207ao\ inv\240lida portuguese
309
+ >>>>>(0x49.b) string Tabla\ de\ partici\242n\ no\ v\240lida spanish
310
+ >>>>>(0x49.b) string Tavola\ delle\ partizioni\ non\ valida italian
311
+ >>>>>0x49 ubyte >0 at offset %#x
312
+ >>>>>>(0x49.b) string >\0 "%s"
313
+ # "Error loading operating system" nn=0xa3 for english version
314
+ # "Fehler beim Laden des Betriebssystems" nn=0xa7 for german version
315
+ # "Erreur en chargeant syst\212me d'exploitation" nn=0xa7 for french version
316
+ # "Erro na inicializa\207ao do sistema operacional" nn=0xa7 for portuguese Brazilian version
317
+ # "Error al cargar sistema operativo" nn=0xa8 for spanish version
318
+ # "Errore durante il caricamento del sistema operativo" nn=0xae for italian version
319
+ >>>>>0x74 ubyte >0 at offset %#x
320
+ >>>>>>(0x74.b) string >\0 "%s"
321
+ # "Missing operating system" nn=0xc2 for english version
322
+ # "Betriebssystem fehlt" nn=0xcd for german version
323
+ # "Syst\212me d'exploitation absent" nn=0xd2 for french version
324
+ # "Sistema operacional nao encontrado" nn=0xd4 for portuguese Brazilian version
325
+ # "Falta sistema operativo" nn=0xca for spanish version
326
+ # "Sistema operativo mancante" nn=0xe2 for italian version
327
+ >>>>>0x79 ubyte >0 at offset %#x
328
+ >>>>>>(0x79.b) string >\0 "%s"
329
+ # Microsoft Windows 95B to XP (https://thestarman.pcministry.com/asm/mbr/95BMEMBR.htm)
330
+ # assembler instructions: push ax;pop es;push ax;pop ds;cld;mov si,7c1b
331
+ >>8 ubequad 0x5007501ffcbe1b7c
332
+ # assembler instructions: rep;movsb;retf;mov si,07be;mov cl,04
333
+ >>>24 ubequad 0xf3a4cbbebe07b104 9M
334
+ # "Invalid partition table" nn=0x10F for english version
335
+ # "Ung\201ltige Partitionstabelle" nn=0x10F for german version
336
+ # "Table de partition erron\202e" nn=0x10F for french version
337
+ # "\216\257\245\340\240\346\250\256\255\255\240\357 \341\250\341\342\245\254\240 \255\245 \255\240\251\244\245\255\240" nn=0x10F for russian version
338
+ >>>>(0x3C.b+0x0FF) string Invalid\ partition\ table english
339
+ >>>>(0x3C.b+0x0FF) string Ung\201ltige\ Partitionstabelle german
340
+ >>>>(0x3C.b+0x0FF) string Table\ de\ partition\ erron\202e french
341
+ >>>>(0x3C.b+0x0FF) string \215\245\257\340\240\242\250\253\354\255\240\357\ \342\240\241\253\250\346\240 russian
342
+ >>>>0x3C ubyte x at offset %#x+0xFF
343
+ >>>>(0x3C.b+0x0FF) string >\0 "%s"
344
+ # "Error loading operating system" nn=0x127 for english version
345
+ # "Fehler beim Laden des Betriebssystems" nn=0x12b for german version
346
+ # "Erreur lors du chargement du syst\212me d'exploitation" nn=0x12a for french version
347
+ # "\216\350\250\241\252\240 \257\340\250 \247\240\243\340\343\247\252\245 \256\257\245\340\240\346\250\256\255\255\256\251 \341\250\341\342\245\254\353" nn=0x12d for russian version
348
+ >>>>0xBD ubyte x at offset 0x1%x
349
+ >>>>(0xBD.b+0x100) string >\0 "%s"
350
+ # "Missing operating system" nn=0x146 for english version
351
+ # "Betriebssystem fehlt" nn=0x151 for german version
352
+ # "Syst\212me d'exploitation manquant" nn=0x15e for french version
353
+ # "\216\257\245\340\240\346\250\256\255\255\240\357 \341\250\341\342\245\254\240 \255\245 \255\240\251\244\245\255\240" nn=0x156 for russian version
354
+ >>>>0xA9 ubyte x at offset 0x1%x
355
+ >>>>(0xA9.b+0x100) string >\0 "%s"
356
+ # https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm
357
+ # assembler instructions: rep;movsb;retf;mov BP,07be;mov cl,04
358
+ >>>24 ubequad 0xf3a4cbbdbe07b104 XP
359
+ # where xxyyzz are lower bits from offsets of error messages varying for different languages
360
+ >>>>0x1B4 ubelong&0x00FFFFFF 0x002c4463 english
361
+ >>>>0x1B4 ubelong&0x00FFFFFF 0x002c486e german
362
+ # "Invalid partition table" xx=0x12C for english version
363
+ # "Ung\201ltige Partitionstabelle" xx=0x12C for german version
364
+ >>>>0x1b5 ubyte >0 at offset 0x1%x
365
+ >>>>(0x1b5.b+0x100) string >\0 "%s"
366
+ # "Error loading operating system" yy=0x144 for english version
367
+ # "Fehler beim Laden des Betriebssystems" yy=0x148 for german version
368
+ >>>>0x1b6 ubyte >0 at offset 0x1%x
369
+ >>>>(0x1b6.b+0x100) string >\0 "%s"
370
+ # "Missing operating system" zz=0x163 for english version
371
+ # "Betriebssystem nicht vorhanden" zz=0x16e for german version
372
+ >>>>0x1b7 ubyte >0 at offset 0x1%x
373
+ >>>>(0x1b7.b+0x100) string >\0 "%s"
374
+ # Microsoft Windows Vista or 7
375
+ # assembler instructions: ..;mov ds,ax;mov si,7c00;mov di,..00
376
+ >>8 ubequad 0xc08ed8be007cbf00
377
+ # Microsoft Windows Vista (https://thestarman.pcministry.com/asm/mbr/VistaMBR.htm)
378
+ # assembler instructions: jnz 0729;cmp ebx,"TCPA"
379
+ >>>0xEC ubequad 0x753b6681fb544350 Vista
380
+ # where xxyyzz are lower bits from offsets of error messages varying for different languages
381
+ >>>>0x1B4 ubelong&0x00FFFFFF 0x00627a99 english
382
+ #>>>>0x1B4 ubelong&0x00FFFFFF ? german
383
+ # "Invalid partition table" xx=0x162 for english version
384
+ # "Ung\201ltige Partitionstabelle" xx=0x1?? for german version
385
+ >>>>0x1b5 ubyte >0 at offset 0x1%x
386
+ >>>>(0x1b5.b+0x100) string >\0 "%s"
387
+ # "Error loading operating system" yy=0x17a for english version
388
+ # "Fehler beim Laden des Betriebssystems" yy= 0x1?? for german version
389
+ >>>>0x1b6 ubyte >0 at offset 0x1%x
390
+ >>>>(0x1b6.b+0x100) string >\0 "%s"
391
+ # "Missing operating system" zz=0x199 for english version
392
+ # "Betriebssystem nicht vorhanden" zz=0x1?? for german version
393
+ >>>>0x1b7 ubyte >0 at offset 0x1%x
394
+ >>>>(0x1b7.b+0x100) string >\0 "%s"
395
+ # Microsoft Windows 7 (https://thestarman.pcministry.com/asm/mbr/W7MBR.htm)
396
+ # assembler instructions: cmp ebx,"TCPA";cmp
397
+ >>>0xEC ubequad 0x6681fb5443504175 Windows 7
398
+ # where xxyyzz are lower bits from offsets of error messages varying for different languages
399
+ >>>>0x1B4 ubelong&0x00FFFFFF 0x00637b9a english
400
+ #>>>>0x1B4 ubelong&0x00FFFFFF ? german
401
+ # "Invalid partition table" xx=0x163 for english version
402
+ # "Ung\201ltige Partitionstabelle" xx=0x1?? for german version
403
+ >>>>0x1b5 ubyte >0 at offset 0x1%x
404
+ >>>>(0x1b5.b+0x100) string >\0 "%s"
405
+ # "Error loading operating system" yy=0x17b for english version
406
+ # "Fehler beim Laden des Betriebssystems" yy=0x1?? for german version
407
+ >>>>0x1b6 ubyte >0 at offset 0x1%x
408
+ >>>>(0x1b6.b+0x100) string >\0 "%s"
409
+ # "Missing operating system" zz=0x19a for english version
410
+ # "Betriebssystem nicht vorhanden" zz=0x1?? for german version
411
+ >>>>0x1b7 ubyte >0 at offset 0x1%x
412
+ >>>>(0x1b7.b+0x100) string >\0 "%s"
413
+ # https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DiskSigs
414
+ # https://en.wikipedia.org/wiki/MBR_disk_signature#ID
415
+ >>0x1b8 ulelong >0 \b, disk signature %#-.4x
416
+ # driveID/timestamp for Win 95B,98,98SE and ME. See https://thestarman.pcministry.com/asm/mbr/mystery.htm
417
+ >>0xDA uleshort 0
418
+ >>>0xDC ulelong >0 \b, created
419
+ # physical drive number (0x80-0xFF) when the Windows wrote that byte to the drive
420
+ >>>>0xDC ubyte x with driveID %#x
421
+ # hours, minutes and seconds
422
+ >>>>0xDf ubyte x at %x
423
+ >>>>0xDe ubyte x \b:%x
424
+ >>>>0xDd ubyte x \b:%x
425
+ # special case for Microsoft MS-DOS 3.21 spanish
426
+ # assembler instructions: cli;mov $0x30,%ax;mov %ax,%ss;mov
427
+ >0 ubequad 0xfab830008ed0bc00
428
+ # assembler instructions: $0x1f00,%sp;mov $0x80cb,%di;add %cl,(%bx,%si);in (%dx),%ax;mov
429
+ >>8 ubequad 0x1fbfcb800008ed8 MS-MBR,D0S version 3.21 spanish
430
+ # Microsoft MBR IPL end
431
+
432
+ # dr-dos with some upper-, lowercase variants
433
+ >0x9D string Invalid\ partition\ table$
434
+ >>181 string No\ Operating\ System$
435
+ >>>201 string Operating\ System\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03
436
+ >0x9D string Invalid\ partition\ table$
437
+ >>181 string No\ operating\ system$
438
+ >>>201 string Operating\ system\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03
439
+ >342 string Invalid\ partition\ table$
440
+ >>366 string No\ operating\ system$
441
+ >>>386 string Operating\ system\ load\ error$ \b, DR-DOS MBR, version 7.01 to 7.03
442
+ >295 string NEWLDR\0
443
+ >>302 string Bad\ PT\ $
444
+ >>>310 string No\ OS\ $
445
+ >>>>317 string OS\ load\ err$
446
+ >>>>>329 string Moved\ or\ missing\ IBMBIO.LDR\n\r
447
+ >>>>>>358 string Press\ any\ key\ to\ continue.\n\r$
448
+ >>>>>>>387 string Copyright\ (c)\ 1984,1998
449
+ >>>>>>>>411 string Caldera\ Inc.\0 \b, DR-DOS MBR (IBMBIO.LDR)
450
+ #
451
+ # tests for different MS-DOS Master Boot Records (MBR) moved and merged
452
+ #
453
+ #>0x145 string Default:\ F \b, FREE-DOS MBR
454
+ #>0x14B string Default:\ F \b, FREE-DOS 1.0 MBR
455
+ >0x145 search/7 Default:\ F \b, FREE-DOS MBR
456
+ #>>313 string F0\ .\ .\ .
457
+ #>>>322 string disk\ 1
458
+ #>>>>382 string FAT3
459
+ >64 string no\ active\ partition\ found
460
+ >>96 string read\ error\ while\ reading\ drive \b, FREE-DOS Beta 0.9 MBR
461
+ # Ranish Partition Manager http://www.ranish.com/part/
462
+ >387 search/4 \0\ Error!\r
463
+ >>378 search/7 Virus!
464
+ >>>397 search/4 Booting\040
465
+ >>>>408 search/4 HD1/\0 \b, Ranish MBR (
466
+ >>>>>416 string Writing\ changes... \b2.37
467
+ >>>>>>438 ubyte x \b,%#x dots
468
+ >>>>>>440 ubyte >0 \b,virus check
469
+ >>>>>>441 ubyte >0 \b,partition %c
470
+ #2.38,2.42,2.44
471
+ >>>>>416 string !Writing\ changes... \b
472
+ >>>>>>418 ubyte 1 \bvirus check,
473
+ >>>>>>419 ubyte x \b%#x seconds
474
+ >>>>>>420 ubyte&0x0F >0 \b,partition
475
+ >>>>>>>420 ubyte&0x0F <5 \b %x
476
+ >>>>>>>420 ubyte&0x0F 0Xf \b ask
477
+ >>>>>420 ubyte x \b)
478
+ #
479
+ # SYSLINUX MBR moved
480
+ # https://www.acronis.de/
481
+ >362 string MBR\ Error\ \0\r
482
+ >>376 string ress\ any\ key\ to\040
483
+ >>>392 string boot\ from\ floppy...\0 \b, Acronis MBR
484
+ # added by Joerg Jenderek
485
+ # https://www.visopsys.org/
486
+ # https://partitionlogic.org.uk/
487
+ >309 string No\ bootable\ partition\ found\r
488
+ >>339 string I/O\ Error\ reading\ boot\ sector\r \b, Visopsys MBR
489
+ >349 string No\ bootable\ partition\ found\r
490
+ >>379 string I/O\ Error\ reading\ boot\ sector\r \b, simple Visopsys MBR
491
+ # bootloader, bootmanager
492
+ >0x40 string SBML
493
+ # label with 11 characters of FAT 12 bit filesystem
494
+ >>43 string SMART\ BTMGR
495
+ >>>430 string SBMK\ Bad!\r \b, Smart Boot Manager
496
+ # OEM-ID not always "SBM"
497
+ #>>>>3 strings SBM
498
+ >>>>6 string >\0 \b, version %s
499
+ >382 string XOSLLOADXCF \b, eXtended Operating System Loader
500
+ >6 string LILO \b, LInux i386 boot LOader
501
+ >>120 string LILO \b, version 22.3.4 SuSe
502
+ >>172 string LILO \b, version 22.5.8 Debian
503
+ # updated by Joerg Jenderek at Oct 2008
504
+ # variables according to grub-0.97/stage1/stage1.S or
505
+ # https://www.gnu.org/software/grub/manual/grub.html#Embedded-data
506
+ # usual values are marked with comments to get only information of strange GRUB loaders
507
+ >342 search/60 \0Geom\0
508
+ #>0 ulelong x %x=0x009048EB , 0x2a9048EB 0
509
+ >>0x41 ubyte <2
510
+ >>>0x3E ubyte >2 \b; GRand Unified Bootloader
511
+ # 0x3 for 0.5.95,0.93,0.94,0.96 0x4 for 1.90
512
+ >>>>0x3E ubyte x \b, stage1 version %#x
513
+ #If it is 0xFF, use a drive passed by BIOS
514
+ >>>>0x40 ubyte <0xFF \b, boot drive %#x
515
+ # in most case 0,1,0x2e for GRUB 0.5.95
516
+ >>>>0x41 ubyte >0 \b, LBA flag %#x
517
+ >>>>0x42 uleshort <0x8000 \b, stage2 address %#x
518
+ #>>>>0x42 uleshort =0x8000 \b, stage2 address %#x (usual)
519
+ >>>>0x42 uleshort >0x8000 \b, stage2 address %#x
520
+ #>>>>0x44 ulelong =1 \b, 1st sector stage2 %#x (default)
521
+ >>>>0x44 ulelong >1 \b, 1st sector stage2 %#x
522
+ >>>>0x48 uleshort <0x800 \b, stage2 segment %#x
523
+ #>>>>0x48 uleshort =0x800 \b, stage2 segment %#x (usual)
524
+ >>>>0x48 uleshort >0x800 \b, stage2 segment %#x
525
+ >>>>402 string Geom\0Hard\ Disk\0Read\0\ Error\0
526
+ >>>>>394 string stage1 \b, GRUB version 0.5.95
527
+ >>>>382 string Geom\0Hard\ Disk\0Read\0\ Error\0
528
+ >>>>>376 string GRUB\ \0 \b, GRUB version 0.93 or 1.94
529
+ >>>>383 string Geom\0Hard\ Disk\0Read\0\ Error\0
530
+ >>>>>377 string GRUB\ \0 \b, GRUB version 0.94
531
+ >>>>385 string Geom\0Hard\ Disk\0Read\0\ Error\0
532
+ >>>>>379 string GRUB\ \0 \b, GRUB version 0.95 or 0.96
533
+ >>>>391 string Geom\0Hard\ Disk\0Read\0\ Error\0
534
+ >>>>>385 string GRUB\ \0 \b, GRUB version 0.97
535
+ # unknown version
536
+ >>>343 string Geom\0Read\0\ Error\0
537
+ >>>>321 string Loading\ stage1.5 \b, GRUB version x.y
538
+ >>>380 string Geom\0Hard\ Disk\0Read\0\ Error\0
539
+ >>>>374 string GRUB\ \0 \b, GRUB version n.m
540
+ # SYSLINUX bootloader moved
541
+ >395 string chksum\0\ ERROR!\0 \b, Gujin bootloader
542
+ # http://www.bcdwb.de/bcdw/index_e.htm
543
+ >3 string BCDL
544
+ >>498 string BCDL\ \ \ \ BIN \b, Bootable CD Loader (1.50Z)
545
+ # mbr partition table entries updated by Joerg Jenderek at Sep 2013
546
+ # skip Norton Utilities disc image data
547
+ >3 string !IHISK
548
+ # skip Linux style boot sector starting with assembler instructions mov 0x7c0,ax;
549
+ >>0 belong !0xb8c0078e
550
+ # not Linux kernel
551
+ >>>514 string !HdrS
552
+ # not BeOS
553
+ >>>>422 string !Be\ Boot\ Loader
554
+ # jump over BPB instruction implies DOS bootsector or AdvanceMAME mbr
555
+ >>>>>0 ubelong&0xFD000000 =0xE9000000
556
+ # AdvanceMAME mbr
557
+ >>>>>>(1.b+2) ubequad 0xfa31c08ed88ec08e
558
+ >>>>>>>446 use partition-table
559
+ # mbr, Norton Utilities disc image data, or 2nd,etc. sector of x86 bootloader
560
+ >>>>>0 ubelong&0xFD000000 !0xE9000000
561
+ # skip FSInfosector
562
+ >>>>>>0 string !RRaA
563
+ # skip 3rd sector of MS x86 bootloader with assembler instructions cli;MOVZX EAX,BYTE PTR [BP+10];MOV ECX,
564
+ # https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm
565
+ >>>>>>>0 ubequad !0xfa660fb64610668b
566
+ # skip 13rd sector of MS x86 bootloader
567
+ >>>>>>>>0 ubequad !0x660fb64610668b4e
568
+ # skip sector starting with DOS new line
569
+ >>>>>>>>>0 string !\r\n
570
+ # allowed active flag 0,80h-FFh
571
+ >>>>>>>>>>446 ubyte 0
572
+ >>>>>>>>>>>446 use partition-table
573
+ >>>>>>>>>>446 ubyte >0x7F
574
+ >>>>>>>>>>>446 use partition-table
575
+ # TODO: test for extended bootrecord (ebr) moved and merged with mbr partition table entries
576
+ # mbr partition table entries end
577
+ # https://www.acronis.de/
578
+ #FAT label=ACRONIS\ SZ
579
+ #OEM-ID=BOOTWIZ0
580
+ >442 string Non-system\ disk,\040
581
+ >>459 string press\ any\ key...\x7\0 \b, Acronis Startup Recovery Loader
582
+ # updated by Joerg Jenderek at Nov 2012, Sep 2013
583
+ # DOS names like F11.SYS or BOOTWIZ.SYS are 8 right space padded bytes+3 bytes
584
+ # display 1 space
585
+ >>>447 ubyte x \b
586
+ >>>477 use DOS-filename
587
+ #
588
+ >185 string FDBOOT\ Version\040
589
+ >>204 string \rNo\ Systemdisk.\040
590
+ >>>220 string Booting\ from\ harddisk.\n\r
591
+ >>>245 string Cannot\ load\ from\ harddisk.\n\r
592
+ >>>>273 string Insert\ Systemdisk\040
593
+ >>>>>291 string and\ press\ any\ key.\n\r \b, FDBOOT harddisk Bootloader
594
+ >>>>>>200 string >\0 \b, version %-3s
595
+ >242 string Bootsector\ from\ C.H.\ Hochst\204
596
+ # http://freecode.com/projects/dosfstools dosfstools-n.m/src/mkdosfs.c
597
+ # updated by Joerg Jenderek at Nov 2012. Use search directive with offset instead of string
598
+ # skip name "C.H. Hochstaetter" partly because it is sometimes written without umlaut
599
+ >242 search/127 Bootsector\ from\ C.H.\ Hochst
600
+ >>278 search/127 No\ Systemdisk.\ Booting\ from\ harddisk
601
+ # followed by variants with point,CR-NL or NL-CR
602
+ >>>208 search/261 Cannot\ load\ from\ harddisk.
603
+ # followed by variants CR-NL or NL-CR
604
+ >>>>236 search/235 Insert\ Systemdisk\ and\ press\ any\ key.
605
+ # followed by variants with point,CR-NL or NL-CR
606
+ >>>>>180 search/96 Disk\ formatted\ with\ WinImage\ \b, WinImage harddisk Bootloader
607
+ # followed by string like "6.50 (c) 1993-2004 Gilles Vollant"
608
+ >>>>>>&0 string x \b, version %-4.4s
609
+ >(1.b+2) ubyte 0xe
610
+ >>(1.b+3) ubyte 0x1f
611
+ >>>(1.b+4) ubyte 0xbe
612
+ # message offset found at (1.b+5) is 0x77 for FAT32 or 0x5b for others
613
+ >>>>(1.b+5) ubyte&0xd3 0x53
614
+ >>>>>(1.b+6) ubyte 0x7c
615
+ # assembler instructions: lodsb;and al,al;jz 0xb;push si;mov ah,
616
+ >>>>>>(1.b+7) ubyte 0xac
617
+ >>>>>>>(1.b+8) ubyte 0x22
618
+ >>>>>>>>(1.b+9) ubyte 0xc0
619
+ >>>>>>>>>(1.b+10) ubyte 0x74
620
+ >>>>>>>>>>(1.b+11) ubyte 0x0b
621
+ >>>>>>>>>>>(1.b+12) ubyte 0x56
622
+ >>>>>>>>>>>>(1.b+13) ubyte 0xb4 \b, mkdosfs boot message display
623
+ # FAT1X version
624
+ >>>>>>>>>>>>>(1.b+5) ubyte 0x5b
625
+ >>>>>>>>>>>>>>0x5b string >\0 "%-s"
626
+ # FAT32 version
627
+ >>>>>>>>>>>>>(1.b+5) ubyte 0x77
628
+ >>>>>>>>>>>>>>0x77 string >\0 "%-s"
629
+ >214 string Please\ try\ to\ install\ FreeDOS\ \b, DOS Emulator boot message display
630
+ #>>244 string from\ dosemu-freedos-*-bin.tgz\r
631
+ #>>>170 string Sorry,\ could\ not\ load\ an\040
632
+ #>>>>195 string operating\ system.\r\n
633
+ #
634
+ >103 string This\ is\ not\ a\ bootable\ disk.\040
635
+ >>132 string Please\ insert\ a\ bootable\040
636
+ >>>157 string floppy\ and\r\n
637
+ >>>>169 string press\ any\ key\ to\ try\ again...\r \b, FREE-DOS message display
638
+ #
639
+ >66 string Solaris\ Boot\ Sector
640
+ >>99 string Incomplete\ MDBoot\ load.
641
+ >>>89 string Version \b, Sun Solaris Bootloader
642
+ >>>>97 byte x version %c
643
+ #
644
+ >408 string OS/2\ !!\ SYS01475\r\0
645
+ >>429 string OS/2\ !!\ SYS02025\r\0
646
+ >>>450 string OS/2\ !!\ SYS02027\r\0
647
+ >>>469 string OS2BOOT\ \ \ \ \b, IBM OS/2 Warp bootloader
648
+ #
649
+ >409 string OS/2\ !!\ SYS01475\r\0
650
+ >>430 string OS/2\ !!\ SYS02025\r\0
651
+ >>>451 string OS/2\ !!\ SYS02027\r\0
652
+ >>>470 string OS2BOOT\ \ \ \ \b, IBM OS/2 Warp Bootloader
653
+ >112 string This\ disk\ is\ not\ bootable\r
654
+ >>142 string If\ you\ wish\ to\ make\ it\ bootable
655
+ >>>176 string run\ the\ DOS\ program\ SYS\040
656
+ >>>200 string after\ the\r
657
+ >>>>216 string system\ has\ been\ loaded\r\n
658
+ >>>>>242 string Please\ insert\ a\ DOS\ diskette\040
659
+ >>>>>271 string into\r\n\ the\ drive\ and\040
660
+ >>>>>>292 string strike\ any\ key...\0 \b, IBM OS/2 Warp message display
661
+ # XP
662
+ >430 string NTLDR\ is\ missing\xFF\r\n
663
+ >>449 string Disk\ error\xFF\r\n
664
+ >>>462 string Press\ any\ key\ to\ restart\r \b, Microsoft Windows XP Bootloader
665
+ # DOS names like NTLDR,CMLDR,$LDR$ are 8 right space padded bytes+3 bytes
666
+ >>>>417 ubyte&0xDF >0
667
+ >>>>>417 string x %-.5s
668
+ >>>>>>422 ubyte&0xDF >0
669
+ >>>>>>>422 string x \b%-.3s
670
+ >>>>>425 ubyte&0xDF >0
671
+ >>>>>>425 string >\ \b.%-.3s
672
+ #
673
+ >>>>371 ubyte >0x20
674
+ >>>>>368 ubyte&0xDF >0
675
+ >>>>>>368 string x %-.5s
676
+ >>>>>>>373 ubyte&0xDF >0
677
+ >>>>>>>>373 string x \b%-.3s
678
+ >>>>>>376 ubyte&0xDF >0
679
+ >>>>>>>376 string x \b.%-.3s
680
+ #
681
+ >430 string NTLDR\ nicht\ gefunden\xFF\r\n
682
+ >>453 string Datentr\204gerfehler\xFF\r\n
683
+ >>>473 string Neustart\ mit\ beliebiger\ Taste\r \b, Microsoft Windows XP Bootloader (german)
684
+ >>>>417 ubyte&0xDF >0
685
+ >>>>>417 string x %-.5s
686
+ >>>>>>422 ubyte&0xDF >0
687
+ >>>>>>>422 string x \b%-.3s
688
+ >>>>>425 ubyte&0xDF >0
689
+ >>>>>>425 string >\ \b.%-.3s
690
+ # offset variant
691
+ >>>>379 string \0
692
+ >>>>>368 ubyte&0xDF >0
693
+ >>>>>>368 string x %-.5s
694
+ >>>>>>>373 ubyte&0xDF >0
695
+ >>>>>>>>373 string x \b%-.3s
696
+ #
697
+ >430 string NTLDR\ fehlt\xFF\r\n
698
+ >>444 string Datentr\204gerfehler\xFF\r\n
699
+ >>>464 string Neustart\ mit\ beliebiger\ Taste\r \b, Microsoft Windows XP Bootloader (2.german)
700
+ >>>>417 ubyte&0xDF >0
701
+ >>>>>417 string x %-.5s
702
+ >>>>>>422 ubyte&0xDF >0
703
+ >>>>>>>422 string x \b%-.3s
704
+ >>>>>425 ubyte&0xDF >0
705
+ >>>>>>425 string >\ \b.%-.3s
706
+ # variant
707
+ >>>>371 ubyte >0x20
708
+ >>>>>368 ubyte&0xDF >0
709
+ >>>>>>368 string x %-.5s
710
+ >>>>>>>373 ubyte&0xDF >0
711
+ >>>>>>>>373 string x \b%-.3s
712
+ >>>>>>376 ubyte&0xDF >0
713
+ >>>>>>>376 string x \b.%-.3s
714
+ #
715
+ >430 string NTLDR\ fehlt\xFF\r\n
716
+ >>444 string Medienfehler\xFF\r\n
717
+ >>>459 string Neustart:\ Taste\ dr\201cken\r \b, Microsoft Windows XP Bootloader (3.german)
718
+ >>>>371 ubyte >0x20
719
+ >>>>>368 ubyte&0xDF >0
720
+ >>>>>>368 string x %-.5s
721
+ >>>>>>>373 ubyte&0xDF >0
722
+ >>>>>>>>373 string x \b%-.3s
723
+ >>>>>>376 ubyte&0xDF >0
724
+ >>>>>>>376 string x \b.%-.3s
725
+ # variant
726
+ >>>>417 ubyte&0xDF >0
727
+ >>>>>417 string x %-.5s
728
+ >>>>>>422 ubyte&0xDF >0
729
+ >>>>>>>422 string x \b%-.3s
730
+ >>>>>425 ubyte&0xDF >0
731
+ >>>>>>425 string >\ \b.%-.3s
732
+ #
733
+ >430 string Datentr\204ger\ entfernen\xFF\r\n
734
+ >>454 string Medienfehler\xFF\r\n
735
+ >>>469 string Neustart:\ Taste\ dr\201cken\r \b, Microsoft Windows XP Bootloader (4.german)
736
+ >>>>379 string \0
737
+ >>>>>368 ubyte&0xDF >0
738
+ >>>>>>368 string x %-.5s
739
+ >>>>>>>373 ubyte&0xDF >0
740
+ >>>>>>>>373 string x \b%-.3s
741
+ >>>>>>376 ubyte&0xDF >0
742
+ >>>>>>>376 string x \b.%-.3s
743
+ # variant
744
+ >>>>417 ubyte&0xDF >0
745
+ >>>>>417 string x %-.5s
746
+ >>>>>>422 ubyte&0xDF >0
747
+ >>>>>>>422 string x \b%-.3s
748
+ >>>>>425 ubyte&0xDF >0
749
+ >>>>>>425 string >\ \b.%-.3s
750
+ #
751
+
752
+ #>3 string NTFS\ \ \ \040
753
+ >389 string Fehler\ beim\ Lesen\040
754
+ >>407 string des\ Datentr\204gers
755
+ >>>426 string NTLDR\ fehlt
756
+ >>>>440 string NTLDR\ ist\ komprimiert
757
+ >>>>>464 string Neustart\ mit\ Strg+Alt+Entf\r \b, Microsoft Windows XP Bootloader NTFS (german)
758
+ #>3 string NTFS\ \ \ \040
759
+ >313 string A\ disk\ read\ error\ occurred.\r
760
+ >>345 string A\ kernel\ file\ is\ missing\040
761
+ >>>370 string from\ the\ disk.\r
762
+ >>>>484 string NTLDR\ is\ compressed
763
+ >>>>>429 string Insert\ a\ system\ diskette\040
764
+ >>>>>>454 string and\ restart\r\nthe\ system.\r \b, Microsoft Windows XP Bootloader NTFS
765
+ # DOS loader variants different languages,offsets
766
+ >472 ubyte&0xDF >0
767
+ >>389 string Invalid\ system\ disk\xFF\r\n
768
+ >>>411 string Disk\ I/O\ error
769
+ >>>>428 string Replace\ the\ disk,\ and\040
770
+ >>>>>455 string press\ any\ key \b, Microsoft Windows 98 Bootloader
771
+ #IO.SYS
772
+ >>>>>>472 ubyte&0xDF >0
773
+ >>>>>>>472 string x \b %-.2s
774
+ >>>>>>>>474 ubyte&0xDF >0
775
+ >>>>>>>>>474 string x \b%-.5s
776
+ >>>>>>>>>>479 ubyte&0xDF >0
777
+ >>>>>>>>>>>479 string x \b%-.1s
778
+ >>>>>>>480 ubyte&0xDF >0
779
+ >>>>>>>>480 string x \b.%-.3s
780
+ #MSDOS.SYS
781
+ >>>>>>>483 ubyte&0xDF >0 \b+
782
+ >>>>>>>>483 string x \b%-.5s
783
+ >>>>>>>>>488 ubyte&0xDF >0
784
+ >>>>>>>>>>488 string x \b%-.3s
785
+ >>>>>>>>491 ubyte&0xDF >0
786
+ >>>>>>>>>491 string x \b.%-.3s
787
+ #
788
+ >>390 string Invalid\ system\ disk\xFF\r\n
789
+ >>>412 string Disk\ I/O\ error\xFF\r\n
790
+ >>>>429 string Replace\ the\ disk,\ and\040
791
+ >>>>>451 string then\ press\ any\ key\r \b, Microsoft Windows 98 Bootloader
792
+ >>388 string Ungueltiges\ System\ \xFF\r\n
793
+ >>>410 string E/A-Fehler\ \ \ \ \xFF\r\n
794
+ >>>>427 string Datentraeger\ wechseln\ und\040
795
+ >>>>>453 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (german)
796
+ #WINBOOT.SYS only not spaces (0xDF)
797
+ >>>>>>497 ubyte&0xDF >0
798
+ >>>>>>>497 string x %-.5s
799
+ >>>>>>>>502 ubyte&0xDF >0
800
+ >>>>>>>>>502 string x \b%-.1s
801
+ >>>>>>>>>>503 ubyte&0xDF >0
802
+ >>>>>>>>>>>503 string x \b%-.1s
803
+ >>>>>>>>>>>>504 ubyte&0xDF >0
804
+ >>>>>>>>>>>>>504 string x \b%-.1s
805
+ >>>>>>505 ubyte&0xDF >0
806
+ >>>>>>>505 string x \b.%-.3s
807
+ #IO.SYS
808
+ >>>>>>472 ubyte&0xDF >0 or
809
+ >>>>>>>472 string x \b %-.2s
810
+ >>>>>>>>474 ubyte&0xDF >0
811
+ >>>>>>>>>474 string x \b%-.5s
812
+ >>>>>>>>>>479 ubyte&0xDF >0
813
+ >>>>>>>>>>>479 string x \b%-.1s
814
+ >>>>>>>480 ubyte&0xDF >0
815
+ >>>>>>>>480 string x \b.%-.3s
816
+ #MSDOS.SYS
817
+ >>>>>>>483 ubyte&0xDF >0 \b+
818
+ >>>>>>>>483 string x \b%-.5s
819
+ >>>>>>>>>488 ubyte&0xDF >0
820
+ >>>>>>>>>>488 string x \b%-.3s
821
+ >>>>>>>>491 ubyte&0xDF >0
822
+ >>>>>>>>>491 string x \b.%-.3s
823
+ #
824
+ >>390 string Ungueltiges\ System\ \xFF\r\n
825
+ >>>412 string E/A-Fehler\ \ \ \ \xFF\r\n
826
+ >>>>429 string Datentraeger\ wechseln\ und\040
827
+ >>>>>455 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (German)
828
+ #WINBOOT.SYS only not spaces (0xDF)
829
+ >>>>>>497 ubyte&0xDF >0
830
+ >>>>>>>497 string x %-.7s
831
+ >>>>>>>>504 ubyte&0xDF >0
832
+ >>>>>>>>>504 string x \b%-.1s
833
+ >>>>>>505 ubyte&0xDF >0
834
+ >>>>>>>505 string x \b.%-.3s
835
+ #IO.SYS
836
+ >>>>>>472 ubyte&0xDF >0 or
837
+ >>>>>>>472 string x \b %-.2s
838
+ >>>>>>>>474 ubyte&0xDF >0
839
+ >>>>>>>>>474 string x \b%-.6s
840
+ >>>>>>>480 ubyte&0xDF >0
841
+ >>>>>>>>480 string x \b.%-.3s
842
+ #MSDOS.SYS
843
+ >>>>>>>483 ubyte&0xDF >0 \b+
844
+ >>>>>>>>483 string x \b%-.5s
845
+ >>>>>>>>>488 ubyte&0xDF >0
846
+ >>>>>>>>>>488 string x \b%-.3s
847
+ >>>>>>>>491 ubyte&0xDF >0
848
+ >>>>>>>>>491 string x \b.%-.3s
849
+ #
850
+ >>389 string Ungueltiges\ System\ \xFF\r\n
851
+ >>>411 string E/A-Fehler\ \ \ \ \xFF\r\n
852
+ >>>>428 string Datentraeger\ wechseln\ und\040
853
+ >>>>>454 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (GERMAN)
854
+ # DOS names like IO.SYS,WINBOOT.SYS,MSDOS.SYS,WINBOOT.INI are 8 right space padded bytes+3 bytes
855
+ >>>>>>472 string x %-.2s
856
+ >>>>>>>474 ubyte&0xDF >0
857
+ >>>>>>>>474 string x \b%-.5s
858
+ >>>>>>>>479 ubyte&0xDF >0
859
+ >>>>>>>>>479 string x \b%-.1s
860
+ >>>>>>480 ubyte&0xDF >0
861
+ >>>>>>>480 string x \b.%-.3s
862
+ >>>>>>483 ubyte&0xDF >0 \b+
863
+ >>>>>>>483 string x \b%-.5s
864
+ >>>>>>>488 ubyte&0xDF >0
865
+ >>>>>>>>488 string x \b%-.2s
866
+ >>>>>>>>490 ubyte&0xDF >0
867
+ >>>>>>>>>490 string x \b%-.1s
868
+ >>>>>>>491 ubyte&0xDF >0
869
+ >>>>>>>>491 string x \b.%-.3s
870
+ >479 ubyte&0xDF >0
871
+ >>416 string Kein\ System\ oder\040
872
+ >>>433 string Laufwerksfehler
873
+ >>>>450 string Wechseln\ und\ Taste\ dr\201cken \b, Microsoft DOS Bootloader (german)
874
+ #IO.SYS
875
+ >>>>>479 string x \b %-.2s
876
+ >>>>>>481 ubyte&0xDF >0
877
+ >>>>>>>481 string x \b%-.6s
878
+ >>>>>487 ubyte&0xDF >0
879
+ >>>>>>487 string x \b.%-.3s
880
+ #MSDOS.SYS
881
+ >>>>>>490 ubyte&0xDF >0 \b+
882
+ >>>>>>>490 string x \b%-.5s
883
+ >>>>>>>>495 ubyte&0xDF >0
884
+ >>>>>>>>>495 string x \b%-.3s
885
+ >>>>>>>498 ubyte&0xDF >0
886
+ >>>>>>>>498 string x \b.%-.3s
887
+ #
888
+ >376 search/41 Non-System\ disk\ or\040
889
+ >>395 search/41 disk\ error\r
890
+ >>>407 search/41 Replace\ and\040
891
+ >>>>419 search/41 press\ \b,
892
+ >>>>419 search/41 strike\ \b, old
893
+ >>>>426 search/41 any\ key\ when\ ready\r MS or PC-DOS bootloader
894
+ #449 Disk\ Boot\ failure\r MS 3.21
895
+ #466 Boot\ Failure\r MS 3.30
896
+ >>>>>468 search/18 \0
897
+ #IO.SYS,IBMBIO.COM
898
+ >>>>>>&0 string x \b %-.2s
899
+ >>>>>>>&-20 ubyte&0xDF >0
900
+ >>>>>>>>&-1 string x \b%-.4s
901
+ >>>>>>>>>&-16 ubyte&0xDF >0
902
+ >>>>>>>>>>&-1 string x \b%-.2s
903
+ >>>>>>&8 ubyte&0xDF >0 \b.
904
+ >>>>>>>&-1 string x \b%-.3s
905
+ #MSDOS.SYS,IBMDOS.COM
906
+ >>>>>>&11 ubyte&0xDF >0 \b+
907
+ >>>>>>>&-1 string x \b%-.5s
908
+ >>>>>>>>&-6 ubyte&0xDF >0
909
+ >>>>>>>>>&-1 string x \b%-.1s
910
+ >>>>>>>>>>&-5 ubyte&0xDF >0
911
+ >>>>>>>>>>>&-1 string x \b%-.2s
912
+ >>>>>>>&7 ubyte&0xDF >0 \b.
913
+ >>>>>>>>&-1 string x \b%-.3s
914
+ >441 string Cannot\ load\ from\ harddisk.\n\r
915
+ >>469 string Insert\ Systemdisk\040
916
+ >>>487 string and\ press\ any\ key.\n\r \b, MS (2.11) DOS bootloader
917
+ #>43 string \224R-LOADER\ \ SYS =label
918
+ >54 string SYS
919
+ >>324 string VASKK
920
+ >>>495 string NEWLDR\0 \b, DR-DOS Bootloader (LOADER.SYS)
921
+ #
922
+ >98 string Press\ a\ key\ to\ retry\0\r
923
+ >>120 string Cannot\ find\ file\ \0\r
924
+ >>>139 string Disk\ read\ error\0\r
925
+ >>>>156 string Loading\ ...\0 \b, DR-DOS (3.41) Bootloader
926
+ #DRBIOS.SYS
927
+ >>>>>44 ubyte&0xDF >0
928
+ >>>>>>44 string x \b %-.6s
929
+ >>>>>>>50 ubyte&0xDF >0
930
+ >>>>>>>>50 string x \b%-.2s
931
+ >>>>>>52 ubyte&0xDF >0
932
+ >>>>>>>52 string x \b.%-.3s
933
+ #
934
+ >70 string IBMBIO\ \ COM
935
+ >>472 string Cannot\ load\ DOS!\040
936
+ >>>489 string Any\ key\ to\ retry \b, DR-DOS Bootloader
937
+ >>471 string Cannot\ load\ DOS\040
938
+ >>487 string press\ key\ to\ retry \b, Open-DOS Bootloader
939
+ #??
940
+ >444 string KERNEL\ \ SYS
941
+ >>314 string BOOT\ error! \b, FREE-DOS Bootloader
942
+ >499 string KERNEL\ \ SYS
943
+ >>305 string BOOT\ err!\0 \b, Free-DOS Bootloader
944
+ >449 string KERNEL\ \ SYS
945
+ >>319 string BOOT\ error! \b, FREE-DOS 0.5 Bootloader
946
+ #
947
+ >449 string Loading\ FreeDOS
948
+ >>0x1AF ulelong >0 \b, FREE-DOS 0.95,1.0 Bootloader
949
+ >>>497 ubyte&0xDF >0
950
+ >>>>497 string x \b %-.6s
951
+ >>>>>503 ubyte&0xDF >0
952
+ >>>>>>503 string x \b%-.1s
953
+ >>>>>>>504 ubyte&0xDF >0
954
+ >>>>>>>>504 string x \b%-.1s
955
+ >>>>505 ubyte&0xDF >0
956
+ >>>>>505 string x \b.%-.3s
957
+ #
958
+ >331 string Error!.0 \b, FREE-DOS 1.0 bootloader
959
+ #
960
+ >125 string Loading\ FreeDOS...\r
961
+ >>311 string BOOT\ error!\r \b, FREE-DOS bootloader
962
+ >>>441 ubyte&0xDF >0
963
+ >>>>441 string x \b %-.6s
964
+ >>>>>447 ubyte&0xDF >0
965
+ >>>>>>447 string x \b%-.1s
966
+ >>>>>>>448 ubyte&0xDF >0
967
+ >>>>>>>>448 string x \b%-.1s
968
+ >>>>449 ubyte&0xDF >0
969
+ >>>>>449 string x \b.%-.3s
970
+ >124 string FreeDOS\0
971
+ >>331 string \ err\0 \b, FREE-DOS BETa 0.9 Bootloader
972
+ # DOS names like KERNEL.SYS,KERNEL16.SYS,KERNEL32.SYS,METAKERN.SYS are 8 right space padded bytes+3 bytes
973
+ >>>497 ubyte&0xDF >0
974
+ >>>>497 string x \b %-.6s
975
+ >>>>>503 ubyte&0xDF >0
976
+ >>>>>>503 string x \b%-.1s
977
+ >>>>>>>504 ubyte&0xDF >0
978
+ >>>>>>>>504 string x \b%-.1s
979
+ >>>>505 ubyte&0xDF >0
980
+ >>>>>505 string x \b.%-.3s
981
+ >>333 string \ err\0 \b, FREE-DOS BEta 0.9 Bootloader
982
+ >>>497 ubyte&0xDF >0
983
+ >>>>497 string x \b %-.6s
984
+ >>>>>503 ubyte&0xDF >0
985
+ >>>>>>503 string x \b%-.1s
986
+ >>>>>>>504 ubyte&0xDF >0
987
+ >>>>>>>>504 string x \b%-.1s
988
+ >>>>505 ubyte&0xDF >0
989
+ >>>>>505 string x \b.%-.3s
990
+ >>334 string \ err\0 \b, FREE-DOS Beta 0.9 Bootloader
991
+ >>>497 ubyte&0xDF >0
992
+ >>>>497 string x \b %-.6s
993
+ >>>>>503 ubyte&0xDF >0
994
+ >>>>>>503 string x \b%-.1s
995
+ >>>>>>>504 ubyte&0xDF >0
996
+ >>>>>>>>504 string x \b%-.1s
997
+ >>>>505 ubyte&0xDF >0
998
+ >>>>>505 string x \b.%-.3s
999
+ >336 string Error!\040
1000
+ >>343 string Hit\ a\ key\ to\ reboot. \b, FREE-DOS Beta 0.9sr1 Bootloader
1001
+ >>>497 ubyte&0xDF >0
1002
+ >>>>497 string x \b %-.6s
1003
+ >>>>>503 ubyte&0xDF >0
1004
+ >>>>>>503 string x \b%-.1s
1005
+ >>>>>>>504 ubyte&0xDF >0
1006
+ >>>>>>>>504 string x \b%-.1s
1007
+ >>>>505 ubyte&0xDF >0
1008
+ >>>>>505 string x \b.%-.3s
1009
+ # added by Joerg Jenderek
1010
+ # https://www.visopsys.org/
1011
+ # https://partitionlogic.org.uk/
1012
+ # OEM-ID=Visopsys
1013
+ >478 ulelong 0
1014
+ >>(1.b+326) string I/O\ Error\ reading\040
1015
+ >>>(1.b+344) string Visopsys\ loader\r
1016
+ >>>>(1.b+361) string Press\ any\ key\ to\ continue.\r \b, Visopsys loader
1017
+ # http://alexfru.chat.ru/epm.html#bootprog
1018
+ >494 ubyte >0x4D
1019
+ >>495 string >E
1020
+ >>>495 string <S
1021
+ #OEM-ID is not reliable
1022
+ >>>>3 string BootProg
1023
+ # It just looks for a program file name at the root directory
1024
+ # and loads corresponding file with following execution.
1025
+ # DOS names like STARTUP.BIN,STARTUPC.COM,STARTUPE.EXE are 8 right space padded bytes+3 bytes
1026
+ >>>>499 ubyte&0xDF >0 \b, COM/EXE Bootloader
1027
+ >>>>>499 use DOS-filename
1028
+ #If the boot sector fails to read any other sector,
1029
+ #it prints a very short message ("RE") to the screen and hangs the computer.
1030
+ #If the boot sector fails to find needed program in the root directory,
1031
+ #it also hangs with another message ("NF").
1032
+ >>>>>492 string RENF \b, FAT (12 bit)
1033
+ >>>>>495 string RENF \b, FAT (16 bit)
1034
+ #If the boot sector fails to read any other sector,
1035
+ #it prints a very short message ("RE") to the screen and hangs the computer.
1036
+ # x86 bootloader end
1037
+
1038
+ # added by Joerg Jenderek at Feb 2013 according to https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
1039
+ # and https://en.wikipedia.org/wiki/File_Allocation_Table#FS_Information_Sector
1040
+ >0 string RRaA
1041
+ >>0x1E4 string rrAa \b, FSInfosector
1042
+ #>>0x1FC uleshort =0 SHOULD BE ZERO
1043
+ >>>0x1E8 ulelong <0xffffffff \b, %u free clusters
1044
+ >>>0x1EC ulelong <0xffffffff \b, last allocated cluster %u
1045
+
1046
+ # updated by Joerg Jenderek at Sep 2007
1047
+ >3 ubyte 0
1048
+ #no active flag
1049
+ >>446 ubyte 0
1050
+ # partition 1 not empty
1051
+ >>>450 ubyte >0
1052
+ # partitions 3,4 empty
1053
+ >>>>482 ubyte 0
1054
+ >>>>>498 ubyte 0
1055
+ # partition 2 ID=0,5,15
1056
+ >>>>>>466 ubyte <0x10
1057
+ >>>>>>>466 ubyte 0x05 \b, extended partition table
1058
+ >>>>>>>466 ubyte 0x0F \b, extended partition table (LBA)
1059
+ >>>>>>>466 ubyte 0x0 \b, extended partition table (last)
1060
+
1061
+ # DOS x86 sector separated and moved from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
1062
+
1063
+ >0x200 lelong 0x82564557 \b, BSD disklabel
1064
+
1065
+ # by Joerg Jenderek at Apr 2013
1066
+ # Print the DOS filenames from directory entry form with 8 right space padded bytes + 3 bytes for extension
1067
+ # like IO.SYS. MSDOS.SYS , KERNEL.SYS , DRBIO.SYS
1068
+ 0 name DOS-filename
1069
+ # space=0x20 (00100000b) means empty
1070
+ >0 ubyte&0xDF >0
1071
+ >>0 ubyte x \b%c
1072
+ >>>1 ubyte&0xDF >0
1073
+ >>>>1 ubyte x \b%c
1074
+ >>>>>2 ubyte&0xDF >0
1075
+ >>>>>>2 ubyte x \b%c
1076
+ >>>>>>>3 ubyte&0xDF >0
1077
+ >>>>>>>>3 ubyte x \b%c
1078
+ >>>>>>>>>4 ubyte&0xDF >0
1079
+ >>>>>>>>>>4 ubyte x \b%c
1080
+ >>>>>>>>>>>5 ubyte&0xDF >0
1081
+ >>>>>>>>>>>>5 ubyte x \b%c
1082
+ >>>>>>>>>>>>>6 ubyte&0xDF >0
1083
+ >>>>>>>>>>>>>>6 ubyte x \b%c
1084
+ >>>>>>>>>>>>>>>7 ubyte&0xDF >0
1085
+ >>>>>>>>>>>>>>>>7 ubyte x \b%c
1086
+ # DOS filename extension
1087
+ >>8 ubyte&0xDF >0 \b.
1088
+ >>>8 ubyte x \b%c
1089
+ >>>>9 ubyte&0xDF >0
1090
+ >>>>>9 ubyte x \b%c
1091
+ >>>>>>10 ubyte&0xDF >0
1092
+ >>>>>>>10 ubyte x \b%c
1093
+ # Print 2 following DOS filenames from directory entry form
1094
+ # like IO.SYS+MSDOS.SYS or ibmbio.com+ibmdos.com
1095
+ 0 name 2xDOS-filename
1096
+ # display 1 space
1097
+ >0 ubyte x \b
1098
+ >0 use DOS-filename
1099
+ >11 ubyte x \b+
1100
+ >11 use DOS-filename
1101
+
1102
+ # https://en.wikipedia.org/wiki/Master_boot_record#PTE
1103
+ # display standard partition table
1104
+ 0 name partition-table
1105
+ #>0 ubyte x PARTITION-TABLE
1106
+ # test and display 1st til 4th partition table entry
1107
+ >0 use partition-entry-test
1108
+ >16 use partition-entry-test
1109
+ >32 use partition-entry-test
1110
+ >48 use partition-entry-test
1111
+ # test for entry of partition table
1112
+ 0 name partition-entry-test
1113
+ # partition type ID > 0
1114
+ >4 ubyte >0
1115
+ # active flag 0
1116
+ >>0 ubyte 0
1117
+ >>>0 use partition-entry
1118
+ # active flag 0x80, 0x81, ...
1119
+ >>0 ubyte >0x7F
1120
+ >>>0 use partition-entry
1121
+ # Print entry of partition table
1122
+ 0 name partition-entry
1123
+ # partition type ID > 0
1124
+ >4 ubyte >0 \b; partition
1125
+ >>64 leshort 0xAA55 1
1126
+ >>48 leshort 0xAA55 2
1127
+ >>32 leshort 0xAA55 3
1128
+ >>16 leshort 0xAA55 4
1129
+ >>4 ubyte x : ID=%#x
1130
+ >>0 ubyte&0x80 0x80 \b, active
1131
+ >>0 ubyte >0x80 %#x
1132
+ >>1 ubyte x \b, start-CHS (
1133
+ >>1 use partition-chs
1134
+ >>5 ubyte x \b), end-CHS (
1135
+ >>5 use partition-chs
1136
+ >>8 ulelong x \b), startsector %u
1137
+ >>12 ulelong x \b, %u sectors
1138
+ # Print cylinder,head,sector (CHS) of partition entry
1139
+ 0 name partition-chs
1140
+ # cylinder
1141
+ >1 ubyte x \b0x
1142
+ >1 ubyte&0xC0 0x40 \b1
1143
+ >1 ubyte&0xC0 0x80 \b2
1144
+ >1 ubyte&0xC0 0xC0 \b3
1145
+ >2 ubyte x \b%x
1146
+ # head
1147
+ >0 ubyte x \b,%u
1148
+ # sector
1149
+ >1 ubyte&0x3F x \b,%u
1150
+
1151
+ # FATX
1152
+ 0 string FATX FATX filesystem data
1153
+
1154
+ # romfs filesystems - Juan Cespedes <cespedes@debian.org>
1155
+ 0 string -rom1fs- romfs filesystem, version 1
1156
+ >8 belong x %d bytes,
1157
+ >16 string x named %s.
1158
+
1159
+ # netboot image - Juan Cespedes <cespedes@debian.org>
1160
+ 0 lelong 0x1b031336L Netboot image,
1161
+ >4 lelong&0xFFFFFF00 0
1162
+ >>4 lelong&0x100 0x000 mode 2
1163
+ >>4 lelong&0x100 0x100 mode 3
1164
+ >4 lelong&0xFFFFFF00 !0 unknown mode
1165
+
1166
+ 0x18b string OS/2 OS/2 Boot Manager
1167
+
1168
+ # updated by Joerg Jenderek at Oct 2008 and Sep 2012
1169
+ # https://syslinux.zytor.com/iso.php
1170
+ # tested with versions 1.47,1.48,1.49,1.50,1.62,1.76,2.00,2.10;3.00,3.11,3.31,;3.70,3.71,3.73,3.75,3.80,3.82,3.84,3.86,4.01,4.03 and 4.05
1171
+ # assembler instructions: cli;jmp 0:7Cyy (yy=0x40,0x5e,0x6c,0x6e,0x77);nop;nop
1172
+ 0 ulequad&0x909000007cc0eafa 0x909000007c40eafa
1173
+ >631 search/689 ISOLINUX\ isolinux Loader
1174
+ >>&0 string x (version %-4.4s)
1175
+ # https://syslinux.zytor.com/pxe.php
1176
+ # assembler instructions: jmp 7C05
1177
+ 0 ulelong 0x007c05ea pxelinux loader (version 2.13 or older)
1178
+ # assembler instructions: pushfd;pushad
1179
+ 0 ulelong 0x60669c66 pxelinux loader
1180
+ # assembler instructions: jmp 05
1181
+ 0 ulelong 0xc00005ea pxelinux loader (version 3.70 or newer)
1182
+ # https://syslinux.zytor.com/wiki/index.php/SYSLINUX
1183
+ 0 string LDLINUX\ SYS\ SYSLINUX loader
1184
+ >12 string x (older version %-4.4s)
1185
+ 0 string \r\nSYSLINUX\ SYSLINUX loader
1186
+ >11 string x (version %-4.4s)
1187
+ # syslinux updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
1188
+ # assembler instructions: jmp yy (yy=0x3c,0x58);nop;"SYSLINUX"
1189
+ 0 ulelong&0x80909bEB 0x009018EB
1190
+ # OEM-ID not always "SYSLINUX"
1191
+ >434 search/47 Boot\ failed
1192
+ # followed by \r\n\0 or :\
1193
+ >>482 search/132 \0LDLINUX\ SYS Syslinux bootloader (version 2.13 or older)
1194
+ >>1 ubyte 0x58 Syslinux bootloader (version 3.0-3.9)
1195
+ >459 search/30 Boot\ error\r\n\0
1196
+ >>1 ubyte 0x58 Syslinux bootloader (version 3.10 or newer)
1197
+ # SYSLINUX MBR updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
1198
+ # assembler instructions: mov di,0600h;mov cx,0100h
1199
+ 16 search/4 \xbf\x00\x06\xb9\x00\x01
1200
+ # to display SYSLINUX MBR (36) before old DOS/MBR boot sector one with partition table (strength=50+21)
1201
+ !:strength +36
1202
+ >94 search/249 Missing\ operating\ system
1203
+ # followed by \r for versions older 3.35 , .\r for versions newer 3.52 and point for other
1204
+ # skip Ranish MBR
1205
+ >>408 search/4 HD1/\0
1206
+ >>408 default x
1207
+ >>>250 search/118 \0Operating\ system\ load SYSLINUX MBR
1208
+ # followed by "ing " or space
1209
+ >>>>292 search/98 error
1210
+ >>>>>&0 string \r (version 3.35 or older)
1211
+ >>>>>&0 string .\r (version 3.52 or newer)
1212
+ >>>>>&0 default x (version 3.36-3.51 )
1213
+ >368 search/106 \0Disk\ error\ on\ boot\r\n SYSLINUX GPT-MBR
1214
+ >>156 search/10 \0Boot\ partition\ not\ found\r\n
1215
+ >>>270 search/10 \0OS\ not\ bootable\r\n (version 3.86 or older)
1216
+ >>174 search/10 \0Missing\ OS\r\n
1217
+ >>>189 search/10 \0Multiple\ active\ partitions\r\n (version 4.00 or newer)
1218
+ # SYSLINUX END
1219
+
1220
+ # NetBSD mbr variants (master-boot-code version 1.22) added by Joerg Jenderek at Nov 2012
1221
+ # assembler instructions: xor ax,ax;mov ax,ss;mov sp,0x7c00;mov ax,
1222
+ 0 ubequad 0x31c08ed0bc007c8e
1223
+ # mbr_bootsel magic before partition table not reliable with small ipl fragments
1224
+ #>444 uleshort 0xb5e1
1225
+ >0004 uleshort x
1226
+ # ERRorTeXT
1227
+ >>181 search/166 Error\ \0\r\n NetBSD mbr
1228
+ # NT Drive Serial Number https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DS
1229
+ >>>0x1B8 ubelong >0 \b,Serial %#-.8x
1230
+ # BOOTSEL definitions contains assembler instructions: int 0x13;pop dx;push dx;push dx
1231
+ >>>0xbb search/71 \xcd\x13\x5a\x52\x52 \b,bootselector
1232
+ # BOOT_EXTENDED definitions contains assembler instructions:
1233
+ # xchg ecx,edx;addl ecx,edx;movw lba_info,si;movb 0x42,ah;pop dx;push dx;int 0x13
1234
+ >>>0x96 search/1 \x66\x87\xca\x66\x01\xca\x66\x89\x16\x3a\x07\xbe\x32\x07\xb4\x42\x5a\x52\xcd\x13 \b,boot extended
1235
+ # COM_PORT_VAL definitions contains assembler instructions: outb al,dx;add 5,dl;inb %dx;test 0x40,al
1236
+ >>>0x130 search/55 \xee\x80\xc2\x05\xec\xa8\x40 \b,serial IO
1237
+ # not TERSE_ERROR
1238
+ >>>196 search/106 No\ active\ partition\0
1239
+ >>>>&0 string Disk\ read\ error\0
1240
+ >>>>>&0 string No\ operating\ system\0 \b,verbose
1241
+ # not NO_CHS definitions contains assembler instructions: pop dx;push dx;movb $8,ah;int0x13
1242
+ >>>0x7d search/7 \x5a\x52\xb4\x08\xcd\x13 \b,CHS
1243
+ # not NO_LBA_CHECK definitions contains assembler instructions: movw 0x55aa,bx;movb 0x41,ah;pop dx;push dx;int 0x13
1244
+ >>>0xa4 search/84 \xbb\xaa\x55\xb4\x41\x5a\x52\xcd\x13 \b,LBA-check
1245
+ # assembler instructions: movw nametab,bx
1246
+ >>>0x26 search/21 \xBB\x94\x07
1247
+ # not NO_BANNER definitions contains assembler instructions: mov banner,si;call message_crlf
1248
+ >>>>&-9 ubequad&0xBE00f0E800febb94 0xBE0000E80000bb94
1249
+ >>>>>181 search/166 Error\ \0
1250
+ # "a: disk" , "Fn: diskn" or "NetBSD MBR boot"
1251
+ >>>>>>&3 string x \b,"%s"
1252
+ >>>446 use partition-table
1253
+ # Andrea Mazzoleni AdvanceCD mbr loader of http://advancemame.sourceforge.net/boot-readme.html
1254
+ # added by Joerg Jenderek at Nov 2012 for versions 1.3 - 1.4
1255
+ # assembler instructions: jmp short 0x58;nop;ASCII
1256
+ 0 ubequad&0xeb58908000000000 0xeb58900000000000
1257
+ # assembler instructions: cli;xor ax,ax;mov ds,ax;mov es,ax;mov ss,
1258
+ >(1.b+2) ubequad 0xfa31c08ed88ec08e
1259
+ # Error messages at end of code
1260
+ >>376 string No\ operating\ system\r\n\0
1261
+ >>>398 string Disk\ error\r\n\0FDD\0HDD\0
1262
+ >>>>419 string \ EBIOS\r\n\0 AdvanceMAME mbr
1263
+
1264
+ # Neil Turton mbr loader variant of https://www.chiark.greenend.org.uk/~neilt/mbr/
1265
+ # added by Joerg Jenderek at Mar 2011 for versions 1.0.0 - 1.1.11
1266
+ # for 1st version assembler instructions: cld;xor ax,ax;mov DS,ax;MOV ES,AX;mov SI,
1267
+ # or cld;xor ax,ax;mov SS,ax;XOR SP,SP;mov DS,
1268
+ 0 ulequad&0xcE1b40D48EC031FC 0x8E0000D08EC031FC
1269
+ # pointer to the data starting with Neil Turton signature string
1270
+ >(0x1BC.s) string NDTmbr
1271
+ >>&-14 string 1234F\0 Turton mbr (
1272
+ # parameters also viewed by install-mbr --list
1273
+ >>>(0x1BC.s+7) ubyte x \b%u<=
1274
+ >>>(0x1BC.s+9) ubyte x \bVersion<=%u
1275
+ #>>>(0x1BC.s+8) ubyte x asm_flag_%x
1276
+ >>>(0x1BC.s+8) ubyte&1 1 \b,Y2K-Fix
1277
+ # variant used by testdisk of https://www.cgsecurity.org/wiki/Menu_MBRCode
1278
+ >>>(0x1BC.s+8) ubyte&2 2 \b,TestDisk
1279
+ #0x1~1,..,0x8~4,0x10~F,0x80~A enabled
1280
+ #>>>(0x1BC.s+10) ubyte x \b,flags %#x
1281
+ #0x0~1,0x1~2,...,0x3~4,0x4~F,0x7~D default boot
1282
+ #>>>(0x1BC.s+11) ubyte x \b,cfg_def %#x
1283
+ # for older versions
1284
+ >>>(0x1BC.s+9) ubyte <2
1285
+ #>>>>(0x1BC.s+12) ubyte 18 \b,%hhu/18 seconds
1286
+ >>>>(0x1BC.s+12) ubyte !18 \b,%u/18 seconds
1287
+ # floppy A: or B:
1288
+ >>>>(0x1BC.s+13) ubyte <2 \b,floppy %#x
1289
+ >>>>(0x1BC.s+13) ubyte >1
1290
+ # 1st hard disc
1291
+ #>>>>>(0x1BC.s+13) ubyte 0x80 \b,drive %#x
1292
+ # not 1st hard disc
1293
+ >>>>>(0x1BC.s+13) ubyte !0x80 \b,drive %#x
1294
+ # for version >= 2 maximal timeout can be 65534
1295
+ >>>(0x1BC.s+9) ubyte >1
1296
+ #>>>>(0x1BC.s+12) uleshort 18 \b,%u/18 seconds
1297
+ >>>>(0x1BC.s+12) uleshort !18 \b,%u/18 seconds
1298
+ # floppy A: or B:
1299
+ >>>>(0x1BC.s+14) ubyte <2 \b,floppy %#x
1300
+ >>>>(0x1BC.s+14) ubyte >1
1301
+ # 1st hard disc
1302
+ #>>>>>(0x1BC.s+14) ubyte 0x80 \b,drive %#x
1303
+ # not 1st hard disc
1304
+ >>>>>(0x1BC.s+14) ubyte !0x80 \b,drive %#x
1305
+ >>>0 ubyte x \b)
1306
+
1307
+ # added by Joerg Jenderek
1308
+ # In the second sector (+0x200) are variables according to grub-0.97/stage2/asm.S or
1309
+ # grub-1.94/kern/i386/pc/startup.S
1310
+ # https://www.gnu.org/software/grub/manual/grub.html#Embedded-data
1311
+ # usual values are marked with comments to get only information of strange GRUB loaders
1312
+ 0x200 uleshort 0x70EA
1313
+ # found only version 3.{1,2}
1314
+ >0x206 ubeshort >0x0300
1315
+ # GRUB version (0.5.)95,0.93,0.94,0.96,0.97 > "00"
1316
+ >>0x212 ubyte >0x29
1317
+ >>>0x213 ubyte >0x29
1318
+ # not iso9660_stage1_5
1319
+ #>>>0 ulelong&0x00BE5652 0x00BE5652
1320
+ >>>>0x213 ubyte >0x29 GRand Unified Bootloader
1321
+ # config_file for stage1_5 is 0xffffffff + default "/boot/grub/stage2"
1322
+ >>>>0x217 ubyte 0xFF stage1_5
1323
+ >>>>0x217 ubyte <0xFF stage2
1324
+ >>>>0x206 ubyte x \b version %u
1325
+ >>>>0x207 ubyte x \b.%u
1326
+ # module_size for 1.94
1327
+ >>>>0x208 ulelong <0xffffff \b, installed partition %u
1328
+ #>>>>0x208 ulelong =0xffffff \b, %lu (default)
1329
+ >>>>0x208 ulelong >0xffffff \b, installed partition %u
1330
+ # GRUB 0.5.95 unofficial
1331
+ >>>>0x20C ulelong&0x2E300000 0x2E300000
1332
+ # 0=stage2 1=ffs 2=e2fs 3=fat 4=minix 5=reiserfs
1333
+ >>>>>0x20C ubyte x \b, identifier %#x
1334
+ #>>>>>0x20D ubyte =0 \b, LBA flag %#x (default)
1335
+ >>>>>0x20D ubyte >0 \b, LBA flag %#x
1336
+ # GRUB version as string
1337
+ >>>>>0x20E string >\0 \b, GRUB version %-s
1338
+ # for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default
1339
+ >>>>>>0x215 ulong 0xffffffff
1340
+ >>>>>>>0x219 string >\0 \b, configuration file %-s
1341
+ >>>>>>0x215 ulong !0xffffffff
1342
+ >>>>>>>0x215 string >\0 \b, configuration file %-s
1343
+ # newer GRUB versions
1344
+ >>>>0x20C ulelong&0x2E300000 !0x2E300000
1345
+ ##>>>>>0x20C ulelong =0 \b, saved entry %d (usual)
1346
+ >>>>>0x20C ulelong >0 \b, saved entry %d
1347
+ # for 1.94 contains kernel image size
1348
+ # for 0.93,0.94,0.96,0.97
1349
+ # 0=stage2 1=ffs 2=e2fs 3=fat 4=minix 5=reiserfs 6=vstafs 7=jfs 8=xfs 9=iso9660 a=ufs2
1350
+ >>>>>0x210 ubyte x \b, identifier %#x
1351
+ # The flag for LBA forcing is in most cases 0
1352
+ #>>>>>0x211 ubyte =0 \b, LBA flag %#x (default)
1353
+ >>>>>0x211 ubyte >0 \b, LBA flag %#x
1354
+ # GRUB version as string
1355
+ >>>>>0x212 string >\0 \b, GRUB version %-s
1356
+ # for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default
1357
+ >>>>>0x217 ulong 0xffffffff
1358
+ >>>>>>0x21b string >\0 \b, configuration file %-s
1359
+ >>>>>0x217 ulong !0xffffffff
1360
+ >>>>>>0x217 string >\0 \b, configuration file %-s
1361
+
1362
+ # DOS x86 sector updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
1363
+ # JuMP short bootcodeoffset NOP assembler instructions will usually be EB xx 90
1364
+ # over BIOS parameter block (BPB)
1365
+ # https://thestarman.pcministry.com/asm/2bytejumps.htm#FWD
1366
+ # older drives may use Near JuMP instruction E9 xx xx
1367
+ # minimal short forward jump found 0x29 for bootloaders or 0x0
1368
+ # maximal short forward jump is 0x7f
1369
+ # OEM-ID is empty or contain readable bytes
1370
+ 0 ulelong&0x804000E9 0x000000E9
1371
+ !:strength +60
1372
+ # mtools-3.9.8/msdos.h
1373
+ # usual values are marked with comments to get only information of strange FAT systems
1374
+ # valid sectorsize must be a power of 2 from 32 to 32768
1375
+ >11 uleshort&0x001f 0
1376
+ >>11 uleshort <32769
1377
+ >>>11 uleshort >31
1378
+ >>>>21 ubyte&0xf0 0xF0
1379
+ >>>>>0 ubyte 0xEB DOS/MBR boot sector
1380
+ >>>>>>1 ubyte x \b, code offset %#x+2
1381
+ >>>>>0 ubyte 0xE9
1382
+ >>>>>>1 uleshort x \b, code offset %#x+3
1383
+ >>>>>3 string >\0 \b, OEM-ID "%-.8s"
1384
+ #http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC
1385
+ >>>>>>8 string IHC \b cached by Windows 9M
1386
+ >>>>>11 uleshort >512 \b, Bytes/sector %u
1387
+ #>>>>>11 uleshort =512 \b, Bytes/sector %u=512 (usual)
1388
+ >>>>>11 uleshort <512 \b, Bytes/sector %u
1389
+ >>>>>13 ubyte >1 \b, sectors/cluster %u
1390
+ #>>>>>13 ubyte =1 \b, sectors/cluster %u (usual on Floppies)
1391
+ # for lazy FAT32 implementation like Transcend digital photo frame PF830
1392
+ >>>>>82 string/c fat32
1393
+ >>>>>>14 uleshort !32 \b, reserved sectors %u
1394
+ #>>>>>>14 uleshort =32 \b, reserved sectors %u (usual Fat32)
1395
+ >>>>>82 string/c !fat32
1396
+ >>>>>>14 uleshort >1 \b, reserved sectors %u
1397
+ #>>>>>>14 uleshort =1 \b, reserved sectors %u (usual FAT12,FAT16)
1398
+ #>>>>>>14 uleshort 0 \b, reserved sectors %u (usual NTFS)
1399
+ >>>>>16 ubyte >2 \b, FATs %u
1400
+ #>>>>>16 ubyte =2 \b, FATs %u (usual)
1401
+ >>>>>16 ubyte =1 \b, FAT %u
1402
+ >>>>>16 ubyte >0
1403
+ >>>>>17 uleshort >0 \b, root entries %u
1404
+ #>>>>>17 uleshort =0 \b, root entries %hu=0 (usual Fat32)
1405
+ >>>>>19 uleshort >0 \b, sectors %u (volumes <=32 MB)
1406
+ #>>>>>19 uleshort =0 \b, sectors %hu=0 (usual Fat32)
1407
+ >>>>>21 ubyte >0xF0 \b, Media descriptor %#x
1408
+ #>>>>>21 ubyte =0xF0 \b, Media descriptor %#x (usual floppy)
1409
+ >>>>>21 ubyte <0xF0 \b, Media descriptor %#x
1410
+ >>>>>22 uleshort >0 \b, sectors/FAT %u
1411
+ #>>>>>22 uleshort =0 \b, sectors/FAT %hu=0 (usual Fat32)
1412
+ >>>>>24 uleshort x \b, sectors/track %u
1413
+ >>>>>26 ubyte >2 \b, heads %u
1414
+ #>>>>>26 ubyte =2 \b, heads %u (usual floppy)
1415
+ >>>>>26 ubyte =1 \b, heads %u
1416
+ # valid only for sector sizes with more then 32 Bytes
1417
+ >>>>>11 uleshort >32
1418
+ # https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Extended_BIOS_Parameter_Block
1419
+ # skip for values 2,2Ah,70h,73h,DFh
1420
+ # and continue for extended boot signature values 0,28h,29h,80h
1421
+ >>>>>>38 ubyte&0x56 =0
1422
+ >>>>>>>28 ulelong >0 \b, hidden sectors %u
1423
+ #>>>>>>>28 ulelong =0 \b, hidden sectors %u (usual floppy)
1424
+ >>>>>>>32 ulelong >0 \b, sectors %u (volumes > 32 MB)
1425
+ #>>>>>>>32 ulelong =0 \b, sectors %u (volumes > 32 MB)
1426
+ # FAT<32 bit specific
1427
+ >>>>>>>82 string/c !fat32
1428
+ #>>>>>>>>36 ubyte 0x80 \b, physical drive %#x=0x80 (usual harddisk)
1429
+ #>>>>>>>>36 ubyte 0 \b, physical drive %#x=0 (usual floppy)
1430
+ >>>>>>>>36 ubyte !0x80
1431
+ >>>>>>>>>36 ubyte !0 \b, physical drive %#x
1432
+ # VGA-copy CRC or
1433
+ # in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
1434
+ >>>>>>>>37 ubyte >0 \b, reserved %#x
1435
+ #>>>>>>>>37 ubyte =0 \b, reserved %#x
1436
+ # extended boot signature value is 0x80 for NTFS, 0x28 or 0x29 for others
1437
+ >>>>>>>>38 ubyte !0x29 \b, dos < 4.0 BootSector (%#x)
1438
+ >>>>>>>>38 ubyte&0xFE =0x28
1439
+ >>>>>>>>>39 ulelong x \b, serial number %#x
1440
+ >>>>>>>>38 ubyte =0x29
1441
+ >>>>>>>>>43 string <NO\ NAME \b, label: "%11.11s"
1442
+ >>>>>>>>>43 string >NO\ NAME \b, label: "%11.11s"
1443
+ >>>>>>>>>43 string =NO\ NAME \b, unlabeled
1444
+ # there exist some old floppies without word FAT at offset 54
1445
+ # a word like "FATnm " is only a hint for a FAT size on nm-bits
1446
+ # Normally the number of clusters is calculated by the values of BPP.
1447
+ # if it is small enough FAT is 12 bit, if it is too big enough FAT is 32 bit,
1448
+ # otherwise FAT is 16 bit.
1449
+ # http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-fat-widths.html
1450
+ >>>>>82 string/c !fat32
1451
+ >>>>>>54 string FAT12 \b, FAT (12 bit)
1452
+ >>>>>>54 string FAT16 \b, FAT (16 bit)
1453
+ >>>>>>54 default x
1454
+ # determinate FAT bit size by media descriptor
1455
+ # small floppies implies FAT12
1456
+ >>>>>>>21 ubyte <0xF0 \b, FAT (12 bit by descriptor)
1457
+ # with media descriptor F0h floppy or maybe superfloppy with FAT16
1458
+ >>>>>>>21 ubyte =0xF0
1459
+ # superfloppy (many sectors) implies FAT16
1460
+ >>>>>>>>32 ulelong >0xFFFF \b, FAT (16 bit by descriptor+sectors)
1461
+ # no superfloppy with media descriptor F0h implies FAT12
1462
+ >>>>>>>>32 default x \b, FAT (12 bit by descriptor+sectors)
1463
+ # with media descriptor F8h floppy or hard disc with FAT12 or FAT16
1464
+ >>>>>>>21 ubyte =0xF8
1465
+ # 360 KiB with media descriptor F8h, 9 sectors per track ,single sided floppy implies FAT12
1466
+ >>>>>>>>19 ubequad 0xd002f80300090001 \b, FAT (12 bit by descriptor+geometry)
1467
+ # hard disc with FAT12 or FAT16
1468
+ >>>>>>>>19 default x \b, FAT (1Y bit by descriptor)
1469
+ # with media descriptor FAh floppy, RAM disc with FAT12 or FAT16 or Tandy hard disc
1470
+ >>>>>>>21 ubyte =0xFA
1471
+ # 320 KiB with media descriptor FAh, 8 sectors per track ,single sided floppy implies FAT12
1472
+ >>>>>>>>19 ubequad 0x8002fa0200080001 \b, FAT (12 bit by descriptor+geometry)
1473
+ # RAM disc with FAT12 or FAT16 or Tandy hard disc
1474
+ >>>>>>>>19 default x \b, FAT (1Y bit by descriptor)
1475
+ # others are floppy
1476
+ >>>>>>>21 default x \b, FAT (12 bit by descriptor)
1477
+ # FAT32 bit specific
1478
+ >>>>>82 string/c fat32 \b, FAT (32 bit)
1479
+ >>>>>>36 ulelong x \b, sectors/FAT %u
1480
+ # https://technet.microsoft.com/en-us/library/cc977221.aspx
1481
+ >>>>>>40 uleshort >0 \b, extension flags %#x
1482
+ #>>>>>>40 uleshort =0 \b, extension flags %hu
1483
+ >>>>>>42 uleshort >0 \b, fsVersion %u
1484
+ #>>>>>>42 uleshort =0 \b, fsVersion %u (usual)
1485
+ >>>>>>44 ulelong >2 \b, rootdir cluster %u
1486
+ #>>>>>>44 ulelong =2 \b, rootdir cluster %u
1487
+ #>>>>>>44 ulelong =1 \b, rootdir cluster %u
1488
+ >>>>>>48 uleshort >1 \b, infoSector %u
1489
+ #>>>>>>48 uleshort =1 \b, infoSector %u (usual)
1490
+ >>>>>>48 uleshort <1 \b, infoSector %u
1491
+ # 0 or 0xFFFF instead of usual 6 means no backup sector
1492
+ >>>>>>50 uleshort =0xFFFF \b, no Backup boot sector
1493
+ >>>>>>50 uleshort =0 \b, no Backup boot sector
1494
+ #>>>>>>50 uleshort =6 \b, Backup boot sector %u (usual)
1495
+ >>>>>>50 default x
1496
+ >>>>>>>50 uleshort x \b, Backup boot sector %u
1497
+ # corrected by Joerg Jenderek at Feb 2011 according to https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
1498
+ >>>>>>52 ulelong >0 \b, reserved1 %#x
1499
+ >>>>>>56 ulelong >0 \b, reserved2 %#x
1500
+ >>>>>>60 ulelong >0 \b, reserved3 %#x
1501
+ # same structure as FAT1X
1502
+ #>>>>>>64 ubyte =0x80 \b, physical drive %#x=80 (usual harddisk)
1503
+ #>>>>>>64 ubyte =0 \b, physical drive %#x=0 (usual floppy)
1504
+ >>>>>>64 ubyte !0x80
1505
+ >>>>>>>64 ubyte >0 \b, physical drive %#x
1506
+ # in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
1507
+ >>>>>>65 ubyte >0 \b, reserved %#x
1508
+ >>>>>>66 ubyte !0x29 \b, dos < 4.0 BootSector (%#x)
1509
+ >>>>>>66 ubyte =0x29
1510
+ >>>>>>>67 ulelong x \b, serial number %#x
1511
+ >>>>>>>71 string <NO\ NAME \b, label: "%11.11s"
1512
+ >>>>>>>71 string >NO\ NAME \b, label: "%11.11s"
1513
+ >>>>>>>71 string =NO\ NAME \b, unlabeled
1514
+ # additional tests for floppy image added by Joerg Jenderek
1515
+ # no fixed disk
1516
+ >>>>>21 ubyte !0xF8
1517
+ # floppy media with 12 bit FAT
1518
+ >>>>>>54 string !FAT16
1519
+ # test for FAT after bootsector
1520
+ >>>>>>>(11.s) ulelong&0x00ffffF0 0x00ffffF0 \b, followed by FAT
1521
+ # floppy image
1522
+ !:mime application/x-ima
1523
+ # NTFS specific added by Joerg Jenderek at Mar 2011 according to https://thestarman.pcministry.com/asm/mbr/NTFSBR.htm
1524
+ # and http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/bios-parameter-block.html
1525
+ # 0 FATs
1526
+ >>>>>16 ubyte =0
1527
+ # 0 root entries
1528
+ >>>>>>17 uleshort =0
1529
+ # 0 DOS sectors
1530
+ >>>>>>>19 uleshort =0
1531
+ # 0 sectors/FAT
1532
+ # dos < 4.0 BootSector value found is 0x80
1533
+ #38 ubyte =0x80 \b, dos < 4.0 BootSector (%#x)
1534
+ >>>>>>>>22 uleshort =0 \b; NTFS
1535
+ >>>>>>>>>24 uleshort >0 \b, sectors/track %u
1536
+ >>>>>>>>>36 ulelong !0x800080 \b, physical drive %#x
1537
+ >>>>>>>>>40 ulequad >0 \b, sectors %lld
1538
+ >>>>>>>>>48 ulequad >0 \b, $MFT start cluster %lld
1539
+ >>>>>>>>>56 ulequad >0 \b, $MFTMirror start cluster %lld
1540
+ # Values 0 to 127 represent MFT record sizes of 0 to 127 clusters.
1541
+ # Values 128 to 255 represent MFT record sizes of 2^(256-N) bytes.
1542
+ >>>>>>>>>64 lelong <256
1543
+ >>>>>>>>>>64 lelong <128 \b, clusters/RecordSegment %d
1544
+ >>>>>>>>>>64 ubyte >127 \b, bytes/RecordSegment 2^(-1*%i)
1545
+ # Values 0 to 127 represent index block sizes of 0 to 127 clusters.
1546
+ # Values 128 to 255 represent index block sizes of 2^(256-N) byte
1547
+ >>>>>>>>>68 ulelong <256
1548
+ >>>>>>>>>>68 ulelong <128 \b, clusters/index block %d
1549
+ #>>>>>>>>>>68 ulelong >127 \b, bytes/index block 2^(256-%d)
1550
+ >>>>>>>>>>68 ubyte >127 \b, bytes/index block 2^(-1*%i)
1551
+ >>>>>>>>>72 ulequad x \b, serial number 0%llx
1552
+ >>>>>>>>>80 ulelong >0 \b, checksum %#x
1553
+ #>>>>>>>>>80 ulelong =0 \b, checksum %#x=0 (usual)
1554
+ # unicode loadername size jump
1555
+ >>>>>>>>>(0x200.s*2) ubyte x
1556
+ # in next sector loadername terminated by unicode CTRL-D and $
1557
+ >>>>>>>>>>&0x1FF ulequad&0x0000FFffFFffFF00 0x0000002400040000 \b; contains
1558
+ # if 2nd NTFS sectors is found then assume whole filesystem
1559
+ #!:mime application/x-raw-disk-image
1560
+ !:ext img/bin/ntfs
1561
+ >>>>>>>>>>>0x200 use ntfs-sector2
1562
+
1563
+ # For 2nd NTFS sector added by Joerg Jenderek at Jan 2013, Mar 2019
1564
+ # https://thestarman.pcministry.com/asm/mbr/NTFSbrHexEd.htm
1565
+ # unused assembler instructions short JMP y2;NOP;NOP
1566
+ 0x056 ulelong&0xFFFF0FFF 0x909002EB NTFS
1567
+ #!:mime application/octet-stream
1568
+ !:ext bin
1569
+ >0 use ntfs-sector2
1570
+ # https://memory.dataram.com/products-and-services/software/ramdisk
1571
+ # assembler instructions JMP C000;NOP
1572
+ 0x056 ulelong 0x9000c0e9 NTFS
1573
+ #!:mime application/octet-stream
1574
+ !:ext bin
1575
+ >0 use ntfs-sector2
1576
+ # check for characteristics of second NTFS sector and then display loader name
1577
+ 0 name ntfs-sector2
1578
+ # number of utf16 characters of loadername
1579
+ >0 uleshort <8
1580
+ # unused assembler instructions JMP y2;NOP;NOP or JMP C000;NOP
1581
+ >>0x056 ulelong&0xFF0000FD 0x900000E9
1582
+ # loadernames are NTLDR,CMLDR,PELDR,$LDR$ or BOOTMGR
1583
+ >>>0x002 lestring16 x bootstrap %-5.5s
1584
+ # check for 7 character length of loader name like BOOTMGR
1585
+ >>>0 uleshort 7
1586
+ >>>>0x0c lestring16 x \b%-2.2s
1587
+ ### DOS,NTFS boot sectors end
1588
+
1589
+ # ntfsclone-image is a special save format for NTFS volumes,
1590
+ # created and restored by the ntfsclone program
1591
+ 0 string \0ntfsclone-image ntfsclone image,
1592
+ >0x10 byte x version %d.
1593
+ >0x11 byte x \b%d,
1594
+ >0x12 lelong x cluster size %d,
1595
+ >0x16 lequad x device size %lld,
1596
+ >0x1e lequad x %lld total clusters,
1597
+ >0x26 lequad x %lld clusters in use
1598
+
1599
+
1600
+ 0 name ffsv1
1601
+ >8404 string x last mounted on %s,
1602
+ #>9504 ledate x last checked at %s,
1603
+ >8224 ledate x last written at %s,
1604
+ >8401 byte x clean flag %d,
1605
+ >8228 lelong x number of blocks %d,
1606
+ >8232 lelong x number of data blocks %d,
1607
+ >8236 lelong x number of cylinder groups %d,
1608
+ >8240 lelong x block size %d,
1609
+ >8244 lelong x fragment size %d,
1610
+ >8252 lelong x minimum percentage of free blocks %d,
1611
+ >8256 lelong x rotational delay %dms,
1612
+ >8260 lelong x disk rotational speed %drps,
1613
+ >8320 lelong 0 TIME optimization
1614
+ >8320 lelong 1 SPACE optimization
1615
+
1616
+ 9564 lelong 0x00011954 Unix Fast File system [v1] (little-endian),
1617
+ >0 use ffsv1
1618
+
1619
+ 9564 belong 0x00011954 Unix Fast File system [v1] (big-endian),
1620
+ >7168 belong 0x4c41424c Apple UFS Volume
1621
+ >>7186 string x named %s,
1622
+ >>7176 belong x volume label version %d,
1623
+ >>7180 bedate x created on %s,
1624
+ >0 use \^ffsv1
1625
+
1626
+ 0 name ffsv2
1627
+ >212 string x last mounted on %s,
1628
+ >680 string >\0 volume name %s,
1629
+ >1072 leqldate x last written at %s,
1630
+ >209 byte x clean flag %d,
1631
+ >210 byte x readonly flag %d,
1632
+ >1080 lequad x number of blocks %lld,
1633
+ >1088 lequad x number of data blocks %lld,
1634
+ >44 lelong x number of cylinder groups %d,
1635
+ >48 lelong x block size %d,
1636
+ >52 lelong x fragment size %d,
1637
+ >1196 lelong x average file size %d,
1638
+ >1200 lelong x average number of files in dir %d,
1639
+ >1104 lequad x pending blocks to free %lld,
1640
+ >1112 lelong x pending inodes to free %d,
1641
+ >712 lequad x system-wide uuid %0llx,
1642
+ >60 lelong x minimum percentage of free blocks %d,
1643
+ >128 lelong 0 TIME optimization
1644
+ >128 lelong 1 SPACE optimization
1645
+
1646
+ 42332 lelong 0x19012038 Unix Fast File system [v2ea] (little-endian)
1647
+ >40960 use ffsv2
1648
+
1649
+ 42332 lelong 0x19540119 Unix Fast File system [v2] (little-endian)
1650
+ >40960 use ffsv2
1651
+
1652
+ 42332 belong 0x19012038 Unix Fast File system [v2ea] (little-endian)
1653
+ >40960 use \^ffsv2
1654
+
1655
+ 42332 belong 0x19540119 Unix Fast File system [v2] (big-endian)
1656
+ >40960 use \^ffsv2
1657
+
1658
+ 66908 lelong 0x19012038 Unix Fast File system [v2ea] (little-endian)
1659
+ >65536 use ffsv2
1660
+
1661
+ 66908 lelong 0x19540119 Unix Fast File system [v2] (little-endian)
1662
+ >65536 use ffsv2
1663
+
1664
+ 66908 belong 0x19012038 Unix Fast File system [v2ea] (little-endian)
1665
+ >65536 use \^ffsv2
1666
+
1667
+ 66908 belong 0x19540119 Unix Fast File system [v2] (big-endian)
1668
+ >65536 use \^ffsv2
1669
+
1670
+ 0 ulequad 0xc8414d4dc5523031 HAMMER filesystem (little-endian),
1671
+ >0x90 lelong+1 x volume %d
1672
+ >0x94 lelong x (of %d),
1673
+ >0x50 string x name %s,
1674
+ >0x98 ulelong x version %u,
1675
+ >0xa0 ulelong x flags %#x
1676
+
1677
+ 0 ulequad 0x48414d3205172011 HAMMER2 filesystem (little-endian),
1678
+ >0x3b byte x volume %d,
1679
+ >0x28 ulequad/1073741824 x size %lluGB,
1680
+ >0x30 ulelong x version %u,
1681
+ >0x34 ulelong x flags %#x
1682
+
1683
+ # ext2/ext3 filesystems - Andreas Dilger <adilger@dilger.ca>
1684
+ # ext4 filesystem - Eric Sandeen <sandeen@sandeen.net>
1685
+ # volume label and UUID Russell Coker
1686
+ # https://etbe.coker.com.au/2008/07/08/label-vs-uuid-vs-device/
1687
+ 0x438 leshort 0xEF53 Linux
1688
+ >0x44c lelong x rev %d
1689
+ >0x43e leshort x \b.%d
1690
+ # No journal? ext2
1691
+ >0x45c lelong ^0x0000004 ext2 filesystem data
1692
+ >>0x43a leshort ^0x0000001 (mounted or unclean)
1693
+ # Has a journal? ext3 or ext4
1694
+ >0x45c lelong &0x0000004
1695
+ # and small INCOMPAT?
1696
+ >>0x460 lelong <0x0000040
1697
+ # and small RO_COMPAT?
1698
+ >>>0x464 lelong <0x0000008 ext3 filesystem data
1699
+ # else large RO_COMPAT?
1700
+ >>>0x464 lelong >0x0000007 ext4 filesystem data
1701
+ # else large INCOMPAT?
1702
+ >>0x460 lelong >0x000003f ext4 filesystem data
1703
+ >0x468 ubelong x \b, UUID=%08x
1704
+ >0x46c ubeshort x \b-%04x
1705
+ >0x46e ubeshort x \b-%04x
1706
+ >0x470 ubeshort x \b-%04x
1707
+ >0x472 ubelong x \b-%08x
1708
+ >0x476 ubeshort x \b%04x
1709
+ >0x478 string >0 \b, volume name "%s"
1710
+ # General flags for any ext* fs
1711
+ >0x460 lelong &0x0000004 (needs journal recovery)
1712
+ >0x43a leshort &0x0000002 (errors)
1713
+ # INCOMPAT flags
1714
+ >0x460 lelong &0x0000001 (compressed)
1715
+ #>0x460 lelong &0x0000002 (filetype)
1716
+ #>0x460 lelong &0x0000010 (meta bg)
1717
+ >0x460 lelong &0x0000040 (extents)
1718
+ >0x460 lelong &0x0000080 (64bit)
1719
+ #>0x460 lelong &0x0000100 (mmp)
1720
+ #>0x460 lelong &0x0000200 (flex bg)
1721
+ # RO_INCOMPAT flags
1722
+ #>0x464 lelong &0x0000001 (sparse super)
1723
+ >0x464 lelong &0x0000002 (large files)
1724
+ >0x464 lelong &0x0000008 (huge files)
1725
+ #>0x464 lelong &0x0000010 (gdt checksum)
1726
+ #>0x464 lelong &0x0000020 (many subdirs)
1727
+ #>0x463 lelong &0x0000040 (extra isize)
1728
+
1729
+ # f2fs filesystem - Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
1730
+ 0x400 lelong 0xF2F52010 F2FS filesystem
1731
+ >0x46c ubelong x \b, UUID=%08x
1732
+ >0x470 ubeshort x \b-%04x
1733
+ >0x472 ubeshort x \b-%04x
1734
+ >0x474 ubeshort x \b-%04x
1735
+ >0x476 ubelong x \b-%08x
1736
+ >0x47a ubeshort x \b%04x
1737
+ >0x147c lestring16 x \b, volume name "%s"
1738
+
1739
+ # Minix filesystems - Juan Cespedes <cespedes@debian.org>
1740
+ 0x410 leshort 0x137f
1741
+ !:strength / 2
1742
+ >0x402 beshort < 100
1743
+ >0x402 beshort > -1 Minix filesystem, V1, 14 char names, %d zones
1744
+ >0x1e string minix \b, bootable
1745
+ 0x410 beshort 0x137f
1746
+ !:strength / 2
1747
+ >0x402 beshort < 100
1748
+ >0x402 beshort > -1 Minix filesystem, V1 (big endian), %d zones
1749
+ >0x1e string minix \b, bootable
1750
+ 0x410 leshort 0x138f
1751
+ !:strength / 2
1752
+ >0x402 beshort < 100
1753
+ >0x402 beshort > -1 Minix filesystem, V1, 30 char names, %d zones
1754
+ >0x1e string minix \b, bootable
1755
+ 0x410 beshort 0x138f
1756
+ !:strength / 2
1757
+ >0x402 beshort < 100
1758
+ >0x402 beshort > -1 Minix filesystem, V1, 30 char names (big endian), %d zones
1759
+ >0x1e string minix \b, bootable
1760
+ # Weak Magic: this is $x
1761
+ #0x410 leshort 0x2468
1762
+ #>0x402 beshort < 100
1763
+ #>>0x402 beshort > -1 Minix filesystem, V2, 14 char names
1764
+ #>0x1e string minix \b, bootable
1765
+ #0x410 beshort 0x2468
1766
+ #>0x402 beshort < 100
1767
+ #>0x402 beshort > -1 Minix filesystem, V2 (big endian)
1768
+ #>0x1e string minix \b, bootable
1769
+ #0x410 leshort 0x2478
1770
+ #>0x402 beshort < 100
1771
+ #>0x402 beshort > -1 Minix filesystem, V2, 30 char names
1772
+ #>0x1e string minix \b, bootable
1773
+ #0x410 leshort 0x2478
1774
+ #>0x402 beshort < 100
1775
+ #>0x402 beshort > -1 Minix filesystem, V2, 30 char names
1776
+ #>0x1e string minix \b, bootable
1777
+ #0x410 beshort 0x2478
1778
+ #>0x402 beshort !0 Minix filesystem, V2, 30 char names (big endian)
1779
+ #>0x1e string minix \b, bootable
1780
+ # Weak Magic! this is MD
1781
+ #0x418 leshort 0x4d5a
1782
+ #>0x402 beshort <100
1783
+ #>>0x402 beshort > -1 Minix filesystem, V3, 60 char names
1784
+
1785
+ # SGI disk labels - Nathan Scott <nathans@debian.org>
1786
+ 0 belong 0x0BE5A941 SGI disk label (volume header)
1787
+
1788
+ # SGI XFS filesystem - Nathan Scott <nathans@debian.org>
1789
+ 0 belong 0x58465342 SGI XFS filesystem data
1790
+ >0x4 belong x (blksz %d,
1791
+ >0x68 beshort x inosz %d,
1792
+ >0x64 beshort ^0x2004 v1 dirs)
1793
+ >0x64 beshort &0x2004 v2 dirs)
1794
+
1795
+ ############################################################################
1796
+ # Minix-ST kernel floppy
1797
+ 0x800 belong 0x46fc2700 Atari-ST Minix kernel image
1798
+ # https://en.wikipedia.org/wiki/BIOS_parameter_block
1799
+ # floppies with valid BPB and any instruction at beginning
1800
+ >19 string \240\005\371\005\0\011\0\2\0 \b, 720k floppy
1801
+ >19 string \320\002\370\005\0\011\0\1\0 \b, 360k floppy
1802
+
1803
+ ############################################################################
1804
+ # Hmmm, is this a better way of detecting _standard_ floppy images ?
1805
+ 19 string \320\002\360\003\0\011\0\1\0 DOS floppy 360k
1806
+ >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
1807
+ 19 string \240\005\371\003\0\011\0\2\0 DOS floppy 720k
1808
+ >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
1809
+ 19 string \100\013\360\011\0\022\0\2\0 DOS floppy 1440k
1810
+ >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
1811
+
1812
+ 19 string \240\005\371\005\0\011\0\2\0 DOS floppy 720k, IBM
1813
+ >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
1814
+ 19 string \100\013\371\005\0\011\0\2\0 DOS floppy 1440k, mkdosfs
1815
+ >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
1816
+
1817
+ 19 string \320\002\370\005\0\011\0\1\0 Atari-ST floppy 360k
1818
+ 19 string \240\005\371\005\0\011\0\2\0 Atari-ST floppy 720k
1819
+ # | | | | |
1820
+ # | | | | heads
1821
+ # | | | sectors/track
1822
+ # | | sectors/FAT
1823
+ # | media descriptor
1824
+ # BPB: sectors
1825
+
1826
+ # Valid media descriptor bytes for MS-DOS:
1827
+ #
1828
+ # Byte Capacity Media Size and Type
1829
+ # -------------------------------------------------
1830
+ #
1831
+ # F0 2.88 MB 3.5-inch, 2-sided, 36-sector
1832
+ # F0 1.44 MB 3.5-inch, 2-sided, 18-sector
1833
+ # F9 720K 3.5-inch, 2-sided, 9-sector
1834
+ # F9 1.2 MB 5.25-inch, 2-sided, 15-sector
1835
+ # FD 360K 5.25-inch, 2-sided, 9-sector
1836
+ # FF 320K 5.25-inch, 2-sided, 8-sector
1837
+ # FC 180K 5.25-inch, 1-sided, 9-sector
1838
+ # FE 160K 5.25-inch, 1-sided, 8-sector
1839
+ # FE 250K 8-inch, 1-sided, single-density
1840
+ # FD 500K 8-inch, 2-sided, single-density
1841
+ # FE 1.2 MB 8-inch, 2-sided, double-density
1842
+ # F8 ----- Fixed disk
1843
+ #
1844
+ # FC xxxK Apricot 70x1x9 boot disk.
1845
+ #
1846
+ # Originally a bitmap:
1847
+ # xxxxxxx0 Not two sided
1848
+ # xxxxxxx1 Double sided
1849
+ # xxxxxx0x Not 8 SPT
1850
+ # xxxxxx1x 8 SPT
1851
+ # xxxxx0xx Not Removable drive
1852
+ # xxxxx1xx Removable drive
1853
+ # 11111xxx Must be one.
1854
+ #
1855
+ # But now it's rather random:
1856
+ # 111111xx Low density disk
1857
+ # 00 SS, Not 8 SPT
1858
+ # 01 DS, Not 8 SPT
1859
+ # 10 SS, 8 SPT
1860
+ # 11 DS, 8 SPT
1861
+ #
1862
+ # 11111001 Double density 3 1/2 floppy disk, high density 5 1/4
1863
+ # 11110000 High density 3 1/2 floppy disk
1864
+ # 11111000 Hard disk any format
1865
+ #
1866
+
1867
+ # all FAT12 (strength=70) floppies with sectorsize 512 added by Joerg Jenderek at Jun 2013
1868
+ # https://en.wikipedia.org/wiki/File_Allocation_Table#Exceptions
1869
+ # Too Weak.
1870
+ #512 ubelong&0xE0ffff00 0xE0ffff00
1871
+ # without valid Media descriptor in place of BPB, cases with are done at other places
1872
+ #>21 ubyte <0xE5 floppy with old FAT filesystem
1873
+ # but valid Media descriptor at begin of FAT
1874
+ #>>512 ubyte =0xed 720k
1875
+ #>>512 ubyte =0xf0 1440k
1876
+ #>>512 ubyte =0xf8 720k
1877
+ #>>512 ubyte =0xf9 1220k
1878
+ #>>512 ubyte =0xfa 320k
1879
+ #>>512 ubyte =0xfb 640k
1880
+ #>>512 ubyte =0xfc 180k
1881
+ # look like an old DOS directory entry
1882
+ #>>>0xA0E ubequad 0
1883
+ #>>>>0xA00 ubequad !0
1884
+ #!:mime application/x-ima
1885
+ #>>512 ubyte =0xfd
1886
+ # look for 2nd FAT at different location to distinguish between 360k and 500k
1887
+ #>>>0x600 ubelong&0xE0ffff00 0xE0ffff00 360k
1888
+ #>>>0x500 ubelong&0xE0ffff00 0xE0ffff00 500k
1889
+ #>>>0xA0E ubequad 0
1890
+ #!:mime application/x-ima
1891
+ #>>512 ubyte =0xfe
1892
+ #>>>0x400 ubelong&0xE0ffff00 0xE0ffff00 160k
1893
+ #>>>>0x60E ubequad 0
1894
+ #>>>>>0x600 ubequad !0
1895
+ #!:mime application/x-ima
1896
+ #>>>0xC00 ubelong&0xE0ffff00 0xE0ffff00 1200k
1897
+ #>>512 ubyte =0xff 320k
1898
+ #>>>0x60E ubequad 0
1899
+ #>>>>0x600 ubequad !0
1900
+ #!:mime application/x-ima
1901
+ #>>512 ubyte x \b, Media descriptor %#x
1902
+ # without x86 jump instruction
1903
+ #>>0 ulelong&0x804000E9 !0x000000E9
1904
+ # assembler instructions: CLI;MOV SP,1E7;MOV AX;07c0;MOV
1905
+ #>>>0 ubequad 0xfabce701b8c0078e \b, MS-DOS 1.12 bootloader
1906
+ # IOSYS.COM+MSDOS.COM
1907
+ #>>>>0xc4 use 2xDOS-filename
1908
+ #>>0 ulelong&0x804000E9 =0x000000E9
1909
+ # only x86 short jump instruction found
1910
+ #>>>0 ubyte =0xEB
1911
+ #>>>>1 ubyte x \b, code offset %#x+2
1912
+ # https://thestarman.pcministry.com/DOS/ibm100/Boot.htm
1913
+ # assembler instructions: CLI;MOV AX,CS;MOV DS,AX;MOV DX,0
1914
+ #>>>>(1.b+2) ubequad 0xfa8cc88ed8ba0000 \b, PC-DOS 1.0 bootloader
1915
+ # ibmbio.com+ibmdos.com
1916
+ #>>>>>0x176 use DOS-filename
1917
+ #>>>>>0x181 ubyte x \b+
1918
+ #>>>>>0x182 use DOS-filename
1919
+ # https://thestarman.pcministry.com/DOS/ibm110/Boot.htm
1920
+ # assembler instructions: CLI;MOV AX,CS;MOV DS,AX;XOR DX,DX;MOV
1921
+ #>>>>(1.b+2) ubequad 0xfa8cc88ed833d28e \b, PC-DOS 1.1 bootloader
1922
+ # ibmbio.com+ibmdos.com
1923
+ #>>>>>0x18b use DOS-filename
1924
+ #>>>>>0x196 ubyte x \b+
1925
+ #>>>>>0x197 use DOS-filename
1926
+ # https://en.wikipedia.org/wiki/Zenith_Data_Systems
1927
+ # assembler instructions: MOV BX,07c0;MOV SS,BX;MOV SP,01c6
1928
+ #>>>>(1.b+2) ubequad 0xbbc0078ed3bcc601 \b, Zenith Data Systems MS-DOS 1.25 bootloader
1929
+ # IO.SYS+MSDOS.SYS
1930
+ #>>>>>0x20 use 2xDOS-filename
1931
+ # https://en.wikipedia.org/wiki/Corona_Data_Systems
1932
+ # assembler instructions: MOV AX,CS;MOV DS,AX;CLI;MOV SS,AX;
1933
+ #>>>>(1.b+2) ubequad 0x8cc88ed8fa8ed0bc \b, MS-DOS 1.25 bootloader
1934
+ # IO.SYS+MSDOS.SYS
1935
+ #>>>>>0x69 use 2xDOS-filename
1936
+ # assembler instructions: CLI;PUSH CS;POP SS;MOV SP,7c00;
1937
+ #>>>>(1.b+2) ubequad 0xfa0e17bc007cb860 \b, MS-DOS 2.11 bootloader
1938
+ # defect IO.SYS+MSDOS.SYS ?
1939
+ #>>>>>0x162 use 2xDOS-filename
1940
+
1941
+ 0 name cdrom
1942
+ >38913 string !NSR0 ISO 9660 CD-ROM filesystem data
1943
+ !:mime application/x-iso9660-image
1944
+ !:ext iso/iso9660
1945
+ >38913 string NSR0 UDF filesystem data
1946
+ !:mime application/x-iso9660-image
1947
+ !:ext iso/udf
1948
+ >>38917 string 1 (version 1.0)
1949
+ >>38917 string 2 (version 1.5)
1950
+ >>38917 string 3 (version 2.0)
1951
+ >>38917 byte >0x33 (unknown version, ID %#X)
1952
+ >>38917 byte <0x31 (unknown version, ID %#X)
1953
+ # The next line is not necessary because the MBR staff is done looking for boot signature
1954
+ >0x1FE leshort 0xAA55 (DOS/MBR boot sector)
1955
+ # "application id" which appears to be used as a volume label
1956
+ >32808 string/T >\0 '%.32s'
1957
+ >34816 string \000CD001\001EL\ TORITO\ SPECIFICATION (bootable)
1958
+ 37633 string CD001 ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
1959
+ !:mime application/x-iso9660-image
1960
+ 32777 string CDROM High Sierra CD-ROM filesystem data
1961
+ # "application id" which appears to be used as a volume label
1962
+ >32816 string/T >\0 '%.32s'
1963
+
1964
+
1965
+ # CDROM Filesystems
1966
+ # https://en.wikipedia.org/wiki/ISO_9660
1967
+ # Modified for UDF by gerardo.cacciari@gmail.com
1968
+ 32769 string CD001
1969
+ # mime line at that position does not work
1970
+ # to display CD-ROM (70=81-11) after MBR (113=40+72+1), partition-table (71=50+21) and before Apple Driver Map (51)
1971
+ #!:strength -11
1972
+ # to display CD-ROM (114=81+33) before MBR (113=40+72+1), partition-table (71=50+21) and Apple Driver Map (51)
1973
+ !:strength +35
1974
+ >0 use cdrom
1975
+
1976
+ # URL: https://en.wikipedia.org/wiki/NRG_(file_format)
1977
+ # Reference: https://dl.opendesktop.org/api/files/download/id/1460731811/
1978
+ # 11577-mount-iso-0.9.5.tar.bz2/mount-iso-0.9.5/install.sh
1979
+ # From: Joerg Jenderek
1980
+ # Note: Only for nero disc with once (DAO) type after 300 KB header
1981
+ 339969 string CD001 Nero CD image at 0x4B000
1982
+ !:mime application/x-nrg
1983
+ !:ext nrg
1984
+ >307200 use cdrom
1985
+
1986
+ # .cso files
1987
+ # Reference: https://pismotec.com/ciso/ciso.h
1988
+ # NOTE: There are two other formats with the same magic but
1989
+ # completely incompatible specifications:
1990
+ # - GameCube/Wii CISO: https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/DiscIO/CISOBlob.h
1991
+ # - PSP CISO: https://github.com/jamie/ciso/blob/master/ciso.h
1992
+ 0 string CISO
1993
+ # Other fields are used to determine what type of CISO this is:
1994
+ # - 0x04 == 0x00200000: GameCube/Wii CISO (block_size)
1995
+ # - 0x10 == 0x00000800: PSP CISO (ISO-9660 sector size)
1996
+ # - 0x10 == 0x00004000: For >2GB files using maxcso...
1997
+ # https://github.com/unknownbrackets/maxcso/issues/26
1998
+ # - None of the above: Compact ISO.
1999
+ >4 lelong !0
2000
+ >>4 lelong !0x200000
2001
+ >>>16 lelong !0x800
2002
+ >>>>16 lelong !0x4000 Compressed ISO CD image
2003
+
2004
+ # cramfs filesystem - russell@coker.com.au
2005
+ 0 lelong 0x28cd3d45 Linux Compressed ROM File System data, little endian
2006
+ >4 lelong x size %u
2007
+ >8 lelong &1 version #2
2008
+ >8 lelong &2 sorted_dirs
2009
+ >8 lelong &4 hole_support
2010
+ >32 lelong x CRC %#x,
2011
+ >36 lelong x edition %u,
2012
+ >40 lelong x %u blocks,
2013
+ >44 lelong x %u files
2014
+
2015
+ 0 belong 0x28cd3d45 Linux Compressed ROM File System data, big endian
2016
+ >4 belong x size %u
2017
+ >8 belong &1 version #2
2018
+ >8 belong &2 sorted_dirs
2019
+ >8 belong &4 hole_support
2020
+ >32 belong x CRC %#x,
2021
+ >36 belong x edition %u,
2022
+ >40 belong x %u blocks,
2023
+ >44 belong x %u files
2024
+
2025
+ # reiserfs - russell@coker.com.au
2026
+ 0x10034 string ReIsErFs ReiserFS V3.5
2027
+ 0x10034 string ReIsEr2Fs ReiserFS V3.6
2028
+ 0x10034 string ReIsEr3Fs ReiserFS V3.6.19
2029
+ >0x1002c leshort x block size %d
2030
+ >0x10032 leshort &2 (mounted or unclean)
2031
+ >0x10000 lelong x num blocks %d
2032
+ >0x10040 lelong 1 tea hash
2033
+ >0x10040 lelong 2 yura hash
2034
+ >0x10040 lelong 3 r5 hash
2035
+
2036
+ # EST flat binary format (which isn't, but anyway)
2037
+ # From: Mark Brown <broonie@sirena.org.uk>
2038
+ 0 string ESTFBINR EST flat binary
2039
+
2040
+ # Aculab VoIP firmware
2041
+ # From: Mark Brown <broonie@sirena.org.uk>
2042
+ 0 string VoIP\ Startup\ and Aculab VoIP firmware
2043
+ >35 string x format %s
2044
+
2045
+ # From: Mark Brown <broonie@sirena.org.uk> [old]
2046
+ # From: Behan Webster <behanw@websterwood.com>
2047
+ 0 belong 0x27051956 u-boot legacy uImage,
2048
+ >32 string x %s,
2049
+ >28 byte 0 Invalid os/
2050
+ >28 byte 1 OpenBSD/
2051
+ >28 byte 2 NetBSD/
2052
+ >28 byte 3 FreeBSD/
2053
+ >28 byte 4 4.4BSD/
2054
+ >28 byte 5 Linux/
2055
+ >28 byte 6 SVR4/
2056
+ >28 byte 7 Esix/
2057
+ >28 byte 8 Solaris/
2058
+ >28 byte 9 Irix/
2059
+ >28 byte 10 SCO/
2060
+ >28 byte 11 Dell/
2061
+ >28 byte 12 NCR/
2062
+ >28 byte 13 LynxOS/
2063
+ >28 byte 14 VxWorks/
2064
+ >28 byte 15 pSOS/
2065
+ >28 byte 16 QNX/
2066
+ >28 byte 17 Firmware/
2067
+ >28 byte 18 RTEMS/
2068
+ >28 byte 19 ARTOS/
2069
+ >28 byte 20 Unity OS/
2070
+ >28 byte 21 INTEGRITY/
2071
+ >29 byte 0 \bInvalid CPU,
2072
+ >29 byte 1 \bAlpha,
2073
+ >29 byte 2 \bARM,
2074
+ >29 byte 3 \bIntel x86,
2075
+ >29 byte 4 \bIA64,
2076
+ >29 byte 5 \bMIPS,
2077
+ >29 byte 6 \bMIPS 64-bit,
2078
+ >29 byte 7 \bPowerPC,
2079
+ >29 byte 8 \bIBM S390,
2080
+ >29 byte 9 \bSuperH,
2081
+ >29 byte 10 \bSparc,
2082
+ >29 byte 11 \bSparc 64-bit,
2083
+ >29 byte 12 \bM68K,
2084
+ >29 byte 13 \bNios-32,
2085
+ >29 byte 14 \bMicroBlaze,
2086
+ >29 byte 15 \bNios-II,
2087
+ >29 byte 16 \bBlackfin,
2088
+ >29 byte 17 \bAVR32,
2089
+ >29 byte 18 \bSTMicroelectronics ST200,
2090
+ >29 byte 19 \bSandbox architecture,
2091
+ >29 byte 20 \bANDES Technology NDS32,
2092
+ >29 byte 21 \bOpenRISC 1000,
2093
+ >29 byte 22 \bARM 64-bit,
2094
+ >29 byte 23 \bDesignWare ARC,
2095
+ >29 byte 24 \bx86_64,
2096
+ >29 byte 25 \bXtensa,
2097
+ >29 byte 26 \bRISC-V,
2098
+ >30 byte 0 Invalid Image
2099
+ >30 byte 1 Standalone Program
2100
+ >30 byte 2 OS Kernel Image
2101
+ >30 byte 3 RAMDisk Image
2102
+ >30 byte 4 Multi-File Image
2103
+ >30 byte 5 Firmware Image
2104
+ >30 byte 6 Script File
2105
+ >30 byte 7 Filesystem Image (any type)
2106
+ >30 byte 8 Binary Flat Device Tree BLOB
2107
+ >31 byte 0 (Not compressed),
2108
+ >31 byte 1 (gzip),
2109
+ >31 byte 2 (bzip2),
2110
+ >31 byte 3 (lzma),
2111
+ >12 belong x %d bytes,
2112
+ >8 bedate x %s,
2113
+ >16 belong x Load Address: %#08X,
2114
+ >20 belong x Entry Point: %#08X,
2115
+ >4 belong x Header CRC: %#08X,
2116
+ >24 belong x Data CRC: %#08X
2117
+
2118
+ # JFFS2 file system
2119
+ 0 leshort 0x1984 Linux old jffs2 filesystem data little endian
2120
+ 0 beshort 0x1984 Linux old jffs2 filesystem data big endian
2121
+ 0 leshort 0x1985 Linux jffs2 filesystem data little endian
2122
+ 0 beshort 0x1985 Linux jffs2 filesystem data big endian
2123
+
2124
+ # Squashfs
2125
+ 0 name squashfs
2126
+ >28 beshort x version %d.
2127
+ >30 beshort x \b%d,
2128
+ >20 beshort 0 uncompressed,
2129
+ >20 beshort 1 zlib
2130
+ >20 beshort 2 lzma
2131
+ >20 beshort 3 lzo
2132
+ >20 beshort 4 xz
2133
+ >20 beshort 5 lz4
2134
+ >20 beshort 6 zstd
2135
+ >20 beshort >0 compressed,
2136
+ >28 beshort <3
2137
+ >>8 belong x %d bytes,
2138
+ >28 beshort >2
2139
+ >>28 beshort <4
2140
+ >>>63 bequad x %lld bytes,
2141
+ >>28 beshort >3
2142
+ >>>40 bequad x %lld bytes,
2143
+ #>>67 belong x %d bytes,
2144
+ >4 belong x %d inodes,
2145
+ >28 beshort <2
2146
+ >>32 beshort x blocksize: %d bytes,
2147
+ >28 beshort >1
2148
+ >>28 beshort <4
2149
+ >>>51 belong x blocksize: %d bytes,
2150
+ >>28 beshort >3
2151
+ >>>12 belong x blocksize: %d bytes,
2152
+ >28 beshort <4
2153
+ >>39 bedate x created: %s
2154
+ >28 beshort >3
2155
+ >>8 bedate x created: %s
2156
+
2157
+ 0 string sqsh Squashfs filesystem, big endian,
2158
+ >0 use squashfs
2159
+
2160
+ 0 string hsqs Squashfs filesystem, little endian,
2161
+ >0 use \^squashfs
2162
+
2163
+ # AFS Dump Magic
2164
+ # From: Ty Sarna <tsarna@sarna.org>
2165
+ 0 string \x01\xb3\xa1\x13\x22 AFS Dump
2166
+ >&0 belong x (v%d)
2167
+ >>&0 byte 0x76
2168
+ >>>&0 belong x Vol %d,
2169
+ >>>>&0 byte 0x6e
2170
+ >>>>>&0 string x %s
2171
+ >>>>>>&1 byte 0x74
2172
+ >>>>>>>&0 beshort 2
2173
+ >>>>>>>>&4 bedate x on: %s
2174
+ >>>>>>>>&0 bedate =0 full dump
2175
+ >>>>>>>>&0 bedate !0 incremental since: %s
2176
+
2177
+ #----------------------------------------------------------
2178
+ #delta ISO Daniel Novotny (dnovotny@redhat.com)
2179
+ 0 string DISO Delta ISO data
2180
+ !:strength +50
2181
+ >4 belong x version %d
2182
+
2183
+ # VMS backup savesets - gerardo.cacciari@gmail.com
2184
+ #
2185
+ 4 string \x01\x00\x01\x00\x01\x00
2186
+ >(0.s+16) string \x01\x01
2187
+ >>&(&0.b+8) byte 0x42 OpenVMS backup saveset data
2188
+ >>>40 lelong x (block size %d,
2189
+ >>>49 string >\0 original name '%s',
2190
+ >>>2 short 1024 VAX generated)
2191
+ >>>2 short 2048 AXP generated)
2192
+ >>>2 short 4096 I64 generated)
2193
+
2194
+ # Summary: Oracle Clustered Filesystem
2195
+ # Created by: Aaron Botsis <redhat@digitalmafia.org>
2196
+ 8 string OracleCFS Oracle Clustered Filesystem,
2197
+ >4 long x rev %d
2198
+ >0 long x \b.%d,
2199
+ >560 string x label: %.64s,
2200
+ >136 string x mountpoint: %.128s
2201
+
2202
+ # Summary: Oracle ASM tagged volume
2203
+ # Created by: Aaron Botsis <redhat@digitalmafia.org>
2204
+ 32 string ORCLDISK Oracle ASM Volume,
2205
+ >40 string x Disk Name: %0.12s
2206
+ 32 string ORCLCLRD Oracle ASM Volume (cleared),
2207
+ >40 string x Disk Name: %0.12s
2208
+
2209
+ # Oracle Clustered Filesystem - Aaron Botsis <redhat@digitalmafia.org>
2210
+ 8 string OracleCFS Oracle Clustered Filesystem,
2211
+ >4 long x rev %d
2212
+ >0 long x \b.%d,
2213
+ >560 string x label: %.64s,
2214
+ >136 string x mountpoint: %.128s
2215
+
2216
+ # Oracle ASM tagged volume - Aaron Botsis <redhat@digitalmafia.org>
2217
+ 32 string ORCLDISK Oracle ASM Volume,
2218
+ >40 string x Disk Name: %0.12s
2219
+ 32 string ORCLCLRD Oracle ASM Volume (cleared),
2220
+ >40 string x Disk Name: %0.12s
2221
+
2222
+ # Compaq/HP RILOE floppy image
2223
+ # From: Dirk Jagdmann <doj@cubic.org>
2224
+ 0 string CPQRFBLO Compaq/HP RILOE floppy image
2225
+
2226
+ #------------------------------------------------------------------------------
2227
+ # Files-11 On-Disk Structure (File system for various RSX-11 and VMS flavours).
2228
+ # These bits come from LBN 1 (home block) of ODS-1, ODS-2 and ODS-5 volumes,
2229
+ # which is mapped to VBN 2 of [000000]INDEXF.SYS;1 - gerardo.cacciari@gmail.com
2230
+ #
2231
+ 1008 string DECFILE11 Files-11 On-Disk Structure
2232
+ >525 byte x (ODS-%d);
2233
+ >1017 string A RSX-11, VAX/VMS or OpenVMS VAX file system;
2234
+ >1017 string B
2235
+ >>525 byte 2 VAX/VMS or OpenVMS file system;
2236
+ >>525 byte 5 OpenVMS Alpha or Itanium file system;
2237
+ >984 string x volume label is '%-12.12s'
2238
+
2239
+ # From: Thomas Klausner <wiz@NetBSD.org>
2240
+ # https://filext.com/file-extension/DAA
2241
+ # describes the daa file format. The magic would be:
2242
+ 0 string DAA\x0\x0\x0\x0\x0 PowerISO Direct-Access-Archive
2243
+
2244
+ # From Albert Cahalan <acahalan@gmail.com>
2245
+ # really le32 operation,destination,payloadsize (but quite predictable)
2246
+ # 01 00 00 00 00 00 00 c0 00 02 00 00
2247
+ 0 string \1\0\0\0\0\0\0\300\0\2\0\0 Marvell Libertas firmware
2248
+
2249
+ # From Eric Sandeen
2250
+ # GFS2
2251
+ 0x10000 belong 0x01161970
2252
+ >0x10018 belong 0x0000051d GFS1 Filesystem
2253
+ >>0x10024 belong x (blocksize %d,
2254
+ >>0x10060 string >\0 lockproto %s)
2255
+ >0x10018 belong 0x00000709 GFS2 Filesystem
2256
+ >>0x10024 belong x (blocksize %d,
2257
+ >>0x10060 string >\0 lockproto %s)
2258
+
2259
+ # Russell Coker <russell@coker.com.au>
2260
+ 0x10040 string _BHRfS_M BTRFS Filesystem
2261
+ >0x1012b string >\0 label "%s",
2262
+ >0x10090 lelong x sectorsize %d,
2263
+ >0x10094 lelong x nodesize %d,
2264
+ >0x10098 lelong x leafsize %d,
2265
+ >0x10020 ubelong x UUID=%08x-
2266
+ >0x10024 ubeshort x \b%04x-
2267
+ >0x10026 ubeshort x \b%04x-
2268
+ >0x10028 ubeshort x \b%04x-
2269
+ >0x1002a ubeshort x \b%04x
2270
+ >0x1002c ubelong x \b%08x,
2271
+ >0x10078 lequad x %lld/
2272
+ >0x10070 lequad x \b%lld bytes used,
2273
+ >0x10088 lequad x %lld devices
2274
+
2275
+ 0 string btrfs-stream BTRFS stream file
2276
+
2277
+ # dvdisaster's .ecc
2278
+ # From: "Nelson A. de Oliveira" <naoliv@gmail.com>
2279
+ 0 string *dvdisaster* dvdisaster error correction file
2280
+
2281
+ # xfs metadump image
2282
+ # mb_magic XFSM at 0; superblock magic XFSB at 1 << mb_blocklog
2283
+ # but can we do the << ? For now it's always 512 (0x200) anyway.
2284
+ 0 string XFSM
2285
+ >0x200 string XFSB XFS filesystem metadump image
2286
+
2287
+ # Type: CROM filesystem
2288
+ # From: Werner Fink <werner@suse.de>
2289
+ 0 string CROMFS CROMFS
2290
+ >6 string >\0 \b version %2.2s,
2291
+ >8 ulequad >0 \b block data at %lld,
2292
+ >16 ulequad >0 \b fblock table at %lld,
2293
+ >24 ulequad >0 \b inode table at %lld,
2294
+ >32 ulequad >0 \b root at %lld,
2295
+ >40 ulelong >0 \b fblock size = %d,
2296
+ >44 ulelong >0 \b block size = %d,
2297
+ >48 ulequad >0 \b bytes = %lld
2298
+
2299
+ # Type: xfs metadump image
2300
+ # From: Daniel Novotny <dnovotny@redhat.com>
2301
+ # mb_magic XFSM at 0; superblock magic XFSB at 1 << mb_blocklog
2302
+ # but can we do the << ? For now it's always 512 (0x200) anyway.
2303
+ 0 string XFSM
2304
+ >0x200 string XFSB XFS filesystem metadump image
2305
+
2306
+ # Type: delta ISO
2307
+ # From: Daniel Novotny <dnovotny@redhat.com>
2308
+ 0 string DISO Delta ISO data,
2309
+ >4 belong x version %d
2310
+
2311
+ # JFS2 (Journaling File System) image. (Old JFS1 has superblock at 0x1000.)
2312
+ # See linux/fs/jfs/jfs_superblock.h for layout; see jfs_filsys.h for flags.
2313
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2314
+ 0x8000 string JFS1
2315
+ # Because it's text-only magic, check a binary value (version) to be sure.
2316
+ # Should always be 2, but mkfs.jfs writes it as 1. Needs to be 2 or 1 to be
2317
+ # mountable.
2318
+ >&0 lelong <3 JFS2 filesystem image
2319
+ # Label is followed by a UUID; we have to limit string length to avoid
2320
+ # appending the UUID in the case of a 16-byte label.
2321
+ >>&144 regex [\x20-\x7E]{1,16} (label "%s")
2322
+ >>&0 lequad x \b, %lld blocks
2323
+ >>&8 lelong x \b, blocksize %d
2324
+ >>&32 lelong&0x00000006 >0 (dirty)
2325
+ >>&36 lelong >0 (compressed)
2326
+
2327
+ # LFS
2328
+ 0 lelong 0x070162 LFS filesystem image
2329
+ >4 lelong 1 version 1,
2330
+ >>8 lelong x \b blocks %u,
2331
+ >>12 lelong x \b blocks per segment %u,
2332
+ >4 lelong 2 version 2,
2333
+ >>8 lelong x \b fragments %u,
2334
+ >>12 lelong x \b bytes per segment %u,
2335
+ >16 lelong x \b disk blocks %u,
2336
+ >20 lelong x \b block size %u,
2337
+ >24 lelong x \b fragment size %u,
2338
+ >28 lelong x \b fragments per block %u,
2339
+ >32 lelong x \b start for free list %u,
2340
+ >36 lelong x \b number of free blocks %d,
2341
+ >40 lelong x \b number of files %u,
2342
+ >44 lelong x \b blocks available for writing %d,
2343
+ >48 lelong x \b inodes in cache %d,
2344
+ >52 lelong x \b inode file disk address %#x,
2345
+ >56 lelong x \b inode file inode number %u,
2346
+ >60 lelong x \b address of last segment written %#x,
2347
+ >64 lelong x \b address of next segment to write %#x,
2348
+ >68 lelong x \b address of current segment written %#x
2349
+
2350
+ 0 string td\000 floppy image data (TeleDisk, compressed)
2351
+ 0 string TD\000 floppy image data (TeleDisk)
2352
+
2353
+ 0 string CQ\024 floppy image data (CopyQM,
2354
+ >16 leshort x %d sectors,
2355
+ >18 leshort x %d heads.)
2356
+
2357
+ 0 string ACT\020Apricot\020disk\020image\032\004 floppy image data (ApriDisk)
2358
+
2359
+ # URL: http://fileformats.archiveteam.org/wiki/LoadDskF/SaveDskF
2360
+ # Update: Joerg Jenderek
2361
+ # Note: called "IBM SKF disk image" by TrID
2362
+ # verfied by 7-Zip `7z l -tFAT -slt *.dsk` and
2363
+ # `deark -l -m loaddskf 06200D19.DSK`
2364
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf-old.trid.xml
2365
+ 0 beshort 0xAA58
2366
+ >0 use SaveDskF
2367
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf.trid.xml
2368
+ 0 beshort 0xAA59
2369
+ >0 use SaveDskF
2370
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf-comp.trid.xml
2371
+ 0 beshort 0xAA5A
2372
+ # skip foo by additional check for unused upper byte of media type in SaveDskF header
2373
+ #>3 ubyte =0
2374
+ # skip bar by additional check for valid "low" number of heads in SaveDskF header
2375
+ #>>26 uleshort <3
2376
+ # skip foo by additional check for unused double word field in SaveDskF header
2377
+ #>>>30 long =0
2378
+ #>>>>0 use SaveDskF
2379
+ >0 use SaveDskF
2380
+ # display information about IBM SaveDskF floppy disk images
2381
+ 0 name SaveDskF
2382
+ # SaveDskF magic
2383
+ >0 beshort x floppy image data (IBM SaveDskF
2384
+ #!:mime application/octet-stream
2385
+ !:mime application/x-ibm-dsk
2386
+ !:ext dsk
2387
+ # also suffix with digit (1dk .2dk ...); NO example FOUND!
2388
+ #!:ext dsk/1dk/2dk
2389
+ >1 ubyte =0x58 \b, old)
2390
+ >1 ubyte =0x59 \b)
2391
+ >1 ubyte =0x5A \b, compressed)
2392
+ # media type; the first byte of the FAT like: 0xF0 (usual floppy) 0xF9 0xFE
2393
+ # https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system
2394
+ >2 ubyte !0xF0 \b, Media descriptor %#x
2395
+ # upper byte of media type is not used; so this seems to be nil
2396
+ >3 ubyte !0 \b, upper byte of media type %#x
2397
+ # sector size in bytes as in the BIOS parameter block like: 512 ; SAVEDSKF.EXE with other sizes produce garbage images
2398
+ >4 uleshort !512 \b, Bytes/sector %u
2399
+ # cluster mask; number of sectors per cluster, minus 1
2400
+ >6 uleshort+1 >1 \b, sectors/cluster %u
2401
+ #>6 uleshort+1 x \b, sectors/cluster %u
2402
+ # cluster shift; log2(cluster size / sector size) like: 0~1=ClusterSize/SectorSize
2403
+ >7 ubyte >0 \b, cluster shift %u
2404
+ #>7 ubyte x \b, cluster shift %u
2405
+ # reserved sectors; as in the BIOS parameter block like: 1 256 (2M256R-K.DSK)
2406
+ >8 uleshort >1 \b, reserved sectors %u
2407
+ #>8 uleshort x \b, reserved sectors %u
2408
+ # FAT copies; as in the BIOS parameter block like: 2 (usual) 1 (2-NK.DSK)
2409
+ >10 ubyte !2 \b, FAT
2410
+ # plural s
2411
+ >>10 ubyte >1 \bs
2412
+ >>10 ubyte x %u
2413
+ # root directory entries; as in the BIOS parameter block like: 224 (usual) 64 (H1-NK.DSK) 4096 (2-NK.DSK)
2414
+ >11 uleshort !224 \b, root entries %u
2415
+ # sector number of first cluster (count sectors used by boot sector, FATs and root directory) like: 7 10 29 33 288
2416
+ >13 uleshort !33 \b, 1st cluster at sector %u
2417
+ # number of clusters in image; empty clusters at the end are not saved and counted like: 2372 2848
2418
+ >15 uleshort x \b, %u clusters
2419
+ # sectors/FAT; as in the BIOS parameter block like: 1 (H1-NK.DSK) 7 9
2420
+ >17 ubyte !9 \b, sectors/FAT %u
2421
+ # sector number of root directory (ie, count of sectors used by boot sector and FATs) like: 3 (H1-NK.DSK) 9 10 15 19 274 (2M256R-K.DSK)
2422
+ >18 uleshort !19 \b, root directory at sector %u
2423
+ # checksum; sum of all bytes in the file
2424
+ >20 ulelong x \b, checksum %#8.8x
2425
+ # cylinders; number of cylinders like: 40 80
2426
+ >24 uleshort !80 \b, %u cylinders
2427
+ #>24 uleshort x \b, %u cylinders
2428
+ # heads; number of heads as in the BIOS parameter block like: 1 (H1-NK.DSK) 2
2429
+ >26 uleshort !2 \b, heads %u
2430
+ #>26 uleshort x \b, heads %u
2431
+ # sectors/track; number of sectors per track as in the BIOS parameter block like: 8 15 18 36
2432
+ >28 uleshort !18 \b, sectors/track %u
2433
+ #>28 uleshort x \b, sectors/track %u
2434
+ # unused double word field seems to be always like: 0
2435
+ >30 ulelong !0 \b, at 0x1E %#x
2436
+ # number of sectors in images like: 1017 2786 2880
2437
+ >34 uleshort x \b, sectors %u
2438
+ # if string is "printable" it can be a real comment
2439
+ >(36.s) ubyte !0x00
2440
+ # if 1st sector is far enough away (> 0x29) then there is space for comment part
2441
+ >>38 uleshort >41
2442
+ # offset to comment string like: 28h=40
2443
+ >>>36 uleshort x \b, at %#x
2444
+ # comment string terminated with \r\n\0
2445
+ >>>(36.s) string x "%s"
2446
+ # offset to the first sector like: 0 (If this is 0, assume it is 0x200) 29h=41 (DISPLAY3.DSK) 31h 43h 45h 46h 48h 50h 200h=512
2447
+ >38 uleshort !0 \b, 1st sector at %#x
2448
+ # FOR DEBUGGING!
2449
+ #>(38.s) ubelong x SECTOR CONTENT %x
2450
+ # not compressed floppy image implies readable DOS boot sector inside image
2451
+ >>1 ubyte !0x5A
2452
+ # when not compressed it is readable as DOS boot sector via ./filesystems
2453
+ #>>>(38.s) indirect x \b; contains
2454
+ >38 uleshort =0 \b, 1st sector at 0x200 (0)
2455
+ # maybe standard DOS boot sector; NO example FOUND HERE!
2456
+ #>>0x200 indirect x \b; contains
2457
+
2458
+ 0 string \074CPM_Disk\076 disk image data (YAZE)
2459
+
2460
+ # From: Joerg Jenderek
2461
+ # URL: https://en.wikipedia.org/wiki/Central_Point_Software#cite_note-6
2462
+ # Reference: https://www.robcraig.com/download/transcopy-5-x-file-format
2463
+ # https://www.robcraig.com/download/transcopy-file-format-by-gene-thompson
2464
+ # http://mark0.net/download/triddefs_xml.7z/defs/t/tc-transcopy.trid.xml
2465
+ # TransCopy signature
2466
+ 0 beshort 0x5AA5
2467
+ # skip Intel serial flash ROM with invalid 0 disk sides handled by ./intel
2468
+ >0x103 ubyte !0
2469
+ # skip Intel serial flash ROM with unlikely "high" start cylinder 100 handled by ./intel
2470
+ #>>0x101 ubyte <100 VALID_START_CYLINDER
2471
+ # skip Intel serial flash ROM with unlikely description handled by ./intel
2472
+ #>>>2 beshort !0xF00f VALID_DESCRIPTION
2473
+ # skip Intel serial flash ROM with invalid disk types 89h 88h handled by ./intel
2474
+ #>>>>0x100 byte !0x89 VALID_DISK_TYPE
2475
+ >>0 use tc-floppy
2476
+ # display information of Central Point Software (CPS) Option Board TransCopy floppy image
2477
+ 0 name tc-floppy
2478
+ >0 beshort x TransCopy disk image
2479
+ #!:mime application/octet-stream
2480
+ !:mime application/x-floppy-image-tc
2481
+ # like: disk04.tc VOCALC2.TC WIZ5_A.tc WIZ2_720.IMG
2482
+ !:ext tc/img
2483
+ # 1st description (optional 0-terminated maximal 32) like:
2484
+ # "Project Workbench 2.20" "Visi On Calc" "Wizardry V Disk 1 of 3"
2485
+ >2 string >\0 %.32s
2486
+ # 2nd desc. (optional 0-terminated maximal 32) like:
2487
+ # "(1988)." "Advanced - Utility" 'Program Disk 2"
2488
+ >0x22 string >\0 "%.32s"
2489
+ # Looks like ascii (like MESSAGES) formatted with attribute bytes (190)?
2490
+ # not needed for disk copy
2491
+ #>>0x42 string x '%.190s'
2492
+ #>>0x88 lestring16 x "%.8s"
2493
+ # disktype: 2~MFM High Density 3~MFM Double Density 4~Apple II GCR 5~FM Single Density
2494
+ # 6~Commodore GCR 7~MFM Double Density 8~Commodore Amiga Ch~Atari FM FFh~Unknown
2495
+ >0x100 ubyte !0xFF \b, disk type %u
2496
+ # StartingCylinder like: 0
2497
+ >0x101 ubyte x \b, cylinder
2498
+ >0x101 ubyte !0 start=%u
2499
+ # EndingCylinder like: 40 (often) 41 79
2500
+ >0x102 ubyte x end=%u
2501
+ # NumberOfSides like: 2
2502
+ >0x103 ubyte !2 \b, %u sides
2503
+ # TrackIncrement like: 1
2504
+ >0x104 ubyte !1 \b, track increment %u
2505
+ # TrackPosTbl Track skew
2506
+ #>0x105 ubequad x \b, Track skew %#16.16llx
2507
+ # TrackOffsTbl
2508
+ #>0x305 ubequad x \b, TrackOffsTbl %#16.16llx
2509
+ # TrackLngthTbl
2510
+ #>0x505 ubequad x \b, TrackLngthTbl %#16.16llx
2511
+ # TrackTypeTable
2512
+ #>0x705 ubequad x \b, TrackTypeTable %#16.16llx
2513
+ # Address mark timing
2514
+ #>0x905 ubequad x \b, Address mark timing %#16.16llx
2515
+ # Track fragment
2516
+ #>0x2905 ubequad !0 \b, Track fragment %#16.16llx
2517
+ # Track data
2518
+ #>0x4000 ubequad !0 \b, Track data %#16.16llx
2519
+
2520
+ # ReFS
2521
+ # Richard W.M. Jones <rjones@redhat.com>
2522
+ 0 string \0\0\0ReFS\0 ReFS filesystem image
2523
+
2524
+ # EFW encase image file format:
2525
+ # Gregoire Passault
2526
+ # http://www.forensicswiki.org/wiki/Encase_image_file_format
2527
+ 0 string EVF\x09\x0d\x0a\xff\x00 EWF/Expert Witness/EnCase image file format
2528
+
2529
+ # UBIfs
2530
+ # Linux kernel sources: fs/ubifs/ubifs-media.h
2531
+ 0 lelong 0x06101831
2532
+ >0x16 leshort 0 UBIfs image
2533
+ >0x08 lequad x \b, sequence number %llu
2534
+ >0x10 leshort x \b, length %u
2535
+ >0x04 lelong x \b, CRC %#08x
2536
+
2537
+ 0 lelong 0x23494255
2538
+ >0x04 leshort <2
2539
+ >0x05 string \0\0\0
2540
+ >0x1c string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
2541
+ >0x04 leshort x UBI image, version %u
2542
+
2543
+ # NEC PC-88 2D disk image
2544
+ # From Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
2545
+ 0x20 ulelong&0xFFFFFEFF 0x2A0
2546
+ >0x10 string \0\0\0\0\0\0\0\0\0\0
2547
+ >>0x280 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
2548
+ >>>0x1A ubyte&0xEF 0
2549
+ >>>>0x1B ubyte&0x8F 0
2550
+ >>>>>0x1B ubyte&70 <0x40
2551
+ >>>>>>0x1C ulelong >0x21
2552
+ >>>>>>>0 regex [[:print:]]* NEC PC-88 disk image, name=%s
2553
+ >>>>>>>>0x1B ubyte 0 \b, media=2D
2554
+ >>>>>>>>0x1B ubyte 0x10 \b, media=2DD
2555
+ >>>>>>>>0x1B ubyte 0x20 \b, media=2HD
2556
+ >>>>>>>>0x1B ubyte 0x30 \b, media=1D
2557
+ >>>>>>>>0x1B ubyte 0x40 \b, media=1DD
2558
+ >>>>>>>>0x1A ubyte 0x10 \b, write-protected
2559
+
2560
+ # HDD Raw Copy Tool disk image, file extension: .imgc
2561
+ # From Benjamin Vanheuverzwijn <bvanheu@gmail.com>
2562
+ 0 pstring HDD\ Raw\ Copy\ Tool %s
2563
+ >0x100 pstring x %s
2564
+ >0x200 pstring x - HD model: %s
2565
+ #>0x300 pstring x unknown %s
2566
+ >0x400 pstring x serial: %s
2567
+ #>0x500 pstring x unknown: %s
2568
+ !:ext imgc
2569
+
2570
+ # http://martin.hinner.info/fs/bfs/bfs-structure.html
2571
+ 0 lelong 0x1BADFACE SCO UnixWare BFS filesystem
2572
+
2573
+ # https://arstechnica.com/information-technology/2018/07/the-beos-filesystem/
2574
+ 32 lelong 0x42465331 BE/OS BFS1 filesystem
2575
+ >36 lelong x \b, byte order %d
2576
+ >40 lelong x \b, block size %d
2577
+ >44 lelong x \b, block shift %d
2578
+ >48 lequad x \b, total blocks %lld
2579
+ >56 lequad x \b, used blocks %lld
2580
+
2581
+
2582
+ 0 name next
2583
+ >0 lelong x \b, size %d
2584
+ >4 string x \b, label %s
2585
+
2586
+ # https://opensource.apple.com/source/IOStorageFamily/IOStorageFamily-44.3\
2587
+ # /IONeXTPartitionScheme.h
2588
+ 0 string NeXT NeXT version 1 disklabel
2589
+ >12 use next
2590
+ 0 string dlV1 NeXT version 2 disklabel
2591
+ >12 use next
2592
+ 0 string dlV2 NeXT version 3 disklabel
2593
+ >12 use next
2594
+
2595
+ # bcachefs
2596
+ # From: Thomas Wei�schuh <thomas@t-8ch.de>
2597
+
2598
+ 0 name bcachefs-uuid
2599
+ >0 ubelong x \b%08x
2600
+ >4 ubeshort x \b-%04x
2601
+ >6 ubeshort x \b-%04x
2602
+ >8 ubeshort x \b-%04x
2603
+ >10 ubelong x \b-%08x
2604
+ >14 ubeshort x \b%04x
2605
+
2606
+ 0 name bcachefs bcachefs
2607
+ >0x68 lequad 8 \b, UUID=
2608
+ >>0x38 use bcachefs-uuid
2609
+ >>0x48 string >0 \b, label "%.32s"
2610
+ >>0x10 uleshort x \b, version %u
2611
+ >>0x12 uleshort x \b, min version %u
2612
+ >>0x7a byte x \b, device %d
2613
+ # assumes the first field is the members field
2614
+ >>0x2f4 ulelong 0x01 \b/UUID=
2615
+ >>>0x2f0 default x
2616
+ >>>&(0x07a.b*56) use bcachefs-uuid
2617
+ >>0x07b byte x \b, %d devices
2618
+ >>0x090 byte ^0x02 \b (unclean)
2619
+
2620
+ 0x1018 string \xc6\x85\x73\xf6\x4e\x1a\x45\xca\x82\x65\xf5\x7f\x48\xba\x6d\x81
2621
+ >0x1000 use bcachefs
2622
+
2623
+ 0x1018 string \xc6\x85\x73\xf6\x66\xce\x90\xa9\xd9\x6a\x60\xcf\x80\x3d\xf7\xef
2624
+ >0x1000 use bcachefs
2625
+
2626
+ # EROFS
2627
+ # https://kernel.googlesource.com/pub/scm/linux/kernel/git/xiang/erofs-utils/\
2628
+ # +/refs/heads/experimental/include/erofs_fs.h#12
2629
+ 1024 lelong 0xE0F5E1E2 EROFS filesystem
2630
+ #>1028 lelong x \b, checksum=%#x
2631
+ >1032 lelong >0 \b, compat:
2632
+ >>1032 lelong &1 SB_CHKSUM
2633
+ >>1032 lelong &2 MTIME
2634
+ >1036 byte x \b, blocksize=%u
2635
+ >1037 byte x \b, exslots=%u
2636
+ #>1038 leshort x \b, root_nid=%d
2637
+ #>1040 lequad x \b, inodes=%ld
2638
+ #>1048 leldate x \b, build_time=%s
2639
+ #>1056 lelong x \b.%d
2640
+ #>1060 lelong x \b, blocks=%d
2641
+ #>1064 lelong x \b, metadata@%#x
2642
+ #>1068 lelong x \b, xattr@%#x
2643
+ >1072 guid x \b, uuid=%s
2644
+ >1088 string >0 \b, name=%s
2645
+ >1104 lelong >0 \b, incompat:
2646
+ >>1104 lelong &1 LZ4_0PADDING
2647
+ >>1104 lelong &2 BIG_PCLUSTER
2648
+ >>1104 lelong &4 CHUNKED_FILE
2649
+ >>1104 lelong &8 DEVICE_TABLE
2650
+ >>1104 lelong &16 ZTAILPACKING
2651
+
2652
+ # YAFFS
2653
+ # The layout itself is undocumented, determined by the memory layout of the
2654
+ # reference implementation. This signature is derived from the
2655
+ # reference implementation code and generated test cases
2656
+ # We recognize the start of an object header defined by yaffs_obj_hdr:
2657
+ # (Note the values being encoded depending on platform endianess)
2658
+
2659
+ # u32 type /* enum yaffs_obj_type, valid 1-5 */
2660
+ # u32 parent_obj_id; /* 1 for root objects we recognize */
2661
+ # u16 sum_no_longer_used; /* checksum of name. Not used by YAFFS and memset to 0xFF */
2662
+ # YCHAR name[YAFFS_MAX_NAME_LENGTH + 1];
2663
+
2664
+ # mkyaffsimage always writes a root directory with empty name, then processing the target directory contents
2665
+ # mkyaffs2image directly proceeds to writing entries with the appropriate u32 YAFFS_OBJECT_TYPE (1-5 valid), each with parent id 1
2666
+
2667
+ 0 name yaffs
2668
+ >0 ulelong 1 \b, type file
2669
+ >0 ulelong 2 \b, type symlink
2670
+ >0 ulelong 3 \b, type root or directory
2671
+ >0 ulelong 4 \b, type hardlink
2672
+ >0 ulelong 5 \b, type special
2673
+ >0xA byte 0 \b, v1 root directory
2674
+ >0xA byte !0 \b, object entry
2675
+ >>0xA string x (name: "%s")
2676
+
2677
+ # Little Endian: XX 00 00 00 01 00 00 00 FF FF YY
2678
+ # XX: 01 - 05 (object type)
2679
+ # YY: 00 for version 1 root directory, > 00 for version 2 (name data)
2680
+ 0x1 string \x00\x00\x00\x01\x00\x00\x00\xFF\xFF
2681
+ >0 ulelong 0
2682
+ >0 ulelong >5
2683
+ >0 default x YAFFS filesystem root entry (little endian)
2684
+ >>0 use yaffs
2685
+
2686
+ # Big Endian: 00 00 00 XX 00 00 00 01 FF FF YY
2687
+ # XX: 01 - 05 (object type)
2688
+ # YY: 00 for version 1 root directory, > 00 for version 2 (name data)
2689
+ 0x4 string \x00\x00\x00\x01\xFF\xFF
2690
+ >0 string \x00\x00\x00
2691
+ >>0 ubelong 0
2692
+ >>0 ubelong >5
2693
+ >>0 default x YAFFS filesystem root entry (big endian)
2694
+ >>>0 use \^yaffs