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,2586 @@
1
+ #------------------------------------------------------------------------------
2
+ # $File: archive,v 1.191 2023/05/08 01:31:46 christos Exp $
3
+ # archive: file(1) magic for archive formats (see also "msdos" for self-
4
+ # extracting compressed archives)
5
+ #
6
+ # cpio, ar, arc, arj, hpack, lha/lharc, rar, squish, uc2, zip, zoo, etc.
7
+ # pre-POSIX "tar" archives are also handled in the C code ../../src/is_tar.c.
8
+
9
+ # POSIX tar archives
10
+ # URL: https://en.wikipedia.org/wiki/Tar_(computing)
11
+ # Reference: https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current
12
+ # header mainly padded with nul bytes
13
+ 500 quad 0
14
+ !:strength /2
15
+ # filename or extended attribute printable strings in range space null til umlaut ue
16
+ >0 ubeshort >0x1F00
17
+ >>0 ubeshort <0xFCFD
18
+ # last 4 header bytes often null but tar\0 in gtarfail2.tar gtarfail.tar-bad
19
+ # at https://sourceforge.net/projects/s-tar/files/testscripts/
20
+ >>>508 ubelong&0x8B9E8DFF 0
21
+ # nul, space or ascii digit 0-7 at start of mode
22
+ >>>>100 ubyte&0xC8 =0
23
+ >>>>>101 ubyte&0xC8 =0
24
+ # nul, space at end of check sum
25
+ >>>>>>155 ubyte&0xDF =0
26
+ # space or ascii digit 0 at start of check sum
27
+ >>>>>>>148 ubyte&0xEF =0x20
28
+ # FOR DEBUGGING:
29
+ #>>>>>>>>0 regex \^[0-9]{2,4}[.](png|jpg|jpeg|tif|tiff|gif|bmp) NAME "%s"
30
+ # check for 1st image main name with digits used for sorting
31
+ # and for name extension case insensitive like: PNG JPG JPEG TIF TIFF GIF BMP
32
+ >>>>>>>>0 regex \^[0-9]{2,4}[.](png|jpg|jpeg|tif|tiff|gif|bmp)
33
+ >>>>>>>>>0 use tar-cbt
34
+ # check for 1st member name with ovf suffix
35
+ >>>>>>>>0 regex \^.{1,96}[.](ovf)
36
+ >>>>>>>>>0 use tar-ova
37
+ # if 1st member name without digits and without used image suffix and without *.ovf then it is a TAR archive
38
+ >>>>>>>>0 default x
39
+ >>>>>>>>>0 use tar-file
40
+ # minimal check and then display tar archive information which can also be
41
+ # embedded inside others like Android Backup, Clam AntiVirus database
42
+ 0 name tar-file
43
+ >257 string !ustar
44
+ # header padded with nuls
45
+ >>257 ulong =0
46
+ # GNU tar version 1.29 with non pax format option without refusing
47
+ # creates misleading V7 header for Long path, Multi-volume, Volume type
48
+ >>>156 ubyte 0x4c GNU tar archive
49
+ !:mime application/x-gtar
50
+ !:ext tar/gtar
51
+ >>>156 ubyte 0x4d GNU tar archive
52
+ !:mime application/x-gtar
53
+ !:ext tar/gtar
54
+ >>>156 ubyte 0x56 GNU tar archive
55
+ !:mime application/x-gtar
56
+ !:ext tar/gtar
57
+ >>>156 default x tar archive (V7)
58
+ !:mime application/x-tar
59
+ !:ext tar
60
+ # other stuff in padding
61
+ # some implementations add new fields to the blank area at the end of the header record
62
+ # created for example by DOS TAR 3.20g 1994 Tim V.Shapore with -j option
63
+ >>257 ulong !0 tar archive (old)
64
+ !:mime application/x-tar
65
+ !:ext tar
66
+ # magic in newer, GNU, posix variants
67
+ >257 string =ustar
68
+ # 2 last char of magic and UStar version because string expression does not work
69
+ # 2 space characters followed by a null for GNU variant
70
+ >>261 ubelong =0x72202000 POSIX tar archive (GNU)
71
+ !:mime application/x-gtar
72
+ !:ext tar/gtar
73
+ # UStar version with ASCII "00"
74
+ >>261 ubelong 0x72003030 POSIX
75
+ # gLOBAL and ExTENSION type only found in POSIX.1-2001 format
76
+ >>>156 ubyte 0x67 \b.1-2001
77
+ >>>156 ubyte 0x78 \b.1-2001
78
+ >>>156 ubyte x tar archive
79
+ !:mime application/x-ustar
80
+ !:ext tar/ustar
81
+ # version with 2 binary nuls embedded in Android Backup like com.android.settings.ab
82
+ >>261 ubelong 0x72000000 tar archive (ustar)
83
+ !:mime application/x-ustar
84
+ !:ext tar/ustar
85
+ # not seen ustar variant with garbish version
86
+ >>261 default x tar archive (unknown ustar)
87
+ !:mime application/x-ustar
88
+ !:ext tar/ustar
89
+ # type flag of 1st tar archive member
90
+ #>156 ubyte x \b, %c-type
91
+ >156 ubyte x
92
+ >>156 ubyte 0 \b, file
93
+ >>156 ubyte 0x30 \b, file
94
+ >>156 ubyte 0x31 \b, hard link
95
+ >>156 ubyte 0x32 \b, symlink
96
+ >>156 ubyte 0x33 \b, char device
97
+ >>156 ubyte 0x34 \b, block device
98
+ >>156 ubyte 0x35 \b, directory
99
+ >>156 ubyte 0x36 \b, fifo
100
+ >>156 ubyte 0x37 \b, reserved
101
+ >>156 ubyte 0x4c \b, long path
102
+ >>156 ubyte 0x4d \b, multi volume
103
+ >>156 ubyte 0x56 \b, volume
104
+ >>156 ubyte 0x67 \b, global
105
+ >>156 ubyte 0x78 \b, extension
106
+ >>156 default x \b, type
107
+ >>>156 ubyte x '%c'
108
+ # name[100]
109
+ >0 string >\0 %-.60s
110
+ # mode mainly stored as an octal number in ASCII null or space terminated
111
+ >100 string >\0 \b, mode %-.7s
112
+ # user id mainly as octal numbers in ASCII null or space terminated
113
+ >108 string >\0 \b, uid %-.7s
114
+ # group id mainly as octal numbers in ASCII null or space terminated
115
+ >116 string >\0 \b, gid %-.7s
116
+ # size mainly as octal number in ASCII
117
+ >124 ubyte <0x38
118
+ >>124 string >\0 \b, size %-.12s
119
+ # coding indicated by setting the high-order bit of the leftmost byte
120
+ >124 ubyte >0xEF \b, size 0x
121
+ >>124 ubyte !0xff \b%2.2x
122
+ >>125 ubyte !0xff \b%2.2x
123
+ >>126 ubyte !0xff \b%2.2x
124
+ >>127 ubyte !0xff \b%2.2x
125
+ >>128 ubyte !0xff \b%2.2x
126
+ >>129 ubyte !0xff \b%2.2x
127
+ >>130 ubyte !0xff \b%2.2x
128
+ >>131 ubyte !0xff \b%2.2x
129
+ >>132 ubyte !0xff \b%2.2x
130
+ >>133 ubyte !0xff \b%2.2x
131
+ >>134 ubyte !0xff \b%2.2x
132
+ >>135 ubyte !0xff \b%2.2x
133
+ # seconds since 0:0:0 1 jan 1970 UTC as octal number mainly in ASCII null or space terminated
134
+ >136 string >\0 \b, seconds %-.11s
135
+ # header checksum stored as an octal number in ASCII null or space terminated
136
+ #>148 string x \b, cksum %.7s
137
+ # linkname[100]
138
+ >157 string >\0 \b, linkname %-.40s
139
+ # additional fields for ustar
140
+ >257 string =ustar
141
+ # owner user name null terminated
142
+ >>265 string >\0 \b, user %-.32s
143
+ # group name null terminated
144
+ >>297 string >\0 \b, group %-.32s
145
+ # device major minor if not zero
146
+ >>329 ubequad&0xCFCFCFCFcFcFcFdf !0
147
+ >>>329 string x \b, devmaj %-.7s
148
+ >>337 ubequad&0xCFCFCFCFcFcFcFdf !0
149
+ >>>337 string x \b, devmin %-.7s
150
+ # prefix[155]
151
+ >>345 string >\0 \b, prefix %-.155s
152
+ # old non ustar/POSIX tar
153
+ >257 string !ustar
154
+ >>508 string =tar\0
155
+ # padding[255] in old star
156
+ >>>257 string >\0 \b, padding: %-.40s
157
+ >>508 default x
158
+ # padding[255] in old tar sometimes comment field
159
+ >>>257 string >\0 \b, comment: %-.40s
160
+ # Summary: Comic Book Archive *.CBT with TAR format
161
+ # URL: https://en.wikipedia.org/wiki/Comic_book_archive
162
+ # http://fileformats.archiveteam.org/wiki/Comic_Book_Archive
163
+ # Note: there exist also RAR, ZIP, ACE and 7Z packed variants
164
+ 0 name tar-cbt
165
+ >0 string x Comic Book archive, tar archive
166
+ #!:mime application/x-tar
167
+ !:mime application/vnd.comicbook
168
+ #!:mime application/vnd.comicbook+tar
169
+ !:ext cbt
170
+ # name[100] probably like: 19.jpg 0001.png 0002.png
171
+ # or maybe like ComicInfo.xml
172
+ >0 string >\0 \b, 1st image %-.60s
173
+ # Summary: Open Virtualization Format *.OVF with disk images and more packed as TAR archive *.OVA
174
+ # From: Joerg Jenderek
175
+ # URL: https://en.wikipedia.org/wiki/Open_Virtualization_Format
176
+ # http://fileformats.archiveteam.org/wiki/OVF_(Open_Virtualization_Format)
177
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/o/ova.trid.xml
178
+ # Note: called "Open Virtualization Format package" by TrID
179
+ # assuming *.ovf comes first
180
+ 0 name tar-ova
181
+ >0 string x Open Virtualization Format Archive
182
+ #!:mime application/x-ustar
183
+ # http://extension.nirsoft.net/ova
184
+ !:mime application/x-virtualbox-ova
185
+ !:ext ova
186
+ # assuming name[100] like: DOS-0.9.ovf FreeDOS_1.ovf Win98SE_DE.ovf
187
+ >0 string >\0 \b, with %-.60s
188
+
189
+ # Incremental snapshot gnu-tar format from:
190
+ # https://www.gnu.org/software/tar/manual/html_node/Snapshot-Files.html
191
+ 0 string GNU\ tar- GNU tar incremental snapshot data
192
+ >&0 regex [0-9]\\.[0-9]+-[0-9]+ version %s
193
+
194
+ # cpio archives
195
+ #
196
+ # Yes, the top two "cpio archive" formats *are* supposed to just be "short".
197
+ # The idea is to indicate archives produced on machines with the same
198
+ # byte order as the machine running "file" with "cpio archive", and
199
+ # to indicate archives produced on machines with the opposite byte order
200
+ # from the machine running "file" with "byte-swapped cpio archive".
201
+ #
202
+ # The SVR4 "cpio(4)" hints that there are additional formats, but they
203
+ # are defined as "short"s; I think all the new formats are
204
+ # character-header formats and thus are strings, not numbers.
205
+ # URL: http://fileformats.archiveteam.org/wiki/Cpio
206
+ # https://en.wikipedia.org/wiki/Cpio
207
+ # Reference: https://people.freebsd.org/~kientzle/libarchive/man/cpio.5.txt
208
+ # Update: Joerg Jenderek
209
+ #
210
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cpio-bin.trid.xml
211
+ # Note: called "CPIO archive (binary)" by TrID, "cpio/Binary LE" by 7-Zip and "CPIO" by DROID via PUID fmt/635
212
+ 0 short 070707
213
+ # skip DROID fmt-635-signature-id-960.cpio by looking for pathname of 1st entry
214
+ >26 string >\0 cpio archive
215
+ !:mime application/x-cpio
216
+ # https://download.opensuse.org/distribution/leap/15.4/iso/openSUSE-Leap-15.4-NET-x86_64-Media.iso
217
+ # boot/x86_64/loader/bootlogo
218
+ # message.cpi
219
+ !:ext /cpio/cpi
220
+ >>0 use cpio-bin
221
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cpio-bin-sw.trid.xml
222
+ # Note: called "CPIO archive (byte swapped binary)" by TrID and "Cpio/Binary BE" by 7-Zip
223
+ 0 short 0143561 byte-swapped cpio archive
224
+ !:mime application/x-cpio # encoding: swapped
225
+ # https://telparia.com/fileFormatSamples/archive/cpio/skeleton2.cpio
226
+ !:ext cpio
227
+ >0 use cpio-bin-be
228
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cpio.trid.xml
229
+ # Note: called "CPIO archive (portable)" by TrID, "cpio/Portable ASCII" by 7-Zip and "cpio/odc" by GNU cpio
230
+ 0 string 070707 ASCII cpio archive (pre-SVR4 or odc)
231
+ !:mime application/x-cpio
232
+ # https://telparia.com/fileFormatSamples/archive/cpio/ pthreads-1.60B5.osr5src.cpio cinema.cpi VOL.000.008 VOL.000.012
233
+ !:ext cpio/cpi/008/012
234
+ # Note: called "CPIO archive (portable)" by TrID, "cpio/New ASCII" by 7-Zip and "cpio/newc" by GNU cpio
235
+ 0 string 070701 ASCII cpio archive (SVR4 with no CRC)
236
+ !:mime application/x-cpio
237
+ # https://telparia.com/fileFormatSamples/archive/cpio/MainActor-2.06.3.cpio
238
+ !:ext cpio
239
+ # Note: called "CPIO archive (portable)" by TrID, "cpio/New CRC" by 7-Zip and "cpio/crc" by GNU cpio
240
+ 0 string 070702 ASCII cpio archive (SVR4 with CRC)
241
+ !:mime application/x-cpio
242
+ # http://ftp.gnu.org/gnu/tar/tar-1.27.cpio.gz
243
+ # https://telparia.com/fileFormatSamples/archive/cpio/pcmcia
244
+ !:ext /cpio
245
+ # display information of old binary cpio archive
246
+ # Note: verfied by 7-Zip `7z l -tcpio -slt *.cpio` and
247
+ # `cpio -ivt --numeric-uid-gid --file=clam.bin-le.cpio`
248
+ 0 name cpio-bin
249
+ # c_dev; device number; WHAT IS THAT?
250
+ >2 uleshort x \b; device %u
251
+ # c_ino; truncated inode number; use `ls --inode`
252
+ >4 uleshort x \b, inode %u
253
+ # c_mode; mode specifies permissions and file type like: ?622~?rw-r--r-- by `ls -l`
254
+ >6 uleshort x \b, mode %o
255
+ # c_uid; numeric user id; use `ls --numeric-uid-gid`
256
+ >8 uleshort x \b, uid %u
257
+ # c_gid; numeric group id
258
+ >10 uleshort x \b, gid %u
259
+ # c_nlink; links to this file; directories at least 2
260
+ >12 uleshort >1 \b, %u links
261
+ # c_rdev; device number for block and character entries; zero for all other entries by writers
262
+ # like 0x0440 for /dev/ttyS0
263
+ >14 uleshort >0 \b, device %#4.4x
264
+ # c_mtime[2]; modification time in seconds since 1 January 1970; most-significant 16 bits first
265
+ >16 medate x \b, modified %s
266
+ # c_filesize[2]; size of pathname; most-significant 16 bits first like: 544
267
+ >22 melong x \b, %u bytes
268
+ # c_namesize; bytes in the pathname that follows the header like: 9
269
+ #>20 uleshort x \b, namesize %u
270
+ # pathname of entry like: "clam.exe"
271
+ >26 string x "%s"
272
+ # display information of old binary byte swapped cpio archive
273
+ # Note: verfied by 7-Zip `7z l -tcpio -slt *.cpio` and
274
+ # `LANGUAGE=C cpio -ivt --numeric-uid-gid --file=clam.bin-be.cpio`
275
+ 0 name cpio-bin-be
276
+ >2 ubeshort x \b; device %u
277
+ >4 ubeshort x \b, inode %u
278
+ >6 ubeshort x \b, mode %o
279
+ >8 ubeshort x \b, uid %u
280
+ >10 ubeshort x \b, gid %u
281
+ >12 ubeshort >1 \b, %u links
282
+ >14 ubeshort >0 \b, device %#4.4x
283
+ >16 bedate x \b, modified %s
284
+ >22 ubelong x \b, %u bytes
285
+ #>20 ubeshort x \b, namesize %u
286
+ >26 string x "%s"
287
+
288
+ #
289
+ # Various archive formats used by various versions of the "ar"
290
+ # command.
291
+ #
292
+
293
+ #
294
+ # Original UNIX archive formats.
295
+ # They were written with binary values in host byte order, and
296
+ # the magic number was a host "int", which might have been 16 bits
297
+ # or 32 bits. We don't say "PDP-11" or "VAX", as there might have
298
+ # been ports to little-endian 16-bit-int or 32-bit-int platforms
299
+ # (x86?) using some of those formats; if none existed, feel free
300
+ # to use "PDP-11" for little-endian 16-bit and "VAX" for little-endian
301
+ # 32-bit. There might have been big-endian ports of that sort as
302
+ # well.
303
+ #
304
+ 0 leshort 0177555 very old 16-bit-int little-endian archive
305
+ 0 beshort 0177555 very old 16-bit-int big-endian archive
306
+ 0 lelong 0177555 very old 32-bit-int little-endian archive
307
+ 0 belong 0177555 very old 32-bit-int big-endian archive
308
+
309
+ 0 leshort 0177545 old 16-bit-int little-endian archive
310
+ >2 string __.SYMDEF random library
311
+ 0 beshort 0177545 old 16-bit-int big-endian archive
312
+ >2 string __.SYMDEF random library
313
+ 0 lelong 0177545 old 32-bit-int little-endian archive
314
+ >4 string __.SYMDEF random library
315
+ 0 belong 0177545 old 32-bit-int big-endian archive
316
+ >4 string __.SYMDEF random library
317
+
318
+ #
319
+ # From "pdp" (but why a 4-byte quantity?)
320
+ #
321
+ 0 lelong 0x39bed PDP-11 old archive
322
+ 0 lelong 0x39bee PDP-11 4.0 archive
323
+
324
+ #
325
+ # XXX - what flavor of APL used this, and was it a variant of
326
+ # some ar archive format? It's similar to, but not the same
327
+ # as, the APL workspace magic numbers in pdp.
328
+ #
329
+ 0 long 0100554 apl workspace
330
+
331
+ #
332
+ # System V Release 1 portable(?) archive format.
333
+ #
334
+ 0 string =<ar> System V Release 1 ar archive
335
+ !:mime application/x-archive
336
+
337
+ #
338
+ # Debian package; it's in the portable archive format, and needs to go
339
+ # before the entry for regular portable archives, as it's recognized as
340
+ # a portable archive whose first member has a name beginning with
341
+ # "debian".
342
+ #
343
+ # Update: Joerg Jenderek
344
+ # URL: https://en.wikipedia.org/wiki/Deb_(file_format)
345
+ 0 string =!<arch>\ndebian
346
+ # https://manpages.debian.org/testing/dpkg/dpkg-split.1.en.html
347
+ >14 string -split part of multipart Debian package
348
+ !:mime application/vnd.debian.binary-package
349
+ # udeb is used for stripped down deb file
350
+ !:ext deb/udeb
351
+ >14 string -binary Debian binary package
352
+ !:mime application/vnd.debian.binary-package
353
+ # For ipk packager see also https://en.wikipedia.org/wiki/Opkg
354
+ !:ext deb/udeb/ipk
355
+ # This should not happen
356
+ >14 default x Unknown Debian package
357
+ # NL terminated version; for most Debian cases this is 2.0 or 2.1 for split
358
+ >68 string >\0 (format %s)
359
+ #>68 string !2.0\n
360
+ #>>68 string x (format %.3s)
361
+ >68 string =2.0\n
362
+ # 2nd archive name=control archive name like control.tar.gz or control.tar.xz
363
+ # or control.tar.zst
364
+ >>72 string >\0 \b, with %.15s
365
+ # look for 3rd archive name=data archive name like data.tar.{gz,xz,bz2,lzma}
366
+ >>0 search/0x93e4f data.tar. \b, data compression
367
+ # the above line only works if FILE_BYTES_MAX in ../../src/file.h is raised
368
+ # for example like libreoffice-dev-doc_1%3a5.2.7-1+rpi1+deb9u3_all.deb
369
+ >>>&0 string x %.2s
370
+ # skip space (0x20 BSD) and slash (0x2f System V) character marking end of name
371
+ >>>&2 ubyte !0x20
372
+ >>>>&-1 ubyte !0x2f
373
+ # display 3rd character of file name extension like 2 of bz2 or m of lzma
374
+ >>>>>&-1 ubyte x \b%c
375
+ >>>>>>&0 ubyte !0x20
376
+ >>>>>>>&-1 ubyte !0x2f
377
+ # display 4th character of file name extension like a of lzma
378
+ >>>>>>>>&-1 ubyte x \b%c
379
+ # split debian package case
380
+ >68 string =2.1\n
381
+ # dpkg-1.18.25/dpkg-split/info.c
382
+ # NL terminated ASCII package name like ckermit
383
+ >>&0 string x \b, %s
384
+ # NL terminated package version like 302-5.3
385
+ >>>&1 string x %s
386
+ # NL terminated MD5 checksum
387
+ >>>>&1 string x \b, MD5 %s
388
+ # NL terminated original package length
389
+ >>>>>&1 string x \b, unsplitted size %s
390
+ # NL terminated part length
391
+ >>>>>>&1 string x \b, part length %s
392
+ # NL terminated package part like n/m
393
+ >>>>>>>&1 string x \b, part %s
394
+ # NL terminated package architecture like armhf since dpkg 1.16.1 or later
395
+ >>>>>>>>&1 string x \b, %s
396
+
397
+ #
398
+ # MIPS archive; they're in the portable archive format, and need to go
399
+ # before the entry for regular portable archives, as it's recognized as
400
+ # a portable archive whose first member has a name beginning with
401
+ # "__________E".
402
+ #
403
+ 0 string =!<arch>\n__________E MIPS archive
404
+ !:mime application/x-archive
405
+ >20 string U with MIPS Ucode members
406
+ >21 string L with MIPSEL members
407
+ >21 string B with MIPSEB members
408
+ >19 string L and an EL hash table
409
+ >19 string B and an EB hash table
410
+ >22 string X -- out of date
411
+
412
+ #
413
+ # BSD/SVR2-and-later portable archive formats.
414
+ #
415
+ # Update: Joerg Jenderek
416
+ # URL: http://fileformats.archiveteam.org/wiki/AR
417
+ # Reference: https://www.unix.com/man-page/opensolaris/3HEAD/ar.h/
418
+ # Note: Mach-O universal binary in ./cafebabe is dependent
419
+ # TODO: unify current ar archive, MIPS archive, Debian package
420
+ # distinguish BSD, SVR; 32, 64 bit; HP from other 32-bit SVR;
421
+ # *.ar packages from *.a libraries. handle empty archive
422
+ 0 string =!<arch>\n current ar archive
423
+ # print first and possibly second ar_name[16] for debugging purpose
424
+ #>8 string x \b, 1st "%.16s"
425
+ #>68 string x \b, 2nd "%.16s"
426
+ !:mime application/x-archive
427
+ # a in most case for libraries; lib for Microsoft libraries; ar else cases
428
+ !:ext a/lib/ar
429
+ >8 string __.SYMDEF random library
430
+ # first member with long marked name __.SYMDEF SORTED implies BSD library
431
+ >68 string __.SYMDEF\ SORTED random library
432
+ # Reference: https://parisc.wiki.kernel.org/images-parisc/b/b2/Rad_11_0_32.pdf
433
+ # "archive file" entry moved from ./hp
434
+ # LST header system_id 0210h~PA-RISC 1.1,... identifies the target architecture
435
+ # LST header a_magic 0619h~relocatable library
436
+ >68 belong 0x020b0619 - PA-RISC1.0 relocatable library
437
+ >68 belong 0x02100619 - PA-RISC1.1 relocatable library
438
+ >68 belong 0x02110619 - PA-RISC1.2 relocatable library
439
+ >68 belong 0x02140619 - PA-RISC2.0 relocatable library
440
+ #EOF for common ar archives
441
+
442
+ #
443
+ # "Thin" archive, as can be produced by GNU ar.
444
+ #
445
+ 0 string =!<thin>\n thin archive with
446
+ >68 belong 0 no symbol entries
447
+ >68 belong 1 %d symbol entry
448
+ >68 belong >1 %d symbol entries
449
+
450
+ 0 search/1 -h- Software Tools format archive text
451
+
452
+ # ARC archiver, from Daniel Quinlan (quinlan@yggdrasil.com)
453
+ #
454
+ # The first byte is the magic (0x1a), byte 2 is the compression type for
455
+ # the first file (0x01 through 0x09), and bytes 3 to 15 are the MS-DOS
456
+ # filename of the first file (null terminated). Since some types collide
457
+ # we only test some types on basis of frequency: 0x08 (83%), 0x09 (5%),
458
+ # 0x02 (5%), 0x03 (3%), 0x04 (2%), 0x06 (2%). 0x01 collides with terminfo.
459
+ 0 lelong&0x8080ffff 0x0000081a ARC archive data, dynamic LZW
460
+ !:mime application/x-arc
461
+ 0 lelong&0x8080ffff 0x0000091a ARC archive data, squashed
462
+ !:mime application/x-arc
463
+ 0 lelong&0x8080ffff 0x0000021a ARC archive data, uncompressed
464
+ !:mime application/x-arc
465
+ 0 lelong&0x8080ffff 0x0000031a ARC archive data, packed
466
+ !:mime application/x-arc
467
+ 0 lelong&0x8080ffff 0x0000041a ARC archive data, squeezed
468
+ !:mime application/x-arc
469
+ 0 lelong&0x8080ffff 0x0000061a ARC archive data, crunched
470
+ !:mime application/x-arc
471
+ # [JW] stuff taken from idarc, obviously ARC successors:
472
+ 0 lelong&0x8080ffff 0x00000a1a PAK archive data
473
+ !:mime application/x-arc
474
+ 0 lelong&0x8080ffff 0x0000141a ARC+ archive data
475
+ !:mime application/x-arc
476
+ 0 lelong&0x8080ffff 0x0000481a HYP archive data
477
+ !:mime application/x-arc
478
+
479
+ # Acorn archive formats (Disaster prone simpleton, m91dps@ecs.ox.ac.uk)
480
+ # I can't create either SPARK or ArcFS archives so I have not tested this stuff
481
+ # [GRR: the original entries collide with ARC, above; replaced with combined
482
+ # version (not tested)]
483
+ #0 byte 0x1a RISC OS archive (spark format)
484
+ 0 string \032archive RISC OS archive (ArcFS format)
485
+ 0 string Archive\000 RISC OS archive (ArcFS format)
486
+
487
+ # All these were taken from idarc, many could not be verified. Unfortunately,
488
+ # there were many low-quality sigs, i.e. easy to trigger false positives.
489
+ # Please notify me of any real-world fishy/ambiguous signatures and I'll try
490
+ # to get my hands on the actual archiver and see if I find something better. [JW]
491
+ # probably many can be enhanced by finding some 0-byte or control char near the start
492
+
493
+ # idarc calls this Crush/Uncompressed... *shrug*
494
+ 0 string CRUSH Crush archive data
495
+ # Squeeze It (.sqz)
496
+ 0 string HLSQZ Squeeze It archive data
497
+ # SQWEZ
498
+ 0 string SQWEZ SQWEZ archive data
499
+ # HPack (.hpk)
500
+ 0 string HPAK HPack archive data
501
+ # HAP
502
+ 0 string \x91\x33HF HAP archive data
503
+ # MD/MDCD
504
+ 0 string MDmd MDCD archive data
505
+ # LIM
506
+ 0 string LIM\x1a LIM archive data
507
+ # SAR
508
+ 3 string LH5 SAR archive data
509
+ # BSArc/BS2
510
+ 0 string \212\3SB\020\0 BSArc/BS2 archive data
511
+ # Bethesda Softworks Archive (Oblivion)
512
+ 0 string BSA\0 BSArc archive data
513
+ >4 lelong x version %d
514
+ # MAR
515
+ 2 string =-ah MAR archive data
516
+ # ACB
517
+ #0 belong&0x00f800ff 0x00800000 ACB archive data
518
+ # CPZ
519
+ # TODO, this is what idarc says: 0 string \0\0\0 CPZ archive data
520
+ # JRC
521
+ 0 string JRchive JRC archive data
522
+ # Quantum
523
+ 0 string DS\0 Quantum archive data
524
+ # ReSOF
525
+ 0 string PK\3\6 ReSOF archive data
526
+ # QuArk
527
+ 0 string 7\4 QuArk archive data
528
+ # YAC
529
+ 14 string YC YAC archive data
530
+ # X1
531
+ 0 string X1 X1 archive data
532
+ 0 string XhDr X1 archive data
533
+ # CDC Codec (.dqt)
534
+ 0 belong&0xffffe000 0x76ff2000 CDC Codec archive data
535
+ # AMGC
536
+ 0 string \xad6" AMGC archive data
537
+ # NuLIB
538
+ 0 string N\xc3\xb5F\xc3\xa9lx\xc3\xa5 NuLIB archive data
539
+ # PakLeo
540
+ 0 string LEOLZW PAKLeo archive data
541
+ # ChArc
542
+ 0 string SChF ChArc archive data
543
+ # PSA
544
+ 0 string PSA PSA archive data
545
+ # CrossePAC
546
+ 0 string DSIGDCC CrossePAC archive data
547
+ # Freeze
548
+ 0 string \x1f\x9f\x4a\x10\x0a Freeze archive data
549
+ # KBoom
550
+ 0 string \xc2\xa8MP\xc2\xa8 KBoom archive data
551
+ # NSQ, must go after CDC Codec
552
+ 0 string \x76\xff NSQ archive data
553
+ # DPA
554
+ 0 string Dirk\ Paehl DPA archive data
555
+ # BA
556
+ # TODO: idarc says "bytes 0-2 == bytes 3-5"
557
+ # TTComp
558
+ # URL: http://fileformats.archiveteam.org/wiki/TTComp_archive
559
+ # Update: Joerg Jenderek
560
+ # GRR: line below is too general as it matches also Panorama database "TCDB 2003-10 demo.pan", others
561
+ 0 string \0\6
562
+ # look for first keyword of Panorama database *.pan
563
+ >12 search/261 DESIGN
564
+ # skip keyword with low entropy
565
+ >12 default x
566
+ # skip DOS 2.0 backup id file, sequence 6 with many nils like BACKUPID_xx6.@@@ handled by ./msdos
567
+ >>8 quad !0
568
+ >>>0 use ttcomp
569
+ # variant ASCII, 4K dictionary (strength=48=50-2). With strength=49 wrong order! WHY?
570
+ 0 string \1\6
571
+ # TODO:
572
+ # skip VAX-order 68k Blit mpx/mux executable (strength=50) handled by ./blit
573
+ !:strength -2
574
+ >0 use ttcomp
575
+ 0 string \0\5
576
+ # skip some DOS 2.0 backup id file, sequence 5 with many nils like BACKUPID_075.@@@ handled by ./msdos
577
+ >8 quad !0
578
+ >>0 use ttcomp
579
+ 0 string \1\5
580
+ # TODO:
581
+ # variant ASCII, 2K dictionary (strength=48=50-2). With strength=49 wrong order! WHY?
582
+ # skip ctab data (strength=50) handled by ./ibm6000
583
+ # skip locale data table (strength=50) handled by ./digital
584
+ !:strength -2
585
+ >0 use ttcomp
586
+ 0 string \0\4
587
+ # skip many Maple help database *.hdb with version tag handled by ./maple
588
+ >1028 string !version
589
+ # skip veclib maple.hdb by looking for Mable keyword
590
+ >>4 search/1091 Maple\040
591
+ #>4 search/34090 Maple\040
592
+ >>4 default x
593
+ # skip DOS 2.0-3.2 backed up sequence 4 with many nils like LOTUS5.RAR handled by ./msdos
594
+ # skip xBASE Compound Index file *.CDX with many nils
595
+ >>>0x54 quad !0
596
+ >>>>0 use ttcomp
597
+ 0 string \1\4
598
+ # TODO:
599
+ # skip shared library (strength=50) handled by ./ibm6000
600
+ !:strength -2
601
+ # skip Commodore PET BASIC programs (Mastermind.prg) with last 3 nil bytes (\0~end of line followed by 0000h line offset)
602
+ #>-4 ubelong x LAST_BYTES=%8.8x
603
+ >-4 ubelong&0x00FFffFF !0
604
+ >>0 use ttcomp
605
+ # display information of TTComp archive
606
+ 0 name ttcomp
607
+ # (version 5.25) labeled the entry as "TTComp archive data"
608
+ >0 ubyte x TTComp archive data
609
+ !:mime application/x-compress-ttcomp
610
+ # PBACKSCR.PI1
611
+ !:ext $xe/$ts/pi1/__d
612
+ # compression type: 0~binary compression 1~ASCII compression
613
+ >0 ubyte 0 \b, binary
614
+ >0 ubyte 1 \b, ASCII
615
+ # size of the dictionary: 4~1024 bytes 5~2048 bytes 6~4096 bytes
616
+ >1 ubyte 4 \b, 1K
617
+ >1 ubyte 5 \b, 2K
618
+ >1 ubyte 6 \b, 4K
619
+ >1 ubyte x dictionary
620
+ # https://mark0.net/forum/index.php?topic=848
621
+ # last 3 bytes probably have only 8 possible bit sequences
622
+ # xxxxxxxx 0000000x 11111111 ____FFh
623
+ # xxxxxxxx 10000000 01111111 __807Fh
624
+ # 0xxxxxxx 11000000 00111111 __C03Fh
625
+ # 00xxxxxx 11100000 00011111 __E01Fh
626
+ # 000xxxxx 11110000 00001111 __F00Fh
627
+ # 0000xxxx 11111000 00000111 __F807h
628
+ # 00000xxx 11111100 00000011 __FC03h
629
+ # 000000xx 11111110 00000001 __FE01h
630
+ # but for quickgif.__d 0A7DD4h
631
+ #>-3 ubyte x \b, last 3 bytes 0x%2.2x
632
+ #>-2 ubeshort x \b%4.4x
633
+ # From: Joerg Jenderek
634
+ # URL: https://en.wikipedia.org/wiki/Disk_Copy
635
+ # reference: http://nulib.com/library/FTN.e00005.htm
636
+ 0x52 ubeshort 0x0100
637
+ # test for disk image size equal or above 400k
638
+ >0x40 ubelong >409599
639
+ # test also for disk image size equal or below 1440k to skip
640
+ # windows7en.mbr UNICODE.DAT
641
+ #>>0x40 ubelong <1474561
642
+ # test now for "low" disk image size equal or below 64 MiB to skip
643
+ # windows7en.mbr (B441BBAAh) UNICODE.DAT (0400AF05h)
644
+ >>0x40 ubelong <0x04000001
645
+ # To skip Flags$StringJoiner.class with size 00106A61h test also for valid disk image sizes
646
+ # 00064000 for 400k GCR disks dc42-400k-gcr.trid.xml
647
+ # 000c8000 for 800k GCR disks dc42-800k-gcr.trid.xml
648
+ # 000b4000 for 720k MFM disks dc42-720k-mfm.trid.xml
649
+ # 00168000 for 1440k MFM disks dc42-1440k-mfm.trid.xml
650
+ # https://lisaem.sunder.net/LisaProjectDocs.txt
651
+ # 00500000 05M available
652
+ # 00A00000 10M available
653
+ # 01800000 24M possible
654
+ # 02000000 32M uncertain
655
+ # 04000000 64M uncertain
656
+ >>>0x40 ubelong&0xf8003fFF 0
657
+ # skip samples with invalid disk name length like:
658
+ # 181 (biosmd80.rom) 202 (Flags$StringJoiner.class) 90 (UNICODE.DAT)
659
+ >>>>0x0 ubyte <64
660
+ >>>>>0 use dc42-floppy
661
+ # display information of Apple DiskCopy 4.2 floppy image
662
+ 0 name dc42-floppy
663
+ # disk name length; maximal 63
664
+ #>0 ubyte x DISK NAME LENGTH %u
665
+ # ASCII image pascal (maximal 63 bytes) name padded with NULs like:
666
+ # "Microsoft Mail" "Disquette 2" "IIe Installer Disk"
667
+ # "-lisaem.sunder.net hd-" (dc42-lisaem.trid.xml) "-not a Macintosh disk" (dc42-nonmac.trid.xml)
668
+ >00 pstring/B x Apple DiskCopy 4.2 image %s
669
+ #!:mime application/octet-stream
670
+ !:mime application/x-dc42-floppy-image
671
+ !:apple dCpydImg
672
+ # probably also img like: "Utilitaires 2.img" "Installation 7.img"
673
+ !:ext image/dc42/img
674
+ # data size in bytes like: 409600 737280 819200 1474560
675
+ >0x40 ubelong x \b, %u bytes
676
+ # for debugging purpose size in hexadecimal
677
+ #>0x40 ubelong x (%#8.8x)
678
+ # tag size in bytes like: 0 (often) 2580h (PUID fmt/625) 4B00h (Microsoft Mail.image)
679
+ >0x44 ubelong >0 \b, %#x tag size
680
+ # data checksum
681
+ #>0x48 ubelong x \b, %#x checksum
682
+ # tag checksum
683
+ #>0x4c ubelong x \b, %#x tag checksum
684
+ # disk encoding like: 0 1 2 3 (PUID: fmt/625)
685
+ >0x50 ubyte 0 \b, GCR CLV ssdd (400k)
686
+ >0x50 ubyte 1 \b, GCR CLV dsdd (800k)
687
+ >0x50 ubyte 2 \b, MFM CAV dsdd (720k)
688
+ >0x50 ubyte 3 \b, MFM CAV dshd (1440k)
689
+ >0x50 ubyte >3 \b, %#x encoding
690
+ # format byte like: 12h (Lisa 400K) 24h (400K Macintosh) 96h (800K Apple II disk)
691
+ # 2 (Mac 400k "Disquette Installation 13.image")
692
+ # 22h (double-sided MFM or Mac 800k "Disco 12.image" "IIe Installer Disk.image")
693
+ >0x51 ubyte x \b, %#x format
694
+ #>0x54 ubequad x \b, data %#16.16llx
695
+ # ESP, could this conflict with Easy Software Products' (e.g.ESP ghostscript) documentation?
696
+ 0 string ESP ESP archive data
697
+ # ZPack
698
+ 0 string \1ZPK\1 ZPack archive data
699
+ # Sky
700
+ 0 string \xbc\x40 Sky archive data
701
+ # UFA
702
+ 0 string UFA UFA archive data
703
+ # Dry
704
+ 0 string =-H2O DRY archive data
705
+ # FoxSQZ
706
+ 0 string FOXSQZ FoxSQZ archive data
707
+ # AR7
708
+ 0 string ,AR7 AR7 archive data
709
+ # PPMZ
710
+ 0 string PPMZ PPMZ archive data
711
+ # MS Compress
712
+ # Update: Joerg Jenderek
713
+ # URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression
714
+ # Reference: https://hwiegman.home.xs4all.nl/fileformats/compress/szdd_kwaj_format.html
715
+ # Note: use correct version of extracting tool like EXPAND, UNPACK, DECOMP or 7Z
716
+ 4 string \x88\xf0\x27
717
+ # KWAJ variant
718
+ >0 string KWAJ MS Compress archive data, KWAJ variant
719
+ !:mime application/x-ms-compress-kwaj
720
+ # extension not working in version 5.32
721
+ # magic/Magdir/archive, 284: Warning: EXTENSION type ` ??_' has bad char '?'
722
+ # file: line 284: Bad magic entry ' ??_'
723
+ !:ext ??_
724
+ # compression method (0-4)
725
+ >>8 uleshort x \b, %u method
726
+ # offset of compressed data
727
+ >>10 uleshort x \b, %#x offset
728
+ #>>(10.s) uleshort x
729
+ #>>>&-6 string x \b, TEST extension %-.3s
730
+ # header flags to mark header extensions
731
+ >>12 uleshort >0 \b, %#x flags
732
+ # 4 bytes: decompressed length of file
733
+ >>12 uleshort &0x01
734
+ >>>14 ulelong x \b, original size: %u bytes
735
+ # 2 bytes: unknown purpose
736
+ # 2 bytes: length of unknown data + mentioned bytes
737
+ # 1-9 bytes: null-terminated file name
738
+ # 1-4 bytes: null-terminated file extension
739
+ >>12 uleshort &0x08
740
+ >>>12 uleshort ^0x01
741
+ >>>>12 uleshort ^0x02
742
+ >>>>>12 uleshort ^0x04
743
+ >>>>>>12 uleshort ^0x10
744
+ >>>>>>>14 string x \b, %-.8s
745
+ >>>>>>12 uleshort &0x10
746
+ >>>>>>>14 string x \b, %-.8s
747
+ >>>>>>>>&1 string x \b.%-.3s
748
+ >>>>>12 uleshort &0x04
749
+ >>>>>>12 uleshort ^0x10
750
+ >>>>>>>(14.s) uleshort x
751
+ >>>>>>>>&14 string x \b, %-.8s
752
+ >>>>>>12 uleshort &0x10
753
+ >>>>>>>(14.s) uleshort x
754
+ >>>>>>>>&14 string x \b, %-.8s
755
+ >>>>>>>>>&1 string x \b.%-.3s
756
+ >>>>12 uleshort &0x02
757
+ >>>>>12 uleshort ^0x04
758
+ >>>>>>12 uleshort ^0x10
759
+ >>>>>>>16 string x \b, %-.8s
760
+ >>>>>>12 uleshort &0x10
761
+ >>>>>>>16 string x \b, %-.8s
762
+ >>>>>>>>&1 string x \b.%-.3s
763
+ >>>>>12 uleshort &0x04
764
+ >>>>>>12 uleshort ^0x10
765
+ >>>>>>>(16.s) uleshort x
766
+ >>>>>>>>&16 string x \b, %-.8s
767
+ >>>>>>12 uleshort &0x10
768
+ >>>>>>>(16.s) uleshort x
769
+ >>>>>>>&16 string x %-.8s
770
+ >>>>>>>>&1 string x \b.%-.3s
771
+ >>>12 uleshort &0x01
772
+ >>>>12 uleshort ^0x02
773
+ >>>>>12 uleshort ^0x04
774
+ >>>>>>12 uleshort ^0x10
775
+ >>>>>>>18 string x \b, %-.8s
776
+ >>>>>>12 uleshort &0x10
777
+ >>>>>>>18 string x \b, %-.8s
778
+ >>>>>>>>&1 string x \b.%-.3s
779
+ >>>>>12 uleshort &0x04
780
+ >>>>>>12 uleshort ^0x10
781
+ >>>>>>>(18.s) uleshort x
782
+ >>>>>>>>&18 string x \b, %-.8s
783
+ >>>>>>12 uleshort &0x10
784
+ >>>>>>>(18.s) uleshort x
785
+ >>>>>>>>&18 string x \b, %-.8s
786
+ >>>>>>>>>&1 string x \b.%-.3s
787
+ >>>>12 uleshort &0x02
788
+ >>>>>12 uleshort ^0x04
789
+ >>>>>>12 uleshort ^0x10
790
+ >>>>>>>20 string x \b, %-.8s
791
+ >>>>>>12 uleshort &0x10
792
+ >>>>>>>20 string x \b, %-.8s
793
+ >>>>>>>>&1 string x \b.%-.3s
794
+ >>>>>12 uleshort &0x04
795
+ >>>>>>12 uleshort ^0x10
796
+ >>>>>>>(20.s) uleshort x
797
+ >>>>>>>>&20 string x \b, %-.8s
798
+ >>>>>>12 uleshort &0x10
799
+ >>>>>>>(20.s) uleshort x
800
+ >>>>>>>>&20 string x \b, %-.8s
801
+ >>>>>>>>>&1 string x \b.%-.3s
802
+ # 2 bytes: length of data + mentioned bytes
803
+ #
804
+ # SZDD variant Haruhiko Okumura's LZSS or 7z type MsLZ
805
+ # URL: http://fileformats.archiveteam.org/wiki/MS-DOS_installation_compression
806
+ # Reference: http://www.cabextract.org.uk/libmspack/doc/szdd_kwaj_format.html
807
+ # http://mark0.net/download/triddefs_xml.7z/defs/s/szdd.trid.xml
808
+ # Note: called "Microsoft SZDD compressed (Haruhiko Okumura's LZSS)" by TrID
809
+ # verfied by 7-Zip `7z l -tMsLZ -slt *.??_` as MsLZ
810
+ # `deark -l -m lzss_oku -d2 setup-1-41.bin` as "LZSS.C by Haruhiko Okumura"
811
+ >0 string SZDD MS Compress archive data, SZDD variant
812
+ # 2nd part of signature
813
+ #>>4 ubelong 0x88F02733 \b, SIGNATURE OK
814
+ !:mime application/x-ms-compress-szdd
815
+ !:ext ??_
816
+ # The character missing from the end of the filename (0=unknown)
817
+ >>9 string >\0 \b, %-.1s is last character of original name
818
+ # https://www.betaarchive.com/forum/viewtopic.php?t=26161
819
+ # Compression mode: "A" (0x41) found but sometimes "B" in Windows 3.1 builds 026 and 034e
820
+ >>8 string !A \b, %-.1s method
821
+ >>10 ulelong >0 \b, original size: %u bytes
822
+ # Summary: InstallShield archive with SZDD compressed
823
+ # URL: https://community.flexera.com/t5/InstallShield-Knowledge-Base/InstallShield-Redistributable-Files/ta-p/5647
824
+ # From: Joerg Jenderek
825
+ 1 search/48/bs SZDD\x88\xF0\x27\x33 InstallShield archive
826
+ #!:mime application/octet-stream
827
+ !:mime application/x-installshield-compress-szdd
828
+ !:ext ibt
829
+ # name of compressed archive member like: setup.dl_ _setup7int.dl_ _setup2k.dl_ _igdi.dl_ cabinet.dl_
830
+ >0 string x %s
831
+ # name of uncompressed archive member like: setup.dll _Setup.dll IGdi.dll CABINET.DLL
832
+ >>&1 string x (%s)
833
+ # probably version like: 9.0.0.333 9.1.0.429 11.50.0.42618
834
+ >>>&1 string x \b, version %s
835
+ # SZDD member length like: 168048 169333 181842
836
+ >>>>&1 string x \b, %s bytes
837
+ # MS Compress archive data
838
+ #>&0 string SZDD \b, SIGNATURE FOUND
839
+ >&0 indirect x
840
+ # QBasic SZDD variant
841
+ 3 string \x88\xf0\x27
842
+ >0 string SZ\x20 MS Compress archive data, QBasic variant
843
+ !:mime application/x-ms-compress-sz
844
+ !:ext ??$
845
+ >>8 ulelong >0 \b, original size: %u bytes
846
+
847
+ # Summary: lzss compressed/EDI Pack
848
+ # From: Joerg Jenderek
849
+ # URL: http://fileformats.archiveteam.org/wiki/EDI_Install_packed_file
850
+ # Note: called "EDI Install LZS compressed data" by TrID and verified by
851
+ # command like `deark -l -m edi_pack -d2 BOOK01A.IC$` as "EDI Pack LZSS1"
852
+ 0 string EDILZSS
853
+ >7 string 1
854
+ # look for point character before orginal file name extension
855
+ >>8 search/9/b .
856
+ # check suffix of possible orginal file anme
857
+ #>>>&0 ubelong x SUFFIX=%8.8x
858
+ # samples without valid character after point in original file name field like: FENNEL.LZS PLANTAIN.LZS
859
+ >>>&0 ubyte <0x20
860
+ >>>>0 use edi-lzs
861
+ # samples with valid character after point in original file name field
862
+ >>>&0 ubyte >0x1F
863
+ # check 2nd charcter of suffix
864
+ #>>>>&0 ubyte x 2ND_SUFFIX=%x
865
+ # sample with one valid character after point followed by \0 in original file name field like: SPELMATE.H$
866
+ >>>>&0 ubyte =0
867
+ >>>>>0 use edi-pack
868
+ >>>>&0 ubyte >0x1F
869
+ # check 3rd charcter of suffix
870
+ #>>>>>&0 ubyte x 3RD_SUFFIX=%x
871
+ # no sample with 2 valid characters after point followed by \0 in original file name field
872
+ >>>>>&0 ubyte =0
873
+ >>>>>>0 use edi-pack
874
+ # samples with valid 3rd character after point in original file name field
875
+ >>>>>&0 ubyte >0x1F
876
+ # sample with 3 valid character after point followed by \0 in original file name field like: BOOK01A.IC$ CTL3D.DL$
877
+ >>>>>>&0 ubyte =0
878
+ >>>>>>>0 use edi-pack
879
+ # sample with 3 valid character after point followed by no \0 in original file name field like: HERBTEXT.LZS
880
+ >>>>>>&0 ubyte !0
881
+ >>>>>>>0 use edi-lzs
882
+ # no sample with invalid 3rd character after point in original file name field
883
+ >>>>>&0 default x
884
+ >>>>>>0 use edi-lzs
885
+ # sample with invalid 2nd character after point in original file name field like: LACERATE.LZS SPLINTER.LZS
886
+ >>>>&0 default x
887
+ >>>>>0 use edi-lzs
888
+ # sample without point character in original file name field like GUNSHOT.LZS
889
+ >>8 default x
890
+ >>>0 use edi-lzs
891
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/e/edi-lzss2.trid.xml
892
+ # Note: called "EDI Install Pro LZSS2 compressed data" by TrID and verified by
893
+ # command like `deark -l -m edi_pack -d2 4WAY.WA$` as "EDI Pack LZSS2"
894
+ >7 string 2 EDI LZSS2 packed
895
+ #!:mime application/octet-stream
896
+ !:mime application/x-edi-pack-lzss
897
+ # the name of a compressed file often ends in character '$' or '_'
898
+ !:ext ??$/??_
899
+ # original filename, NUL-terminated, padded to 13 bytes like: mci.vbx 4way.wav skymap.exe cmdialog.vbx
900
+ >>8 string x "%-0.13s"
901
+ # original file size, as a 4-byte integer.
902
+ >>21 ulelong x \b, %u bytes
903
+ # compressed data like: ff5249464606ec00 ff4d5aa601010000
904
+ >>>25 ubequad x \b, data %#16.16llx...
905
+ 0 name edi-pack
906
+ # Note: verified by command like `deark -l -d2 SPELMATE.H$` as "EDI Pack LZSS1"
907
+ # original filename, NUL-terminated, padded to 13 bytes like: ctl3d.dll spelmate.h filemenu.rc owl.def index-it.exe
908
+ # but not like \377Aloe.lzs\273 (HERBTEXT.LZS)
909
+ >8 string x EDI LZSS packed "%-.13s"
910
+ #!:mime application/octet-stream
911
+ !:mime application/x-edi-pack-lzss
912
+ # the name of a compressed file often ends in character '$' or '_'
913
+ !:ext ??$/?$
914
+ # compressed data like: f7000001eff02020 ff4d5aa900020000 ff2f2a207370656c
915
+ >21 ubequad x \b, data %#16.16llx...
916
+ # URL: http://fileformats.archiveteam.org/wiki/EDI_LZSSLib
917
+ # Note: verified partly by command like `deark -l -m edi_pack -d2 GUNSHOT.LZS` as "EDI LZSSLib"
918
+ 0 name edi-lzs
919
+ # Note: verified by command like `deark -l -d2 GUNSHOT.LZS` as "EDI LZSSLib"
920
+ # no original filename looks like: \277BM\226.\0 \277BM.n\001 \277BM\226.\0 \277BM.g\001 \377Aloe.lzs\273
921
+ >8 string x EDI LZSSLib packed
922
+ #!:mime application/octet-stream
923
+ !:mime application/x-edi-pack-lzss
924
+ # The name of a compressed file ends with LZS suffix
925
+ !:ext lzs
926
+ # compressed data like: bf424df6e10100f3 ff416c6f652e6c7a ff416c6f652e6c7a
927
+ >8 ubequad x \b, data %#16.16llx...
928
+
929
+ # Summary: CAZIP compressed file
930
+ # From: Joerg Jenderek
931
+ # URL: http://fileformats.archiveteam.org/wiki/CAZIP
932
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/caz.trid.xml
933
+ # Note: Format is distinct from CAZIPXP compressed
934
+ 0 string \x0D\x0A\x1ACAZIP CAZIP compressed file
935
+ #!:mime application/octet-stream
936
+ !:mime application/x-compress-cazip
937
+ # like: BLINKER.WR_ CLIPDEFS._ CAOSETUP.EX_ CLIPPER.EX_ FILEIO.C_
938
+ !:ext ??_/?_/_
939
+
940
+ # Summary: FTCOMP compressed archive
941
+ # From: Joerg Jenderek
942
+ # URL: http://fileformats.archiveteam.org/wiki/FTCOMP
943
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-ftcomp.trid.xml
944
+ # Note: called by TrID "FTCOMP compressed archive"
945
+ # extracted by `unpack seahelp.hl_`
946
+ 24 string/b FTCOMP FTCOMP compressed archive
947
+ #!:mime application/octet-stream
948
+ !:mime application/x-compress-ftcomp
949
+ !:ext ??_/??@/dll/drv/pk2/
950
+ # probably A596FDFF magic at the beginning
951
+ >0 ubelong !0xA596FDFF \b, at beginning %#x
952
+ # probably original file name with directory like: \OS2\unpack.exe \SYSTEM\8514.DRV MAHJONGG.EXE
953
+ >41 string x "%s"
954
+
955
+ # MP3 (archiver, not lossy audio compression)
956
+ 0 string MP3\x1a MP3-Archiver archive data
957
+ # ZET
958
+ 0 string OZ\xc3\x9d ZET archive data
959
+ # TSComp
960
+ 0 string \x65\x5d\x13\x8c\x08\x01\x03\x00 TSComp archive data
961
+ # ARQ
962
+ 0 string gW\4\1 ARQ archive data
963
+ # Squash
964
+ 3 string OctSqu Squash archive data
965
+ # Terse
966
+ 0 string \5\1\1\0 Terse archive data
967
+ # UHarc
968
+ 0 string UHA UHarc archive data
969
+ # ABComp
970
+ 0 string \2AB ABComp archive data
971
+ 0 string \3AB2 ABComp archive data
972
+ # CMP
973
+ 0 string CO\0 CMP archive data
974
+ # Splint
975
+ 0 string \x93\xb9\x06 Splint archive data
976
+ # InstallShield
977
+ 0 string \x13\x5d\x65\x8c InstallShield Z archive Data
978
+ # Gather
979
+ 1 string GTH Gather archive data
980
+ # BOA
981
+ 0 string BOA BOA archive data
982
+ # RAX
983
+ 0 string ULEB\xa RAX archive data
984
+ # Xtreme
985
+ 0 string ULEB\0 Xtreme archive data
986
+ # Pack Magic
987
+ 0 string @\xc3\xa2\1\0 Pack Magic archive data
988
+ # BTS
989
+ 0 belong&0xfeffffff 0x1a034465 BTS archive data
990
+ # ELI 5750
991
+ 0 string Ora\ ELI 5750 archive data
992
+ # QFC
993
+ 0 string \x1aFC\x1a QFC archive data
994
+ 0 string \x1aQF\x1a QFC archive data
995
+ # PRO-PACK https://www.segaretro.org/Rob_Northen_compression
996
+ 0 string RNC
997
+ >3 byte 1 PRO-PACK archive data (compression 1)
998
+ >3 byte 2 PRO-PACK archive data (compression 2)
999
+ # 777
1000
+ 0 string 777 777 archive data
1001
+ # LZS221
1002
+ 0 string sTaC LZS221 archive data
1003
+ # HPA
1004
+ 0 string HPA HPA archive data
1005
+ # Arhangel
1006
+ 0 string LG Arhangel archive data
1007
+ # EXP1, uses bzip2
1008
+ 0 string 0123456789012345BZh EXP1 archive data
1009
+ # IMP
1010
+ 0 string IMP\xa IMP archive data
1011
+ # NRV
1012
+ 0 string \x00\x9E\x6E\x72\x76\xFF NRV archive data
1013
+ # Squish
1014
+ 0 string \x73\xb2\x90\xf4 Squish archive data
1015
+ # Par
1016
+ 0 string PHILIPP Par archive data
1017
+ 0 string PAR Par archive data
1018
+ # HIT
1019
+ 0 string UB HIT archive data
1020
+ # SBX
1021
+ 0 belong&0xfffff000 0x53423000 SBX archive data
1022
+ # NaShrink
1023
+ 0 string NSK NaShrink archive data
1024
+ # SAPCAR
1025
+ 0 string #\ CAR\ archive\ header SAPCAR archive data
1026
+ 0 string CAR\ 2.00 SAPCAR archive data
1027
+ 0 string CAR\ 2.01 SAPCAR archive data
1028
+ #!:mime application/octet-stream
1029
+ !:mime application/vnd.sar
1030
+ !:ext sar
1031
+ # Disintegrator
1032
+ 0 string DST Disintegrator archive data
1033
+ # ASD
1034
+ 0 string ASD ASD archive data
1035
+ # InstallShield CAB
1036
+ # Update: Joerg Jenderek at Nov 2021
1037
+ # URL: https://en.wikipedia.org/wiki/InstallShield
1038
+ # Reference: https://github.com/twogood/unshield/blob/master/lib/cabfile.h
1039
+ # Note: Not compatible with Microsoft CAB files
1040
+ # http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cab-ishield.trid.xml
1041
+ # CAB_SIGNATURE 0x28635349
1042
+ 0 string ISc( InstallShield
1043
+ #!:mime application/octet-stream
1044
+ !:mime application/x-installshield
1045
+ # http://mark0.net/download/triddefs_xml.7z/defs/a/ark-cab-ishield-hdr.trid.xml
1046
+ >16 ulelong !0 setup header
1047
+ # like: _SYS1.HDR _USER1.HDR data1.hdr
1048
+ !:ext hdr
1049
+ >16 ulelong =0 CAB
1050
+ # like: _SYS1.CAB _USER1.CAB DATA1.CAB data2.cab
1051
+ !:ext cab
1052
+ # https://github.com/twogood/unshield/blob/master/lib/helper.c
1053
+ # version like: 0x1005201 0x100600c 0x1007000 0x1009500
1054
+ # 0x2000578 0x20005dc 0x2000640 0x40007d0 0x4000834
1055
+ >4 ulelong x \b, version %#x
1056
+ # volume_info like: 0
1057
+ >8 ulelong !0 \b, volume_info %#x
1058
+ # cab_descriptor_offset like: 0x200
1059
+ >12 ulelong !0x200 \b, offset %#x
1060
+ #>0x200 ubequad x \b, at 0x200 %#16.16llx
1061
+ # cab_descriptor_size like: 0 (*.cab) BD5 C8B DA5 E2A E36 116C 251D 4DA9 56F0 5CC2 6E4B 777D 779E 1F7C2
1062
+ >16 ulelong !0 \b, descriptor size %#x
1063
+ # TOP4
1064
+ 0 string T4\x1a TOP4 archive data
1065
+ # BatComp left out: sig looks like COM executable
1066
+ # so TODO: get real 4dos batcomp file and find sig
1067
+ # BlakHole
1068
+ 0 string BH\5\7 BlakHole archive data
1069
+ # BIX
1070
+ 0 string BIX0 BIX archive data
1071
+ # ChiefLZA
1072
+ 0 string ChfLZ ChiefLZA archive data
1073
+ # Blink
1074
+ 0 string Blink Blink archive data
1075
+ # Logitech Compress
1076
+ 0 string \xda\xfa Logitech Compress archive data
1077
+ # ARS-Sfx (FIXME: really a SFX? then goto COM/EXE)
1078
+ 1 string (C)\ STEPANYUK ARS-Sfx archive data
1079
+ # AKT/AKT32
1080
+ 0 string AKT32 AKT32 archive data
1081
+ 0 string AKT AKT archive data
1082
+ # NPack
1083
+ 0 string MSTSM NPack archive data
1084
+ # PFT
1085
+ 0 string \0\x50\0\x14 PFT archive data
1086
+ # SemOne
1087
+ 0 string SEM SemOne archive data
1088
+ # PPMD
1089
+ 0 string \x8f\xaf\xac\x84 PPMD archive data
1090
+ # FIZ
1091
+ 0 string FIZ FIZ archive data
1092
+ # MSXiE
1093
+ 0 belong&0xfffff0f0 0x4d530000 MSXiE archive data
1094
+ # DeepFreezer
1095
+ 0 belong&0xfffffff0 0x797a3030 DeepFreezer archive data
1096
+ # DC
1097
+ 0 string =<DC- DC archive data
1098
+ # TPac
1099
+ 0 string \4TPAC\3 TPac archive data
1100
+ # Ai
1101
+ # Update: Joerg Jenderek
1102
+ # URL: http://fileformats.archiveteam.org/wiki/Ai_Archiver
1103
+ 0 string Ai\1\1\0 Ai archive data
1104
+ #!:mime application/octet-stream
1105
+ !:mime application/x-compress-ai
1106
+ !:ext ai
1107
+ 0 string Ai\1\0\0 Ai archive data
1108
+ #!:mime application/octet-stream
1109
+ !:mime application/x-compress-ai
1110
+ !:ext ai
1111
+ # Ai32
1112
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-ai.trid.xml
1113
+ # Note: called "Ai Archivator compressed archive" by TrID
1114
+ 0 string Ai\2\0 Ai32 archive data
1115
+ #!:mime application/octet-stream
1116
+ !:mime application/x-compress-ai
1117
+ !:ext ai
1118
+ # original file name
1119
+ >8 pstring/h x "%s"
1120
+ # according to TrID the next 3 bytes are nil
1121
+ >5 ubyte !0 \b, at 5 %#x
1122
+ >6 ubyte !0 \b, at 6 %#x
1123
+ >7 ubyte !0 \b, at 7 %#x
1124
+ # the fourth byte with value 0 is probably a flag for "non solid" mode
1125
+ #>3 ubyte =0x00 \b, unsolid mode
1126
+ 0 string Ai\2\1 Ai32 archive data
1127
+ #!:mime application/octet-stream
1128
+ !:mime application/x-compress-ai
1129
+ !:ext ai
1130
+ # original file name
1131
+ >8 pstring/h x "%s"
1132
+ # the fourth byte with value 0x01 is probably a flag for "solid" mode; this is not the default
1133
+ >3 ubyte =0x01 \b, solid mode
1134
+ # SBC
1135
+ 0 string SBC SBC archive data
1136
+ # Ybs
1137
+ 0 string YBS Ybs archive data
1138
+ # DitPack
1139
+ 0 string \x9e\0\0 DitPack archive data
1140
+ # DMS
1141
+ 0 string DMS! DMS archive data
1142
+ # EPC
1143
+ 0 string \x8f\xaf\xac\x8c EPC archive data
1144
+ # VSARC
1145
+ 0 string VS\x1a VSARC archive data
1146
+ # PDZ
1147
+ 0 string PDZ PDZ archive data
1148
+ # ReDuq
1149
+ 0 string rdqx ReDuq archive data
1150
+ # GCA
1151
+ 0 string GCAX GCA archive data
1152
+ # PPMN
1153
+ 0 string pN PPMN archive data
1154
+ # WinImage
1155
+ 3 string WINIMAGE WinImage archive data
1156
+ # Compressia
1157
+ 0 string CMP0CMP Compressia archive data
1158
+ # UHBC
1159
+ 0 string UHB UHBC archive data
1160
+ # WinHKI
1161
+ 0 string \x61\x5C\x04\x05 WinHKI archive data
1162
+ # WWPack data file
1163
+ 0 string WWP WWPack archive data
1164
+ # BSN (BSA, PTS-DOS)
1165
+ 0 string \xffBSG BSN archive data
1166
+ 1 string \xffBSG BSN archive data
1167
+ 3 string \xffBSG BSN archive data
1168
+ 1 string \0\xae\2 BSN archive data
1169
+ 1 string \0\xae\3 BSN archive data
1170
+ 1 string \0\xae\7 BSN archive data
1171
+ # AIN
1172
+ 0 string \x33\x18 AIN archive data
1173
+ 0 string \x33\x17 AIN archive data
1174
+ # XPA32 test moved and merged with XPA by Joerg Jenderek at Sep 2015
1175
+ # SZip (TODO: doesn't catch all versions)
1176
+ 0 string SZ\x0a\4 SZip archive data
1177
+ # XPack DiskImage
1178
+ # *.XDI updated by Joerg Jenderek Sep 2015
1179
+ # ftp://ftp.sac.sk/pub/sac/pack/0index.txt
1180
+ # GRR: this test is still too general as it catches also text files starting with jm
1181
+ 0 string jm
1182
+ # only found examples with this additional characteristic 2 bytes
1183
+ >2 string \x2\x4 Xpack DiskImage archive data
1184
+ #!:ext xdi
1185
+ # XPack Data
1186
+ # *.xpa updated by Joerg Jenderek Sep 2015
1187
+ # ftp://ftp.elf.stuba.sk/pub/pc/pack/
1188
+ 0 string xpa XPA
1189
+ !:ext xpa
1190
+ # XPA32
1191
+ # ftp://ftp.elf.stuba.sk/pub/pc/pack/xpa32.zip
1192
+ # created by XPA32.EXE version 1.0.2 for Windows
1193
+ >0 string xpa\0\1 \b32 archive data
1194
+ # created by XPACK.COM version 1.67m or 1.67r with short 0x1800
1195
+ >3 ubeshort !0x0001 \bck archive data
1196
+ # XPack Single Data
1197
+ # changed by Joerg Jenderek Sep 2015 back to like in version 5.12
1198
+ # letter 'I'+ acute accent is equivalent to \xcd
1199
+ 0 string \xcd\ jm Xpack single archive data
1200
+ #!:mime application/x-xpa-compressed
1201
+ !:ext xpa
1202
+
1203
+ # TODO: missing due to unknown magic/magic at end of file:
1204
+ #DWC
1205
+ #ARG
1206
+ #ZAR
1207
+ #PC/3270
1208
+ #InstallIt
1209
+ #RKive
1210
+ #RK
1211
+ #XPack Diskimage
1212
+
1213
+ # These were inspired by idarc, but actually verified
1214
+ # Dzip archiver (.dz)
1215
+ # Update: Joerg Jenderek
1216
+ # URL: http://speeddemosarchive.com/dzip/
1217
+ # reference: http://speeddemosarchive.com/dzip/dz29src.zip/main.c
1218
+ # GRR: line below is too general as it matches also ASCII texts like Doszip commander help dz.txt
1219
+ 0 string DZ
1220
+ # latest version is 2.9 dated 7 may 2003
1221
+ >2 byte <4 Dzip archive data
1222
+ !:mime application/x-dzip
1223
+ !:ext dz
1224
+ >>2 byte x \b, version %i
1225
+ >>3 byte x \b.%i
1226
+ >>4 ulelong x \b, offset %#x
1227
+ >>8 ulelong x \b, %u files
1228
+ # ZZip archiver (.zz)
1229
+ 0 string ZZ\ \0\0 ZZip archive data
1230
+ 0 string ZZ0 ZZip archive data
1231
+ # PAQ archiver (.paq)
1232
+ 0 string \xaa\x40\x5f\x77\x1f\xe5\x82\x0d PAQ archive data
1233
+ 0 string PAQ PAQ archive data
1234
+ >3 byte&0xf0 0x30
1235
+ >>3 byte x (v%c)
1236
+ # JAR archiver (.j), this is the successor to ARJ, not Java's JAR (which is essentially ZIP)
1237
+ # Update: Joerg Jenderek
1238
+ # URL: http://fileformats.archiveteam.org/wiki/JAR_(ARJ_Software)
1239
+ # reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-jar.trid.xml
1240
+ # https://www.sac.sk/download/pack/jar102x.exe/TECHNOTE.DOC
1241
+ # Note: called "JAR compressed archive" by TrID
1242
+ 0xe string \x1aJar\x1b JAR (ARJ Software, Inc.) archive data
1243
+ #!:mime application/octet-stream
1244
+ !:mime application/x-compress-j
1245
+ >0 ulelong x \b, CRC32 %#x
1246
+ # standard suffix is ".j"; for multi volumes following order j01 j02 ... j99 100 ... 990
1247
+ !:ext j/j01/j02
1248
+ # URL: http://fileformats.archiveteam.org/wiki/JARCS
1249
+ # reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-jarcs.trid.xml
1250
+ # Note: called "JARCS compressed archive" by TrID
1251
+ 0 string JARCS JAR (ARJ Software, Inc.) archive data
1252
+ #!:mime application/octet-stream
1253
+ !:mime application/x-compress-jar
1254
+ !:ext jar
1255
+
1256
+ # ARJ archiver (jason@jarthur.Claremont.EDU)
1257
+ # URL: http://fileformats.archiveteam.org/wiki/ARJ
1258
+ # reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-arj.trid.xml
1259
+ # https://github.com/FarGroup/FarManager/
1260
+ # blob/master/plugins/multiarc/arc.doc/arj.txt
1261
+ # Note: called "ARJ compressed archive" by TrID and
1262
+ # "ARJ File Format" by DROID via PUID fmt/610
1263
+ # verified by `7z l -tarj PHRACK1.ARJ` and
1264
+ # `arj.exe l TEST-hk9.ARJ`
1265
+ 0 leshort 0xea60
1266
+ # skip DROID fmt-610-signature-id-946.arj by check for valid file type of main header
1267
+ >0xA ubyte 2
1268
+ >>0 use arj-archive
1269
+ 0 name arj-archive
1270
+ >0 leshort x ARJ archive
1271
+ !:mime application/x-arj
1272
+ # look for terminating 0-character of filename
1273
+ >0x26 search/1024 \0
1274
+ # file name extension is normally .arj but not for parts of multi volume
1275
+ #>>&-5 string x extension %.4s
1276
+ >>&-5 string/c .arj data
1277
+ !:ext arj
1278
+ >>&-5 default x
1279
+ # for multi volume first name is archive.arj then following parts archive.a01 archive.a02 ...
1280
+ >>>8 byte &0x04 data
1281
+ !:ext a01/a02
1282
+ # for SFX first name is archive.exe then following parts archive.e01 archive.e02 ...
1283
+ >>>8 byte ^0x04 data, SFX multi-volume
1284
+ !:ext e01/e02
1285
+ # basic header size like: 0x002b 0x002c 0x04e0 0x04e3 0x04e7
1286
+ #>2 uleshort x basic header size %#4.4x
1287
+ # next fragment content like: 0x0a200a003a8fc713 0x524a000010bb3471 0x524a0000c73c70f9
1288
+ #>(2.s) ubequad x NEXT FRAGMENT CONTENT %#16.16llx
1289
+ # first_hdr_size; seems to be same as basic header size
1290
+ #>2 uleshort x 1st header size %#x
1291
+ # archiver version number like: 3 4 6 11 102
1292
+ >5 byte x \b, v%d
1293
+ # minimum archiver version to extract like: 1
1294
+ >6 ubyte !1 \b, minimum %u to extract
1295
+ # FOR DEBUGGING
1296
+ #>8 byte x \b, FLAGS %#x
1297
+ # GARBLED_FLAG1; garble with password; g switch
1298
+ >8 byte &0x01 \b, password-protected
1299
+ # encryption version: 0~old 1~old 2~new 3~reserved 4~40 bit key GOST
1300
+ >>0x20 ubyte x (v%u)
1301
+ #>8 byte &0x02 \b, secured
1302
+ # ANSIPAGE_FLAG; indicates ANSI codepage used by ARJ32; hy switch
1303
+ >8 byte &0x02 \b, ANSI codepage
1304
+ # VOLUME_FLAG indicates presence of succeeding volume; but apparently not for SFX
1305
+ >8 byte &0x04 \b, multi-volume
1306
+ #>8 byte &0x08 \b, file-offset
1307
+ # ARJPROT_FLAG; build with data protection record; hk switch
1308
+ >8 byte &0x08 \b, recoverable
1309
+ # arj protection factor; maximal 10; switch hky -> factor=y+1
1310
+ >>0x22 byte x (factor %u)
1311
+ >8 byte &0x10 \b, slash-switched
1312
+ # BACKUP_FLAG; obsolete
1313
+ >8 byte &0x20 \b, backup
1314
+ # SECURED_FLAG;
1315
+ >8 byte &0x40 \b, secured,
1316
+ # ALTNAME_FLAG; indicates dual-name archive
1317
+ >8 byte &0x80 \b, dual-name
1318
+ # security version; 0~old 2~current
1319
+ >9 ubyte !0
1320
+ >>9 ubyte !2 \b, security version %u
1321
+ # file type; 2 in main header; 0~binary 1~7-bitText 2~comment 3~directory 4~VolumeLabel 5=ChapterLabel
1322
+ >0xA ubyte !2 \b, file type %u
1323
+ # date+time when original archive was created in MS-DOS format via ./msdos
1324
+ >0xC ulelong x \b, created
1325
+ >0xC use dos-date
1326
+ # or date and time by new internal function
1327
+ #>0xE lemsdosdate x %s
1328
+ #>0xC lemsdostime x %s
1329
+ # FOR DEBUGGING
1330
+ #>0x12 uleshort x RAW DATE %#4.4x
1331
+ #>0x10 uleshort x RAW TIME %#4.4x
1332
+ # date+time when archive was last modified; sometimes nil or
1333
+ # maybe wrong like in HP4DRVR.ARJ
1334
+ #>0x10 ulelong >0 \b, modified
1335
+ #>>0x10 use dos-date
1336
+ # or date and time by new internal function
1337
+ #>>0x12 lemsdosdate x %s
1338
+ #>>0x10 lemsdostime x %s
1339
+ # archive size (currently used only for secured archives); MAYBE?
1340
+ #>0x14 ulelong !0 \b, file size %u
1341
+ # security envelope file position; MAYBE?
1342
+ #>0x18 ulelong !0 \b, at %#x security envelope
1343
+ # filespec position in filename; WHAT IS THAT?
1344
+ #>0x1C uleshort >0 \b, filespec position %#x
1345
+ # length in bytes of security envelope data like: 2CAh 301h 364h 471h
1346
+ >0x1E uleshort !0 \b, security envelope length %#x
1347
+ # last chapter like: 0 1
1348
+ >0x21 ubyte !0 \b, last chapter %u
1349
+ # filename (null-terminated string); sometimes at 0x26 when 4 bytes for extra data
1350
+ >34 byte x \b, original name:
1351
+ # with extras data
1352
+ >34 byte <0x0B
1353
+ >>38 string x %s
1354
+ # without extras data
1355
+ >34 byte >0x0A
1356
+ >>34 string x %s
1357
+ # host OS: 0~MSDOS ... 11~WIN32
1358
+ >7 byte 0 \b, os: MS-DOS
1359
+ >7 byte 1 \b, os: PRIMOS
1360
+ >7 byte 2 \b, os: Unix
1361
+ >7 byte 3 \b, os: Amiga
1362
+ >7 byte 4 \b, os: Macintosh
1363
+ >7 byte 5 \b, os: OS/2
1364
+ >7 byte 6 \b, os: Apple ][ GS
1365
+ >7 byte 7 \b, os: Atari ST
1366
+ >7 byte 8 \b, os: NeXT
1367
+ >7 byte 9 \b, os: VAX/VMS
1368
+ >7 byte 10 \b, os: WIN95
1369
+ >7 byte 11 \b, os: WIN32
1370
+ # [JW] idarc says this is also possible
1371
+ 2 leshort 0xea60 ARJ archive data
1372
+ #2 leshort 0xea60
1373
+ #>2 use arj-archive
1374
+
1375
+ # HA archiver (Greg Roelofs, newt@uchicago.edu)
1376
+ # This is a really bad format. A file containing HAWAII will match this...
1377
+ #0 string HA HA archive data,
1378
+ #>2 leshort =1 1 file,
1379
+ #>2 leshort >1 %hu files,
1380
+ #>4 byte&0x0f =0 first is type CPY
1381
+ #>4 byte&0x0f =1 first is type ASC
1382
+ #>4 byte&0x0f =2 first is type HSC
1383
+ #>4 byte&0x0f =0x0e first is type DIR
1384
+ #>4 byte&0x0f =0x0f first is type SPECIAL
1385
+ # suggestion: at least identify small archives (<1024 files)
1386
+ 0 belong&0xffff00fc 0x48410000 HA archive data
1387
+ >2 leshort =1 1 file,
1388
+ >2 leshort >1 %u files,
1389
+ >4 byte&0x0f =0 first is type CPY
1390
+ >4 byte&0x0f =1 first is type ASC
1391
+ >4 byte&0x0f =2 first is type HSC
1392
+ >4 byte&0x0f =0x0e first is type DIR
1393
+ >4 byte&0x0f =0x0f first is type SPECIAL
1394
+
1395
+ # HPACK archiver (Peter Gutmann, pgut1@cs.aukuni.ac.nz)
1396
+ 0 string HPAK HPACK archive data
1397
+
1398
+ # JAM Archive volume format, by Dmitry.Kohmanyuk@UA.net
1399
+ 0 string \351,\001JAM\ JAM archive,
1400
+ >7 string >\0 version %.4s
1401
+ >0x26 byte =0x27 -
1402
+ >>0x2b string >\0 label %.11s,
1403
+ >>0x27 lelong x serial %08x,
1404
+ >>0x36 string >\0 fstype %.8s
1405
+
1406
+ # LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
1407
+ # Update: Joerg Jenderek
1408
+ # URL: https://en.wikipedia.org/wiki/LHA_(file_format)
1409
+ # Reference: https://web.archive.org/web/20021005080911/http://www.osirusoft.com/joejared/lzhformat.html
1410
+ #
1411
+ # check and display information of lharc (LHa,PMarc) file
1412
+ 0 name lharc-file
1413
+ # check 1st character of method id like -lz4- -lh5- or -pm2-
1414
+ >2 string -
1415
+ # check 5th character of method id
1416
+ >>6 string -
1417
+ # check header level 0 1 2 3
1418
+ >>>20 ubyte <4
1419
+ # check 2nd, 3th and 4th character of method id
1420
+ >>>>3 regex \^(lh[0-9a-ex]|lz[s2-8]|pm[012]|pc1) \b
1421
+ !:mime application/x-lzh-compressed
1422
+ # creator type "LHA "
1423
+ !:apple ????LHA
1424
+ # display archive type name like "LHa/LZS archive data" or "LArc archive"
1425
+ >>>>>2 string -lz \b
1426
+ !:ext lzs
1427
+ # already known -lzs- -lz4- -lz5- with old names
1428
+ >>>>>>2 string -lzs LHa/LZS archive data
1429
+ >>>>>>3 regex \^lz[45] LHarc 1.x archive data
1430
+ # missing -lz?- with wikipedia names
1431
+ >>>>>>3 regex \^lz[2378] LArc archive
1432
+ # display archive type name like "LHa (2.x) archive data"
1433
+ >>>>>2 string -lh \b
1434
+ # already known -lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd- variants with old names
1435
+ >>>>>>3 regex \^lh[01] LHarc 1.x/ARX archive data
1436
+ # LHice archiver use ".ICE" as name extension instead usual one ".lzh"
1437
+ # FOOBAR archiver use ".foo" as name extension instead usual one
1438
+ # "Florian Orjanov's and Olga Bachetska's ARchiver" not found at the moment
1439
+ >>>>>>>2 string -lh1 \b
1440
+ !:ext lha/lzh/ice
1441
+ >>>>>>3 regex \^lh[23d] LHa 2.x? archive data
1442
+ >>>>>>3 regex \^lh[7] LHa (2.x)/LHark archive data
1443
+ >>>>>>3 regex \^lh[456] LHa (2.x) archive data
1444
+ >>>>>>>2 string -lh5 \b
1445
+ # https://en.wikipedia.org/wiki/BIOS
1446
+ # Some mainboard BIOS like Award use LHa compression. So archives with unusual extension are found like
1447
+ # bios.rom , kd7_v14.bin, 1010.004, ...
1448
+ !:ext lha/lzh/rom/bin
1449
+ # missing -lh?- variants (Joe Jared)
1450
+ >>>>>>3 regex \^lh[89a-ce] LHa (Joe Jared) archive
1451
+ # UNLHA32 2.67a
1452
+ >>>>>>2 string -lhx LHa (UNLHA32) archive
1453
+ # lha archives with standard file name extensions ".lha" ".lzh"
1454
+ >>>>>>3 regex !\^(lh1|lh5) \b
1455
+ !:ext lha/lzh
1456
+ # this should not happen if all -lh variants are described
1457
+ >>>>>>2 default x LHa (unknown) archive
1458
+ #!:ext lha
1459
+ # PMarc
1460
+ >>>>>3 regex \^pm[012] PMarc archive data
1461
+ !:ext pma
1462
+ # append method id without leading and trailing minus character
1463
+ >>>>>3 string x [%3.3s]
1464
+ >>>>>>0 use lharc-header
1465
+ #
1466
+ # check and display information of lharc header
1467
+ 0 name lharc-header
1468
+ # header size 0x4 , 0x1b-0x61
1469
+ >0 ubyte x
1470
+ # compressed data size != compressed file size
1471
+ #>7 ulelong x \b, data size %d
1472
+ # attribute: 0x2~?? 0x10~symlink|target 0x20~normal
1473
+ #>19 ubyte x \b, 19_%#x
1474
+ # level identifier 0 1 2 3
1475
+ #>20 ubyte x \b, level %d
1476
+ # time stamp
1477
+ #>15 ubelong x DATE %#8.8x
1478
+ # OS ID for level 1
1479
+ >20 ubyte 1
1480
+ # 0x20 types find for *.rom files
1481
+ >>(21.b+24) ubyte <0x21 \b, %#x OS
1482
+ # ascii type like M for MSDOS
1483
+ >>(21.b+24) ubyte >0x20 \b, '%c' OS
1484
+ # OS ID for level 2
1485
+ >20 ubyte 2
1486
+ #>>23 ubyte x \b, OS ID %#x
1487
+ >>23 ubyte <0x21 \b, %#x OS
1488
+ >>23 ubyte >0x20 \b, '%c' OS
1489
+ # filename only for level 0 and 1
1490
+ >20 ubyte <2
1491
+ # length of filename
1492
+ >>21 ubyte >0 \b, with
1493
+ # filename
1494
+ >>>21 pstring x "%s"
1495
+ #
1496
+ #2 string -lh0- LHarc 1.x/ARX archive data [lh0]
1497
+ #!:mime application/x-lharc
1498
+ 2 string -lh0-
1499
+ >0 use lharc-file
1500
+ #2 string -lh1- LHarc 1.x/ARX archive data [lh1]
1501
+ #!:mime application/x-lharc
1502
+ 2 string -lh1-
1503
+ >0 use lharc-file
1504
+ # NEW -lz2- ... -lz8-
1505
+ 2 string -lz2-
1506
+ >0 use lharc-file
1507
+ 2 string -lz3-
1508
+ >0 use lharc-file
1509
+ 2 string -lz4-
1510
+ >0 use lharc-file
1511
+ 2 string -lz5-
1512
+ >0 use lharc-file
1513
+ 2 string -lz7-
1514
+ >0 use lharc-file
1515
+ 2 string -lz8-
1516
+ >0 use lharc-file
1517
+ # [never seen any but the last; -lh4- reported in comp.compression:]
1518
+ #2 string -lzs- LHa/LZS archive data [lzs]
1519
+ 2 string -lzs-
1520
+ >0 use lharc-file
1521
+ # According to wikipedia and others such a version does not exist
1522
+ #2 string -lh\40- LHa 2.x? archive data [lh ]
1523
+ #2 string -lhd- LHa 2.x? archive data [lhd]
1524
+ 2 string -lhd-
1525
+ >0 use lharc-file
1526
+ #2 string -lh2- LHa 2.x? archive data [lh2]
1527
+ 2 string -lh2-
1528
+ >0 use lharc-file
1529
+ #2 string -lh3- LHa 2.x? archive data [lh3]
1530
+ 2 string -lh3-
1531
+ >0 use lharc-file
1532
+ #2 string -lh4- LHa (2.x) archive data [lh4]
1533
+ 2 string -lh4-
1534
+ >0 use lharc-file
1535
+ #2 string -lh5- LHa (2.x) archive data [lh5]
1536
+ 2 string -lh5-
1537
+ >0 use lharc-file
1538
+ #2 string -lh6- LHa (2.x) archive data [lh6]
1539
+ 2 string -lh6-
1540
+ >0 use lharc-file
1541
+ #2 string -lh7- LHa (2.x)/LHark archive data [lh7]
1542
+ 2 string -lh7-
1543
+ # !:mime application/x-lha
1544
+ # >20 byte x - header level %d
1545
+ >0 use lharc-file
1546
+ # NEW -lh8- ... -lhe- , -lhx-
1547
+ 2 string -lh8-
1548
+ >0 use lharc-file
1549
+ 2 string -lh9-
1550
+ >0 use lharc-file
1551
+ 2 string -lha-
1552
+ >0 use lharc-file
1553
+ 2 string -lhb-
1554
+ >0 use lharc-file
1555
+ 2 string -lhc-
1556
+ >0 use lharc-file
1557
+ 2 string -lhe-
1558
+ >0 use lharc-file
1559
+ 2 string -lhx-
1560
+ >0 use lharc-file
1561
+ # taken from idarc [JW]
1562
+ 2 string -lZ PUT archive data
1563
+ # already done by LHarc magics
1564
+ # this should never happen if all sub types of LZS archive are identified
1565
+ #2 string -lz LZS archive data
1566
+ 2 string -sw1- Swag archive data
1567
+
1568
+ 0 name rar-file-header
1569
+ >24 byte 15 \b, v1.5
1570
+ >24 byte 20 \b, v2.0
1571
+ >24 byte 29 \b, v4
1572
+ >15 byte 0 \b, os: MS-DOS
1573
+ >15 byte 1 \b, os: OS/2
1574
+ >15 byte 2 \b, os: Win32
1575
+ >15 byte 3 \b, os: Unix
1576
+ >15 byte 4 \b, os: Mac OS
1577
+ >15 byte 5 \b, os: BeOS
1578
+
1579
+ 0 name rar-archive-header
1580
+ >3 leshort&0x1ff >0 \b, flags:
1581
+ >>3 leshort &0x01 ArchiveVolume
1582
+ >>3 leshort &0x02 Commented
1583
+ >>3 leshort &0x04 Locked
1584
+ >>3 leshort &0x10 NewVolumeNaming
1585
+ >>3 leshort &0x08 Solid
1586
+ >>3 leshort &0x20 Authenticated
1587
+ >>3 leshort &0x40 RecoveryRecordPresent
1588
+ >>3 leshort &0x80 EncryptedBlockHeader
1589
+ >>3 leshort &0x100 FirstVolume
1590
+
1591
+ # RAR (Roshal Archive) archive
1592
+ 0 string Rar!\x1a\7\0 RAR archive data
1593
+ !:mime application/x-rar
1594
+ !:ext rar/cbr
1595
+ # file header
1596
+ >(0xc.l+9) byte 0x74
1597
+ >>(0xc.l+7) use rar-file-header
1598
+ # subblock seems to share information with file header
1599
+ >(0xc.l+9) byte 0x7a
1600
+ >>(0xc.l+7) use rar-file-header
1601
+ >9 byte 0x73
1602
+ >>7 use rar-archive-header
1603
+
1604
+ 0 string Rar!\x1a\7\1\0 RAR archive data, v5
1605
+ !:mime application/x-rar
1606
+ !:ext rar
1607
+
1608
+ # Very old RAR archive
1609
+ # https://jasonblanks.com/wp-includes/images/papers/KnowyourarchiveRAR.pdf
1610
+ 0 string RE\x7e\x5e RAR archive data (<v1.5)
1611
+ !:mime application/x-rar
1612
+ !:ext rar/cbr
1613
+
1614
+ # SQUISH archiver (Greg Roelofs, newt@uchicago.edu)
1615
+ 0 string SQSH squished archive data (Acorn RISCOS)
1616
+
1617
+ # UC2 archiver (Greg Roelofs, newt@uchicago.edu)
1618
+ # [JW] see exe section for self-extracting version
1619
+ 0 string UC2\x1a UC2 archive data
1620
+
1621
+ # PKZIP multi-volume archive
1622
+ 0 string PK\x07\x08PK\x03\x04 Zip multi-volume archive data, at least PKZIP v2.50 to extract
1623
+ !:mime application/zip
1624
+ !:ext zip/cbz
1625
+
1626
+ # Android APK file (Zip archive)
1627
+ 0 string PK\003\004
1628
+ !:strength +1
1629
+ # Starts with AndroidManifest.xml (file name length = 19)
1630
+ >26 uleshort 19
1631
+ >>30 string AndroidManifest.xml Android package (APK), with AndroidManifest.xml
1632
+ !:mime application/vnd.android.package-archive
1633
+ !:ext apk
1634
+ >>>-22 string PK\005\006
1635
+ >>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block
1636
+ # Starts with META-INF/com/android/build/gradle/app-metadata.properties
1637
+ >26 uleshort 57
1638
+ >>30 string META-INF/com/android/build/gradle/
1639
+ >>>&0 string app-metadata.properties Android package (APK), with gradle app-metadata.properties
1640
+ !:mime application/vnd.android.package-archive
1641
+ !:ext apk
1642
+ >>>>-22 string PK\005\006
1643
+ >>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block
1644
+ # Starts with classes.dex (file name length = 11)
1645
+ >26 uleshort 11
1646
+ >>30 string classes.dex Android package (APK), with classes.dex
1647
+ !:mime application/vnd.android.package-archive
1648
+ !:ext apk
1649
+ >>>-22 string PK\005\006
1650
+ >>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block
1651
+ # Starts with META-INF/MANIFEST.MF (file name length = 20)
1652
+ # NB: checks for resources.arsc, classes.dex, etc. as well to avoid matching JAR files
1653
+ >26 uleshort 20
1654
+ >>30 string META-INF/MANIFEST.MF
1655
+ # Contains resources.arsc (near the end, in the central directory)
1656
+ >>>-512 search resources.arsc Android package (APK), with MANIFEST.MF and resources.arsc
1657
+ !:mime application/vnd.android.package-archive
1658
+ !:ext apk
1659
+ >>>>-22 string PK\005\006
1660
+ >>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block
1661
+ >>>-512 default x
1662
+ # Contains classes.dex (near the end, in the central directory)
1663
+ >>>>-512 search classes.dex Android package (APK), with MANIFEST.MF and classes.dex
1664
+ !:mime application/vnd.android.package-archive
1665
+ !:ext apk
1666
+ >>>>>-22 string PK\005\006
1667
+ >>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block
1668
+ >>>>-512 default x
1669
+ # Contains lib/armeabi (near the end, in the central directory)
1670
+ >>>>>-512 search lib/armeabi Android package (APK), with MANIFEST.MF and armeabi lib
1671
+ !:mime application/vnd.android.package-archive
1672
+ !:ext apk
1673
+ >>>>>>-22 string PK\005\006
1674
+ >>>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block
1675
+ >>>>>-512 default x
1676
+ # Contains drawables (near the end, in the central directory)
1677
+ >>>>>>-512 search res/drawable Android package (APK), with MANIFEST.MF and drawables
1678
+ !:mime application/vnd.android.package-archive
1679
+ !:ext apk
1680
+ >>>>>>>-22 string PK\005\006
1681
+ >>>>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block
1682
+ # It may or may not be an APK file, but it's definitely a Java JAR file
1683
+ >>>>>>-512 default x Java archive data (JAR)
1684
+ !:mime application/java-archive
1685
+ !:ext jar
1686
+ # Starts with zipflinger virtual entry (28 + 104 = 132 bytes)
1687
+ # See https://github.com/obfusk/apksigcopier/blob/666f5b7/apksigcopier/__init__.py#L230
1688
+ >4 string \x00\x00\x00\x00\x00\x00
1689
+ >>&0 string \x21\x08\x21\x02
1690
+ >>>&0 string \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
1691
+ >>>>&0 string \x00\x00 Android package (APK), with zipflinger virtual entry
1692
+ !:mime application/vnd.android.package-archive
1693
+ !:ext apk
1694
+ >>>>>-22 string PK\005\006
1695
+ >>>>>>(-6.l-16) string APK\x20Sig\x20Block\x2042 \b, with APK Signing Block
1696
+ # APK Signing Block
1697
+ >0 default x
1698
+ >>-22 string PK\005\006
1699
+ >>>(-6.l-16) string APK\x20Sig\x20Block\x2042 Android package (APK), with APK Signing Block
1700
+ !:mime application/vnd.android.package-archive
1701
+ !:ext apk
1702
+
1703
+ # Zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
1704
+ 0 string PK\005\006 Zip archive data (empty)
1705
+ !:mime application/zip
1706
+ !:ext zip/cbz
1707
+ !:strength +1
1708
+ 0 string PK\003\004
1709
+ !:strength +1
1710
+
1711
+ # Specialised zip formats which start with a member named 'mimetype'
1712
+ # (stored uncompressed, with no 'extra field') containing the file's MIME type.
1713
+ # Check for have 8-byte name, 0-byte extra field, name "mimetype", and
1714
+ # contents starting with "application/":
1715
+ >26 string \x8\0\0\0mimetypeapplication/
1716
+
1717
+ # KOffice / OpenOffice & StarOffice / OpenDocument formats
1718
+ # From: Abel Cheung <abel@oaka.org>
1719
+
1720
+ # KOffice (1.2 or above) formats
1721
+ # (mimetype contains "application/vnd.kde.<SUBTYPE>")
1722
+ >>50 string vnd.kde. KOffice (>=1.2)
1723
+ >>>58 string karbon Karbon document
1724
+ >>>58 string kchart KChart document
1725
+ >>>58 string kformula KFormula document
1726
+ >>>58 string kivio Kivio document
1727
+ >>>58 string kontour Kontour document
1728
+ >>>58 string kpresenter KPresenter document
1729
+ >>>58 string kspread KSpread document
1730
+ >>>58 string kword KWord document
1731
+
1732
+ # OpenOffice formats (for OpenOffice 1.x / StarOffice 6/7)
1733
+ # (mimetype contains "application/vnd.sun.xml.<SUBTYPE>")
1734
+ # URL: https://en.wikipedia.org/wiki/OpenOffice.org_XML
1735
+ # reference: http://fileformats.archiveteam.org/wiki/OpenOffice.org_XML
1736
+ >>50 string vnd.sun.xml. OpenOffice.org 1.x
1737
+ >>>62 string writer Writer
1738
+ >>>>68 byte !0x2e document
1739
+ !:mime application/vnd.sun.xml.writer
1740
+ !:ext sxw
1741
+ >>>>68 string .template template
1742
+ !:mime application/vnd.sun.xml.writer.template
1743
+ !:ext stw
1744
+ >>>>68 string .web Web template
1745
+ !:mime application/vnd.sun.xml.writer.web
1746
+ !:ext stw
1747
+ >>>>68 string .global global document
1748
+ !:mime application/vnd.sun.xml.writer.global
1749
+ !:ext sxg
1750
+ >>>62 string calc Calc
1751
+ >>>>66 byte !0x2e spreadsheet
1752
+ !:mime application/vnd.sun.xml.calc
1753
+ !:ext sxc
1754
+ >>>>66 string .template template
1755
+ !:mime application/vnd.sun.xml.calc.template
1756
+ !:ext stc
1757
+ >>>62 string draw Draw
1758
+ >>>>66 byte !0x2e document
1759
+ !:mime application/vnd.sun.xml.draw
1760
+ !:ext sxd
1761
+ >>>>66 string .template template
1762
+ !:mime application/vnd.sun.xml.draw.template
1763
+ !:ext std
1764
+ >>>62 string impress Impress
1765
+ >>>>69 byte !0x2e presentation
1766
+ !:mime application/vnd.sun.xml.impress
1767
+ !:ext sxi
1768
+ >>>>69 string .template template
1769
+ !:mime application/vnd.sun.xml.impress.template
1770
+ !:ext sti
1771
+ >>>62 string math Math document
1772
+ !:mime application/vnd.sun.xml.math
1773
+ !:ext sxm
1774
+ >>>62 string base Database file
1775
+ !:mime application/vnd.sun.xml.base
1776
+ !:ext sdb
1777
+
1778
+ # URL: https://wiki.openoffice.org/wiki/Documentation/DevGuide/Extensions/File_Format
1779
+ # From: Joerg Jenderek
1780
+ # Note: only few OXT samples are detected here by mimetype member
1781
+ # is used by OpenOffice and LibreOffice and probably also NeoOffice
1782
+ # verified by `unzip -Zv *.oxt` or `7z l -slt *.oxt`
1783
+ >>50 string vnd.openofficeorg. OpenOffice
1784
+ >>>68 string extension \b/LibreOffice Extension
1785
+ # http://extension.nirsoft.net/oxt
1786
+ !:mime application/vnd.openofficeorg.extension
1787
+ # like: Gallery-Puzzle.2.1.0.1.oxt
1788
+ !:ext oxt
1789
+
1790
+ # OpenDocument formats (for OpenOffice 2.x / StarOffice >= 8)
1791
+ # URL: http://fileformats.archiveteam.org/wiki/OpenDocument
1792
+ # https://lists.oasis-open.org/archives/office/200505/msg00006.html
1793
+ # (mimetype contains "application/vnd.oasis.opendocument.<SUBTYPE>")
1794
+ >>50 string vnd.oasis.opendocument. OpenDocument
1795
+ >>>73 string text
1796
+ >>>>77 byte !0x2d Text
1797
+ !:mime application/vnd.oasis.opendocument.text
1798
+ !:ext odt
1799
+ >>>>77 string -template Text Template
1800
+ !:mime application/vnd.oasis.opendocument.text-template
1801
+ !:ext ott
1802
+ >>>>77 string -web HTML Document Template
1803
+ !:mime application/vnd.oasis.opendocument.text-web
1804
+ !:ext oth
1805
+ >>>>77 string -master
1806
+ >>>>>84 byte !0x2d Master Document
1807
+ !:mime application/vnd.oasis.opendocument.text-master
1808
+ !:ext odm
1809
+ >>>>>84 string -template Master Template
1810
+ !:mime application/vnd.oasis.opendocument.text-master-template
1811
+ !:ext otm
1812
+ >>>73 string graphics
1813
+ >>>>81 byte !0x2d Drawing
1814
+ !:mime application/vnd.oasis.opendocument.graphics
1815
+ !:ext odg
1816
+ >>>>81 string -template Drawing Template
1817
+ !:mime application/vnd.oasis.opendocument.graphics-template
1818
+ !:ext otg
1819
+ >>>73 string presentation
1820
+ >>>>85 byte !0x2d Presentation
1821
+ !:mime application/vnd.oasis.opendocument.presentation
1822
+ !:ext odp
1823
+ >>>>85 string -template Presentation Template
1824
+ !:mime application/vnd.oasis.opendocument.presentation-template
1825
+ !:ext otp
1826
+ >>>73 string spreadsheet
1827
+ >>>>84 byte !0x2d Spreadsheet
1828
+ !:mime application/vnd.oasis.opendocument.spreadsheet
1829
+ !:ext ods
1830
+ >>>>84 string -template Spreadsheet Template
1831
+ !:mime application/vnd.oasis.opendocument.spreadsheet-template
1832
+ !:ext ots
1833
+ >>>73 string chart
1834
+ >>>>78 byte !0x2d Chart
1835
+ !:mime application/vnd.oasis.opendocument.chart
1836
+ !:ext odc
1837
+ >>>>78 string -template Chart Template
1838
+ !:mime application/vnd.oasis.opendocument.chart-template
1839
+ !:ext otc
1840
+ >>>73 string formula
1841
+ >>>>80 byte !0x2d Formula
1842
+ !:mime application/vnd.oasis.opendocument.formula
1843
+ !:ext odf
1844
+ >>>>80 string -template Formula Template
1845
+ !:mime application/vnd.oasis.opendocument.formula-template
1846
+ !:ext otf
1847
+ # https://www.loc.gov/preservation/digital/formats/fdd/fdd000441.shtml
1848
+ >>>73 string database Database
1849
+ !:mime application/vnd.oasis.opendocument.database
1850
+ !:ext odb
1851
+ # Valid for LibreOffice Base 6.0.1.1 at least
1852
+ >>>73 string base Database
1853
+ # https://bugs.documentfoundation.org/show_bug.cgi?id=45854
1854
+ !:mime application/vnd.oasis.opendocument.base
1855
+ !:ext odb
1856
+ >>>73 string image
1857
+ >>>>78 byte !0x2d Image
1858
+ !:mime application/vnd.oasis.opendocument.image
1859
+ !:ext odi
1860
+ >>>>78 string -template Image Template
1861
+ !:mime application/vnd.oasis.opendocument.image-template
1862
+ !:ext oti
1863
+
1864
+ # EPUB (OEBPS) books using OCF (OEBPS Container Format)
1865
+ # https://www.idpf.org/ocf/ocf1.0/download/ocf10.htm, section 4.
1866
+ # From: Ralf Brown <ralf.brown@gmail.com>
1867
+ >>50 string epub+zip EPUB document
1868
+ !:mime application/epub+zip
1869
+
1870
+ # From: Hajin Jang <jb6804@naver.com>
1871
+ # hwpx (OWPML) document format follows OCF specification.
1872
+ # Hangul Word Processor 2010+ supports HWPX format.
1873
+ # URL: https://www.hancom.com/etc/hwpDownload.do
1874
+ # https://standard.go.kr/KSCI/standardIntro/getStandardSearchView.do?menuId=503&topMenuId=502&ksNo=KSX6101
1875
+ # https://e-ks.kr/streamdocs/view/sd;streamdocsId=72059197557727331
1876
+ >>50 string hwp+zip Hancom HWP (Hangul Word Processor) file, HWPX
1877
+ !:mime application/hwp+zip
1878
+ !:ext hwpx
1879
+
1880
+ # From: Joerg Jenderek
1881
+ # URL: http://en.wikipedia.org/wiki/CorelDRAW
1882
+ # NOTE: version; til 2 WL-based; from 3 til 13 by ./riff; from 14 zip based
1883
+ >>50 string x-vnd.corel. Corel
1884
+ >>>62 string draw.document+zip Draw drawing, version 14-16
1885
+ !:mime application/x-vnd.corel.draw.document+zip
1886
+ !:ext cdr
1887
+ >>>62 string draw.template+zip Draw template, version 14-16
1888
+ !:mime application/x-vnd.corel.draw.template+zip
1889
+ !:ext cdrt
1890
+ >>>62 string zcf.draw.document+zip Draw drawing, version 17-22
1891
+ !:mime application/x-vnd.corel.zcf.draw.document+zip
1892
+ !:ext cdr
1893
+ >>>62 string zcf.draw.template+zip Draw template, version 17-22
1894
+ !:mime application/x-vnd.corel.zcf.draw.template+zip
1895
+ !:ext cdt/cdrt
1896
+ # URL: http://product.corel.com/help/CorelDRAW/540240626/Main/EN/Doc/CorelDRAW-Other-file-formats.html
1897
+ >>>62 string zcf.pattern+zip Draw pattern, version 22
1898
+ !:mime application/x-vnd.corel.zcf.pattern+zip
1899
+ !:ext pat
1900
+ # URL: https://en.wikipedia.org/wiki/Corel_Designer
1901
+ # Reference: http://fileformats.archiveteam.org/wiki/Corel_Designer
1902
+ # Note: called by TrID "Corel DESIGN graphics"
1903
+ >>>62 string designer.document+zip DESIGNER graphics, version 14-16
1904
+ !:mime application/x-vnd.corel.designer.document+zip
1905
+ !:ext des
1906
+ >>>62 string zcf.designer.document+zip DESIGNER graphics, version 17-21
1907
+ !:mime application/x-vnd.corel.zcf.designer.document+zip
1908
+ !:ext des
1909
+ # URL: http://product.corel.com/help/CorelDRAW/540223850/Main/EN/Documentation/
1910
+ # CorelDRAW-Corel-Symbol-Library-CSL.html
1911
+ >>>62 string symbol.library+zip Symbol Library, version 6-16.3
1912
+ !:mime application/x-vnd.corel.symbol.library+zip
1913
+ !:ext csl
1914
+ >>>62 string zcf.symbol.library+zip Symbol Library, version 17-22
1915
+ !:mime application/x-vnd.corel.zcf.symbol.library+zip
1916
+ !:ext csl
1917
+
1918
+ # Catch other ZIP-with-mimetype formats
1919
+ # In a ZIP file, the bytes immediately after a member's contents are
1920
+ # always "PK". The 2 regex rules here print the "mimetype" member's
1921
+ # contents up to the first 'P'. Luckily, most MIME types don't contain
1922
+ # any capital 'P's. This is a kludge.
1923
+ # (mimetype contains "application/<OTHER>")
1924
+ >>50 default x Zip data
1925
+ >>>38 regex [!-OQ-~]+ (MIME type "%s"?)
1926
+ !:mime application/zip
1927
+ # (mimetype contents other than "application/*")
1928
+ >26 string \x8\0\0\0mimetype
1929
+ >>38 string !application/
1930
+ >>>38 regex [!-OQ-~]+ Zip data (MIME type "%s"?)
1931
+ !:mime application/zip
1932
+
1933
+ # Java Jar files (see also APK files above)
1934
+ >(26.s+30) leshort 0xcafe Java archive data (JAR)
1935
+ !:mime application/java-archive
1936
+ !:ext jar
1937
+
1938
+ # iOS App
1939
+ >(26.s+30) leshort !0xcafe
1940
+ >>26 string !\x8\0\0\0mimetype
1941
+ >>>30 string Payload/
1942
+ >>>>38 search/64 .app/ iOS App
1943
+ !:mime application/x-ios-app
1944
+
1945
+ # Dup, see above.
1946
+ #>30 search/100/b application/epub+zip EPUB document
1947
+ #!:mime application/epub+zip
1948
+
1949
+ # Generic zip archives (Greg Roelofs, c/o zip-bugs@wkuvx1.wku.edu)
1950
+ # Next line excludes specialized formats:
1951
+ >(26.s+30) leshort !0xcafe
1952
+ >>30 search/100/b !application/epub+zip
1953
+ >>>26 string !\x8\0\0\0mimetype Zip archive data
1954
+ !:mime application/zip
1955
+ >>>>4 beshort x \b, at least
1956
+ >>>>4 use zipversion
1957
+ >>>>4 beshort x to extract
1958
+ >>>>8 beshort x \b, compression method=
1959
+ >>>>8 use zipcompression
1960
+ >>>>0x161 string WINZIP \b, WinZIP self-extracting
1961
+
1962
+ # StarView Metafile
1963
+ # From Pierre Ducroquet <pinaraf@pinaraf.info>
1964
+ 0 string VCLMTF StarView MetaFile
1965
+ >6 beshort x \b, version %d
1966
+ >8 belong x \b, size %d
1967
+
1968
+ # Zoo archiver
1969
+ # Update: Joerg Jenderek
1970
+ # URL: https://en.wikipedia.org/wiki/Zoo_(file_format)
1971
+ # http://fileformats.archiveteam.org/wiki/Zoo
1972
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/a/ark-zoo-strict.trid.xml
1973
+ # http://distcache.freebsd.org/ports-distfiles/zoo-2.10pl1.tar.gz/zoo.h
1974
+ # Note: called "ZOO compressed archive (strict)" by TrID and "ZOO Compressed Archive" by DROID via PUID x-fmt/269
1975
+ # verified by command like `deark -m zoo -l -d2 WHRCGA.ZOO`
1976
+ 20 lelong 0xfdc4a7dc
1977
+ # skip DROID x-fmt-269-signature-id-621.zoo by looking for valid major version to manipulate archive
1978
+ >32 byte >0 Zoo archive data
1979
+ !:mime application/x-zoo
1980
+ # bak is extension of backup-ed zoo
1981
+ !:ext zoo/bak
1982
+ # version in text form like: 1.50 2.00 2.10
1983
+ >>4 byte >48 \b, v%c.
1984
+ >>>6 byte >47 \b%c
1985
+ >>>>7 byte >47 \b%c
1986
+ # ZOO files typically start with "ZOO ?.?? Archive.", followed by the bytes 0x1a 0x0 0x0; not used by Zoo and they may be anything
1987
+ >>8 string !\040Archive.\032 \b, at 8
1988
+ >>>8 string x text "%0.10s"
1989
+ # major_ver.minor_ver; minimum version needed to manipulate archive like: 1.0 2.0
1990
+ >>32 byte >0 \b, modify: v%d
1991
+ >>>33 byte x \b.%d+
1992
+ # major_ver.minor_ver; minimum version needed to extract after modify like in old versions
1993
+ >>(24.l+28) ubyte x \b, extract: v%u
1994
+ >>(24.l+29) ubyte x \b.%u+
1995
+ # with zoo 2.00 additional fields have been added in the archive header
1996
+ >>32 byte >1
1997
+ # type; type of archive header like: 1 2
1998
+ >>>34 ubyte !1 \b, header type %u
1999
+ # acmt_pos; position of archive comment like: 6258 30599 61369 149501
2000
+ >>>35 lelong >0 \b, at %d
2001
+ # acmt_len; length of archive comment like: 258
2002
+ >>>>39 uleshort x %u bytes comment
2003
+ #>>>>(35.l) ubequad x COMMENT=%16.16llx
2004
+ # 1st character of comment maybe is CarriageReturn (0x0d)
2005
+ >>>>(35.l) ubyte <040
2006
+ # 2nd character of comment maybe is LineFeed (0x0a)
2007
+ >>>>>(35.l+1) ubyte <040
2008
+ # comment string after CRLF like "Anonymous ftp site garbo.uwasa.fi 128.214.87.1 moderated by"
2009
+ >>>>>>(35.l+2) string x %s
2010
+ # next character of remaining comment maybe is CarriageReturn (0x0d)
2011
+ >>>>>>>&0 ubyte <040
2012
+ >>>>>>>>&0 ubyte <040
2013
+ # 2nd comment part like: Timo Salmi ts@chyde.uwasa.fi PC directories and uploads\015\012Harri Valkama hv@chyde.uwasa.fi PC, Mac, Unix files, and upload
2014
+ >>>>>>>>>&0 string >037 %s
2015
+ # vdata; archive-level versioning byte like: 1 3
2016
+ >>>41 ubyte !1 \b, vdata %#x
2017
+ # zoo_start; pointer to 1st entry header
2018
+ >>24 lelong x \b; at %u
2019
+ # zoo_minus; zoo_start -1 for consistency checking
2020
+ #>>28 lelong x \b, zoo_minus %#x
2021
+ # zoo_tag; tag for check
2022
+ #>>(24.l+0) ulelong !0xfdc4a7dc \b, zoo_tag=%8.8x
2023
+ # type; type of directory entry like: 1 2
2024
+ >>(24.l+4) ubyte !2 type=%u
2025
+ # packing_method; 0~no packing 1~normal LZW 2~lzh
2026
+ >>(24.l+5) ubyte x method=
2027
+ >>>(24.l+5) ubyte 0 \bnot-compressed
2028
+ >>>(24.l+5) ubyte 1 \blzd
2029
+ >>>(24.l+5) ubyte 2 \blzh
2030
+ # next; position of next directory entry
2031
+ >>(24.l+6) ulelong x \b, next entry at %u
2032
+ # offset; position of file data for this entry
2033
+ #>>(24.l+10) ulelong x \b, data at %u
2034
+ # file_crc; CRC-16 of file data
2035
+ >>(24.l+18) uleshort x \b, CRC %#4.4x
2036
+ # comment; zero if none or points to entry comment like ADD9h (WHRCGA.ZOO)
2037
+ >>(24.l+32) lelong >0 \b, at %#x
2038
+ # cmt_size; if not 0 for none then length of entry comment like: 46
2039
+ >>>(24.l+36) uleshort >0 %u bytes comment
2040
+ # entry comment itself like: "CGA .GL file showing menu input from keyboard"
2041
+ >>>>(&-6.l) string x "%s"
2042
+ # org_size; original size of file
2043
+ >>(24.l+20) ulelong x \b, size %u
2044
+ # size_now; compressed size of file
2045
+ >>(24.l+24) ulelong x (%u compressed)
2046
+ # major_ver.minor_ver; minimum version needed to extract already done
2047
+ # deleted; will be 1 if deleted, 0 if not
2048
+ >>(24.l+30) ubyte =1 \b, deleted
2049
+ # struc; file structure if any; WHAT IS THAT?
2050
+ >>(24.l+31) ubyte !0 \b, structured
2051
+ # fname[13]; short/DOS file name like 12345678.012
2052
+ >>(24.l+38) string x \b, %0.13s
2053
+ # for directory entry type 2 with variable part
2054
+ >>(24.l+4) ubyte =2
2055
+ # var_dir_len; length of variable part of dir entry
2056
+ >>>(24.l+51) uleshort >0
2057
+ #>>>(24.l+51) uleshort >0 \b, variable part length %u
2058
+ # namlen; length of long filename
2059
+ #>>>>(24.l+56) ubyte x \b, namlen %u
2060
+ # dirlen; length of directory name
2061
+ #>>>>(24.l+57) ubyte x \b, dirlen %u
2062
+ # if file length positive then show long file name
2063
+ >>>>(24.l+56) ubyte >0
2064
+ # lfname[256]; long file name \0-terminated
2065
+ >>>>>(24.l+58) string x "%s"
2066
+ # if directory length positive then jump before file name field and then jump this addtional length plus 2 (\0-terminator + dirlen field) to following directory name
2067
+ >>>>(24.l+57) ubyte >0
2068
+ >>>>>(24.l+55) ubyte x
2069
+ # dirname[256]; directory name \0-terminated
2070
+ >>>>>>&(&0.b+2) string x in "%s"
2071
+ # dir_crc; CRC of directory entry
2072
+ #>>>(24.l+54) uleshort x \b, entry CRC %#4.4x
2073
+ # tz; timezone where file was archived; 7Fh~unknown 4~1.00hoursWestOfUTC 12 16 20~5.00hoursWestOfUTC -107~26.75hoursEastOfUTC -4~1.00hoursEastOfUTC
2074
+ >>>(24.l+53) byte !0x7f \b, time zone %d/4
2075
+ # date; last mod file date in DOS format
2076
+ >>>(24.l+14) lemsdosdate x \b, modified %s
2077
+ # time; last mod file time in DOS format
2078
+ >>>(24.l+16) lemsdostime x %s
2079
+
2080
+ # Shell archives
2081
+ 10 string #\ This\ is\ a\ shell\ archive shell archive text
2082
+ !:mime application/octet-stream
2083
+
2084
+ #
2085
+ # LBR. NB: May conflict with the questionable
2086
+ # "binary Computer Graphics Metafile" format.
2087
+ #
2088
+ 0 string \0\ \ \ \ \ \ \ \ \ \ \ \0\0 LBR archive data
2089
+ #
2090
+ # PMA (CP/M derivative of LHA)
2091
+ # Update: Joerg Jenderek
2092
+ # URL: https://en.wikipedia.org/wiki/LHA_(file_format)
2093
+ #
2094
+ #2 string -pm0- PMarc archive data [pm0]
2095
+ 2 string -pm0-
2096
+ >0 use lharc-file
2097
+ #2 string -pm1- PMarc archive data [pm1]
2098
+ 2 string -pm1-
2099
+ >0 use lharc-file
2100
+ #2 string -pm2- PMarc archive data [pm2]
2101
+ 2 string -pm2-
2102
+ >0 use lharc-file
2103
+ 2 string -pms- PMarc SFX archive (CP/M, DOS)
2104
+ #!:mime application/x-foobar-exec
2105
+ !:ext com
2106
+ 5 string -pc1- PopCom compressed executable (CP/M)
2107
+ #!:mime application/x-
2108
+ #!:ext com
2109
+
2110
+ # From Rafael Laboissiere <rafael@laboissiere.net>
2111
+ # The Project Revision Control System (see
2112
+ # http://prcs.sourceforge.net) generates a packaged project
2113
+ # file which is recognized by the following entry:
2114
+ 0 leshort 0xeb81 PRCS packaged project
2115
+
2116
+ # Microsoft cabinets
2117
+ # by David Necas (Yeti) <yeti@physics.muni.cz>
2118
+ #0 string MSCF\0\0\0\0 Microsoft cabinet file data,
2119
+ #>25 byte x v%d
2120
+ #>24 byte x \b.%d
2121
+ # MPi: All CABs have version 1.3, so this is pointless.
2122
+ # Better magic in debian-additions.
2123
+
2124
+ # GTKtalog catalogs
2125
+ # by David Necas (Yeti) <yeti@physics.muni.cz>
2126
+ 4 string gtktalog\ GTKtalog catalog data,
2127
+ >13 string 3 version 3
2128
+ >>14 beshort 0x677a (gzipped)
2129
+ >>14 beshort !0x677a (not gzipped)
2130
+ >13 string >3 version %s
2131
+
2132
+ ############################################################################
2133
+ # Parity archive reconstruction file, the 'par' file format now used on Usenet.
2134
+ 0 string PAR\0 PARity archive data
2135
+ >48 leshort =0 - Index file
2136
+ >48 leshort >0 - file number %d
2137
+
2138
+ # Felix von Leitner <felix-file@fefe.de>
2139
+ 0 string d8:announce BitTorrent file
2140
+ !:mime application/x-bittorrent
2141
+ !:ext torrent
2142
+ # Durval Menezes, <jmgthbfile at durval dot com>
2143
+ 0 string d13:announce-list BitTorrent file
2144
+ !:mime application/x-bittorrent
2145
+ !:ext torrent
2146
+ 0 string d7:comment BitTorrent file
2147
+ !:mime application/x-bittorrent
2148
+ !:ext torrent
2149
+ 0 string d4:info BitTorrent file
2150
+ !:mime application/x-bittorrent
2151
+ !:ext torrent
2152
+
2153
+ # Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
2154
+ # URL: http://fileformats.archiveteam.org/wiki/MSA_(Magic_Shadow_Archiver)
2155
+ # Reference: http://info-coach.fr/atari/documents/_mydoc/FD_Image_File_Format.pdf
2156
+ # http://mark0.net/download/triddefs_xml.7z/defs/m/msa.trid.xml
2157
+ # Update: Joerg Jenderek
2158
+ # Note: called by TrID "Atari MSA Disk Image" and verified by
2159
+ # command like `deark -l -m msa -d2 PDATS578.msa` as " Atari ST floppy disk image"
2160
+ # GRR: line below is too general as it matches setup.skin
2161
+ 0 beshort 0x0e0f
2162
+ # skip foo setup.skin with unrealistic high number 52255 of sides by check for valid "low" value
2163
+ >4 ubeshort <2 Atari MSA archive data
2164
+ #!:mime application/octet-stream
2165
+ !:mime application/x-atari-msa
2166
+ !:ext msa
2167
+ # sectors per track like: 9 10
2168
+ >>2 beshort x \b, %d sectors per track
2169
+ # sides (0 or 1; add 1 to this to get correct number of sides)
2170
+ >>4 beshort 0 \b, 1 sided
2171
+ >>4 beshort 1 \b, 2 sided
2172
+ # starting track like: 0
2173
+ >>6 beshort x \b, starting track: %d
2174
+ # ending track like: 39 79 80 81
2175
+ >>8 beshort x \b, ending track: %d
2176
+ # tracks content
2177
+ #>>10 ubequad x \b, track content %#16.16llx
2178
+
2179
+ # Alternate ZIP string (amc@arwen.cs.berkeley.edu)
2180
+ 0 string PK00PK\003\004 Zip archive data
2181
+ !:mime application/zip
2182
+ !:ext zip/cbz
2183
+
2184
+ # Recognize ZIP archives with prepended data by end-of-central-directory record
2185
+ # https://en.wikipedia.org/wiki/ZIP_(file_format)#End_of_central_directory_record_(EOCD)
2186
+ # by Michal Gorny <mgorny@gentoo.org>
2187
+ -2 uleshort 0
2188
+ >&-22 string PK\005\006
2189
+ # without #!
2190
+ >>0 string !#! Zip archive, with extra data prepended
2191
+ !:mime application/zip
2192
+ !:ext zip/cbz
2193
+ # with #!
2194
+ >>0 string/w #!\ a
2195
+ >>>&-1 string/T x %s script executable (Zip archive)
2196
+
2197
+ # ACE archive (from http://www.wotsit.org/download.asp?f=ace)
2198
+ # by Stefan `Sec` Zehl <sec@42.org>
2199
+ 7 string **ACE** ACE archive data
2200
+ !:mime application/x-ace-compressed
2201
+ !:ext ace
2202
+ >15 byte >0 version %d
2203
+ >16 byte =0x00 \b, from MS-DOS
2204
+ >16 byte =0x01 \b, from OS/2
2205
+ >16 byte =0x02 \b, from Win/32
2206
+ >16 byte =0x03 \b, from Unix
2207
+ >16 byte =0x04 \b, from MacOS
2208
+ >16 byte =0x05 \b, from WinNT
2209
+ >16 byte =0x06 \b, from Primos
2210
+ >16 byte =0x07 \b, from AppleGS
2211
+ >16 byte =0x08 \b, from Atari
2212
+ >16 byte =0x09 \b, from Vax/VMS
2213
+ >16 byte =0x0A \b, from Amiga
2214
+ >16 byte =0x0B \b, from Next
2215
+ >14 byte x \b, version %d to extract
2216
+ >5 leshort &0x0080 \b, multiple volumes,
2217
+ >>17 byte x \b (part %d),
2218
+ >5 leshort &0x0002 \b, contains comment
2219
+ >5 leshort &0x0200 \b, sfx
2220
+ >5 leshort &0x0400 \b, small dictionary
2221
+ >5 leshort &0x0800 \b, multi-volume
2222
+ >5 leshort &0x1000 \b, contains AV-String
2223
+ >>30 string \x16*UNREGISTERED\x20VERSION* (unregistered)
2224
+ >5 leshort &0x2000 \b, with recovery record
2225
+ >5 leshort &0x4000 \b, locked
2226
+ >5 leshort &0x8000 \b, solid
2227
+ # Date in MS-DOS format (whatever that is)
2228
+ #>18 lelong x Created on
2229
+
2230
+ # sfArk : compression program for Soundfonts (sf2) by Dirk Jagdmann
2231
+ # <doj@cubic.org>
2232
+ 0x1A string sfArk sfArk compressed Soundfont
2233
+ >0x15 string 2
2234
+ >>0x1 string >\0 Version %s
2235
+ >>0x2A string >\0 : %s
2236
+
2237
+ # DR-DOS 7.03 Packed File *.??_
2238
+ # Reference: http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm
2239
+ # Note: unpacked by PNUNPACK.EXE
2240
+ 0 string Packed\ File\
2241
+ # by looking for Control-Z skip ASCII text starting with Packed File
2242
+ >0x18 ubyte 0x1a Personal NetWare Packed File
2243
+ !:mime application/x-novell-compress
2244
+ !:ext ??_
2245
+ >>12 string x \b, was "%.12s"
2246
+ # 1 or 2
2247
+ #>>0x19 ubyte x \b, at 0x19 %u
2248
+ >>0x1b ulelong x with %u bytes
2249
+
2250
+ # EET archive
2251
+ # From: Tilman Sauerbeck <tilman@code-monkey.de>
2252
+ 0 belong 0x1ee7ff00 EET archive
2253
+ !:mime application/x-eet
2254
+
2255
+ # rzip archives
2256
+ 0 string RZIP rzip compressed data
2257
+ >4 byte x - version %d
2258
+ >5 byte x \b.%d
2259
+ >6 belong x (%d bytes)
2260
+
2261
+ # From: Joerg Jenderek
2262
+ # URL: https://help.foxitsoftware.com/kb/install-fzip-file.php
2263
+ # reference: http://mark0.net/download/triddefs_xml.7z/
2264
+ # defs/f/fzip.trid.xml
2265
+ # Note: unknown compression; No "PK" zip magic; normally in directory like
2266
+ # "%APPDATA%\Foxit Software\Addon\Foxit Reader\Install"
2267
+ 0 ubequad 0x2506781901010000 Foxit add-on/update
2268
+ !:mime application/x-fzip
2269
+ !:ext fzip
2270
+
2271
+ # From: "Robert Dale" <robdale@gmail.com>
2272
+ 0 belong 123 dar archive,
2273
+ >4 belong x label "%.8x
2274
+ >>8 belong x %.8x
2275
+ >>>12 beshort x %.4x"
2276
+ >14 byte 0x54 end slice
2277
+ >14 beshort 0x4e4e multi-part
2278
+ >14 beshort 0x4e53 multi-part, with -S
2279
+
2280
+ # Symbian installation files
2281
+ # https://www.thouky.co.uk/software/psifs/sis.html
2282
+ # http://developer.symbian.com/main/downloads/papers/SymbianOSv91/softwareinstallsis.pdf
2283
+ 8 lelong 0x10000419 Symbian installation file
2284
+ !:mime application/vnd.symbian.install
2285
+ >4 lelong 0x1000006D (EPOC release 3/4/5)
2286
+ >4 lelong 0x10003A12 (EPOC release 6)
2287
+ 0 lelong 0x10201A7A Symbian installation file (Symbian OS 9.x)
2288
+ !:mime x-epoc/x-sisx-app
2289
+
2290
+ # From "Nelson A. de Oliveira" <naoliv@gmail.com>
2291
+ 0 string MPQ\032 MoPaQ (MPQ) archive
2292
+
2293
+ # From: "Nelson A. de Oliveira" <naoliv@gmail.com>
2294
+ # .kgb
2295
+ 0 string KGB_arch KGB Archiver file
2296
+ >10 string x with compression level %.1s
2297
+
2298
+ # xar (eXtensible ARchiver) archive
2299
+ # URL: https://en.wikipedia.org/wiki/Xar_(archiver)
2300
+ # xar archive format: https://code.google.com/p/xar/
2301
+ # From: "David Remahl" <dremahl@apple.com>
2302
+ # Update: Joerg Jenderek
2303
+ # TODO: lzma compression; X509Data for pkg and xip
2304
+ # Note: verified by `xar --dump-header -f FullBundleUpdate.xar` or
2305
+ # 7z t -txar Xcode_10.2_beta_4.xip`
2306
+ 0 string xar! xar archive
2307
+ !:mime application/x-xar
2308
+ # pkg for Mac OSX installer package like FullBundleUpdate.pkg
2309
+ # xip for signed Apple software like Xcode_10.2_beta_4.xip
2310
+ !:ext xar/pkg/xip
2311
+ # always 28 in older archives
2312
+ >4 ubeshort >28 \b, header size %u
2313
+ # currently there exit only version 1 since about 2014
2314
+ >6 ubeshort >1 version %u,
2315
+ >8 ubequad x compressed TOC: %llu,
2316
+ #>16 ubequad x uncompressed TOC: %llu,
2317
+ # cksum_alg 0-2 in older and also 3-4 in newer
2318
+ >24 belong 0 no checksum
2319
+ >24 belong 1 SHA-1 checksum
2320
+ >24 belong 2 MD5 checksum
2321
+ >24 belong 3 SHA-256 checksum
2322
+ >24 belong 4 SHA-512 checksum
2323
+ >24 belong >4 unknown %#x checksum
2324
+ #>24 belong >4 checksum
2325
+ # For no compression jump 0 bytes
2326
+ >24 belong 0
2327
+ >>0 ubyte x
2328
+ # jump more bytes forward by header size
2329
+ >>>&(4.S) ubyte x
2330
+ # jump more bytes forward by compressed table of contents size
2331
+ #>>>>&(8.Q) ubequad x \b, heap data %#llx
2332
+ >>>>&(8.Q) ubyte x
2333
+ # look for data by ./compress after message with 1 space at end
2334
+ >>>>>&-3 indirect x \b, contains
2335
+ # For SHA-1 jump 20 minus 2 bytes
2336
+ >24 belong 1
2337
+ >>18 ubyte x
2338
+ # jump more bytes forward by header size
2339
+ >>>&(4.S) ubyte x
2340
+ # jump more bytes forward by compressed table of contents size
2341
+ >>>>&(8.Q) ubyte x
2342
+ # data compressed by gzip, bzip, lzma or none
2343
+ >>>>>&-1 indirect x \b, contains
2344
+ # For SHA-256 jump 32 minus 2 bytes
2345
+ >24 belong 3
2346
+ >>30 ubyte x
2347
+ # jump more bytes forward by header size
2348
+ >>>&(4.S) ubyte x
2349
+ # jump more bytes forward by compressed table of contents size
2350
+ >>>>&(8.Q) ubyte x
2351
+ >>>>>&-1 indirect x \b, contains
2352
+ # For SHA-512 jump 64 minus 2 bytes
2353
+ >24 belong 4
2354
+ >>62 ubyte x
2355
+ # jump more bytes forward by header size
2356
+ >>>&(4.S) ubyte x
2357
+ # jump more bytes forward by compressed table of contents size
2358
+ >>>>&(8.Q) ubyte x
2359
+ >>>>>&-1 indirect x \b, contains
2360
+
2361
+ # Type: Parity Archive
2362
+ # From: Daniel van Eeden <daniel_e@dds.nl>
2363
+ 0 string PAR2 Parity Archive Volume Set
2364
+
2365
+ # Bacula volume format. (Volumes always start with a block header.)
2366
+ # URL: https://bacula.org/3.0.x-manuals/en/developers/developers/Block_Header.html
2367
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2368
+ 12 string BB02 Bacula volume
2369
+ >20 bedate x \b, started %s
2370
+
2371
+ # ePub is XHTML + XML inside a ZIP archive. The first member of the
2372
+ # archive must be an uncompressed file called 'mimetype' with contents
2373
+ # 'application/epub+zip'
2374
+
2375
+
2376
+ # From: "Michael Gorny" <mgorny@gentoo.org>
2377
+ # ZPAQ: http://mattmahoney.net/dc/zpaq.html
2378
+ 0 string zPQ ZPAQ stream
2379
+ >3 byte x \b, level %d
2380
+ # From: Barry Carter <carter.barry@gmail.com>
2381
+ # https://encode.ru/threads/456-zpaq-updates/page32
2382
+ 0 string 7kSt ZPAQ file
2383
+
2384
+ # BBeB ebook, unencrypted (LRF format)
2385
+ # URL: https://www.sven.de/librie/Librie/LrfFormat
2386
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2387
+ 0 string L\0R\0F\0\0\0 BBeB ebook data, unencrypted
2388
+ >8 beshort x \b, version %d
2389
+ >36 byte 1 \b, front-to-back
2390
+ >36 byte 16 \b, back-to-front
2391
+ >42 beshort x \b, (%dx,
2392
+ >44 beshort x %d)
2393
+
2394
+ # Symantec GHOST image by Joerg Jenderek at May 2014
2395
+ # https://us.norton.com/ghost/
2396
+ # https://www.garykessler.net/library/file_sigs.html
2397
+ 0 ubelong&0xFFFFf7f0 0xFEEF0100 Norton GHost image
2398
+ # *.GHO
2399
+ >2 ubyte&0x08 0x00 \b, first file
2400
+ # *.GHS or *.[0-9] with cns program option
2401
+ >2 ubyte&0x08 0x08 \b, split file
2402
+ # part of split index interesting for *.ghs
2403
+ >>4 ubyte x id=%#x
2404
+ # compression tag minus one equals numeric compression command line switch z[1-9]
2405
+ >3 ubyte 0 \b, no compression
2406
+ >3 ubyte 2 \b, fast compression (Z1)
2407
+ >3 ubyte 3 \b, medium compression (Z2)
2408
+ >3 ubyte >3
2409
+ >>3 ubyte <11 \b, compression (Z%d-1)
2410
+ >2 ubyte&0x08 0x00
2411
+ # ~ 30 byte password field only for *.gho
2412
+ >>12 ubequad !0 \b, password protected
2413
+ >>44 ubyte !1
2414
+ # 1~Image All, sector-by-sector only for *.gho
2415
+ >>>10 ubyte 1 \b, sector copy
2416
+ # 1~Image Boot track only for *.gho
2417
+ >>>43 ubyte 1 \b, boot track
2418
+ # 1~Image Disc only for *.gho implies Image Boot track and sector copy
2419
+ >>44 ubyte 1 \b, disc sector copy
2420
+ # optional image description only *.gho
2421
+ >>0xff string >\0 "%-.254s"
2422
+ # look for DOS sector end sequence
2423
+ >0xE08 search/7776 \x55\xAA
2424
+ >>&-512 indirect x \b; contains
2425
+
2426
+ # Google Chrome extensions
2427
+ # https://developer.chrome.com/extensions/crx
2428
+ # https://developer.chrome.com/extensions/hosting
2429
+ 0 string Cr24 Google Chrome extension
2430
+ !:mime application/x-chrome-extension
2431
+ >4 ulong x \b, version %u
2432
+
2433
+ # SeqBox - Sequenced container
2434
+ # ext: sbx, seqbox
2435
+ # Marco Pontello marcopon@gmail.com
2436
+ # reference: https://github.com/MarcoPon/SeqBox
2437
+ 0 string SBx SeqBox,
2438
+ >3 byte x version %d
2439
+
2440
+ # LyNX archive
2441
+ 56 string USE\040LYNX\040TO\040DISSOLVE\040THIS\040FILE LyNX archive
2442
+
2443
+ # From: Joerg Jenderek
2444
+ # URL: https://www.acronis.com/
2445
+ # Reference: https://en.wikipedia.org/wiki/TIB_(file_format)
2446
+ # Note: only tested with True Image 2013 Build 5962 and 2019 Build 14110
2447
+ 0 ubequad 0xce24b9a220000000 Acronis True Image backup
2448
+ !:mime application/x-acronis-tib
2449
+ !:ext tib
2450
+ # 01000000
2451
+ #>20 ubelong x \b, at 20 %#x
2452
+ # 20000000
2453
+ #>28 ubelong x \b, at 28 %#x
2454
+ # strings like "Generic- SD/MMC 1.00" "Unknown Disk" "Msft Virtual Disk 1.0"
2455
+ # ???
2456
+ # strings like "\Device\0000011e" "\Device\0000015a"
2457
+ #>0 search/0x6852300/cs \\Device\\
2458
+ #>>&-1 pstring x \b, %s
2459
+ # "\Device\HarddiskVolume30" "\Device\HarddiskVolume39"
2460
+ #>>>&1 search/180/cs \\Device\\
2461
+ #>>>>&-1 pstring x \b, %s
2462
+ #>>>>>&0 search/29/cs \0\0\xc8\0
2463
+ # disk label
2464
+ #>>>>>>&10 lestring16 x \b, disk label %11.11s
2465
+ #>>>>>>&9 plestring16 x \b, disk label "%11.11s"
2466
+ #>>>>>>&10 ubequad x %16.16llx
2467
+
2468
+
2469
+ # Gentoo XPAK binary package
2470
+ # by Michal Gorny <mgorny@gentoo.org>
2471
+ # https://gitweb.gentoo.org/proj/portage.git/tree/man/xpak.5
2472
+ -4 string STOP
2473
+ >-16 string XPAKSTOP Gentoo binary package (XPAK)
2474
+ !:mime application/vnd.gentoo.xpak
2475
+
2476
+ # From: Joerg Jenderek
2477
+ # URL: https://kodi.wiki/view/TexturePacker
2478
+ # Reference: https://mirrors.kodi.tv/releases/source/17.3-Krypton.tar.gz
2479
+ # /xbmc-Krypton/xbmc/guilib/XBTF.h
2480
+ # /xbmc-Krypton/xbmc/guilib/XBTF.cpp
2481
+ 0 string XBTF
2482
+ # skip ASCII text by looking for terminating \0 of path
2483
+ >264 ubyte 0 XBMC texture package
2484
+ !:mime application/x-xbmc-xbt
2485
+ !:ext xbt
2486
+ # XBTF_VERSION 2
2487
+ >>4 string !2 \b, version %-.1s
2488
+ # nofFiles /xbmc-Krypton/xbmc/guilib/XBTFReader.cpp
2489
+ >>5 ulelong x \b, %u file
2490
+ # plural s
2491
+ >>5 ulelong >1 \bs
2492
+ # path[CXBTFFile[MaximumPathLength=256]
2493
+ >>9 string x \b, 1st %s
2494
+
2495
+ # ALZIP archive
2496
+ # by Hyungjun Park <hyungjun.park@worksmobile.com>, Hajin Jang <hajin_jang@worksmobile.com>
2497
+ # http://kippler.com/win/unalz/
2498
+ # https://salsa.debian.org/l10n-korean-team/unalz
2499
+ 0 string ALZ\001 ALZ archive data
2500
+ !:ext alz
2501
+
2502
+ # https://cf-aldn.altools.co.kr/setup/EGG_Specification.zip
2503
+ 0 string EGGA EGG archive data,
2504
+ !:ext egg
2505
+ >5 byte x version %u
2506
+ >4 byte x \b.%u
2507
+ >>0x0E ulelong =0x08E28222
2508
+ >>0x0E ulelong =0x24F5A262 \b, split
2509
+ >>0x0E ulelong =0x24E5A060 \b, solid
2510
+ >>0x0E default x \b, unknown
2511
+
2512
+ # PAQ9A archive
2513
+ # URL: http://mattmahoney.net/dc/#paq9a
2514
+ # Note: Line 1186 of paq9a.cpp gives the magic bytes
2515
+ 0 string pQ9\001 PAQ9A archive
2516
+
2517
+ # From wof (wof@stachelkaktus.net)
2518
+ 0 string Unison\ archive\ format Unison archive format
2519
+
2520
+ # https://ankiweb.net
2521
+ 30 string collection.anki2 Anki APKG file
2522
+ #!:ext .apkg
2523
+
2524
+ # Synology archive (DiskStation Manager 7.0+)
2525
+ # From: Alexandre Iooss <erdnaxe@crans.org>
2526
+ # Note: These archives are signed and encrypted.
2527
+ 0 ulelong&0xFFFFFF00 0xEFBEAD00
2528
+ # MessagePack header (fixarray of 5 elements starting with a bin of 32 bytes)
2529
+ >8 ulelong&0x00FFFFFF 0x20C495 Synology archive
2530
+ !:ext spk
2531
+ # Extract some properties from MessagePack third item
2532
+ >>43 search/0x10000 package=
2533
+ >>>&0 string x \b, package %s
2534
+ >>43 search/0x10000 arch=
2535
+ >>>&0 string x %s
2536
+ >>43 search/0x10000 version=
2537
+ >>>&0 string x %s
2538
+ >>43 search/0x10000 create_time=
2539
+ >>>&0 string x \b, created on %s
2540
+
2541
+ # MonoGame/XNA processed assets archive
2542
+ # From: Alexandre Iooss <erdnaxe@crans.org>
2543
+ # URL: https://github.com/MonoGame/MonoGame/blob/v3.8.1/MonoGame.Framework/Content/ContentManager.cs
2544
+ 0 string XNB
2545
+ # XNB must be version 4 or 5
2546
+ >4 byte <6
2547
+ >>4 byte >3
2548
+ # Size must be positive
2549
+ >>>6 lelong >0 MonoGame/XNA processed assets
2550
+ !:ext xnb
2551
+ >>>>3 string =w \b, for Windows
2552
+ >>>>3 string =x \b, for Xbox360
2553
+ >>>>3 string =i \b, for iOS
2554
+ >>>>3 string =a \b, for Android
2555
+ >>>>3 string =d \b, for DesktopGL
2556
+ >>>>3 string =X \b, for MacOSX
2557
+ >>>>3 string =W \b, for WindowsStoreApp
2558
+ >>>>3 string =n \b, for NativeClient
2559
+ >>>>3 string =M \b, for WindowsPhone8
2560
+ >>>>3 string =r \b, for RaspberryPi
2561
+ >>>>3 string =P \b, for PlayStation4
2562
+ >>>>3 string =5 \b, for PlayStation5
2563
+ >>>>3 string =O \b, for XboxOne
2564
+ >>>>3 string =S \b, for Nintendo Switch
2565
+ >>>>3 string =G \b, for Google Stadia
2566
+ >>>>3 string =b \b, for WebAssembly and Bridge.NET
2567
+ >>>>3 string =m \b, for WindowsPhone7.0 (XNA)
2568
+ >>>>3 string =p \b, for PlayStationMobile
2569
+ >>>>3 string =v \b, for PSVita
2570
+ >>>>3 string =g \b, for Windows (OpenGL)
2571
+ >>>>3 string =l \b, for Linux
2572
+ >>>>4 byte x \b, version %d
2573
+ >>>>5 byte &0x80 \b, LZX compressed
2574
+ >>>>>10 lelong x \b, decompressed size: %d bytes
2575
+ >>>>5 byte &0x40 \b, LZ4 compressed
2576
+ >>>>>10 lelong x \b, decompressed size: %d bytes
2577
+
2578
+ # Electron ASAR archive
2579
+ # From: Alexandre Iooss <erdnaxe@crans.org>
2580
+ # URL: https://github.com/electron/asar
2581
+ 0 ulelong 4
2582
+ # Match JSON header start and end
2583
+ >16 string {"files":{"
2584
+ >>(12.l+12) string }}}} Electron ASAR archive
2585
+ !:ext asar
2586
+ >>>12 ulelong x \b, header length: %d bytes