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,252 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ import collections
7
+
8
+
9
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
10
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
11
+
12
+ class SshPublicKey(KaitaiStruct):
13
+ """SSH public keys are encoded in a special binary format, typically represented
14
+ to end users as either one-liner OpenSSH format or multi-line PEM format
15
+ (commerical SSH). Text wrapper carries extra information about user who
16
+ created the key, comment, etc, but the inner binary is always base64-encoded
17
+ and follows the same internal format.
18
+
19
+ This format spec deals with this internal binary format (called "blob" in
20
+ openssh sources) only. Buffer is expected to be raw binary and not base64-d.
21
+ Implementation closely follows code in OpenSSH.
22
+
23
+ .. seealso::
24
+ Source - https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshkey.c#L1970
25
+ """
26
+ SEQ_FIELDS = ["key_name", "body"]
27
+ def __init__(self, _io, _parent=None, _root=None):
28
+ self._io = _io
29
+ self._parent = _parent
30
+ self._root = _root if _root else self
31
+ self._debug = collections.defaultdict(dict)
32
+
33
+ def _read(self):
34
+ self._debug['key_name']['start'] = self._io.pos()
35
+ self.key_name = SshPublicKey.Cstring(self._io, self, self._root)
36
+ self.key_name._read()
37
+ self._debug['key_name']['end'] = self._io.pos()
38
+ self._debug['body']['start'] = self._io.pos()
39
+ _on = self.key_name.value
40
+ if _on == u"ssh-rsa":
41
+ self.body = SshPublicKey.KeyRsa(self._io, self, self._root)
42
+ self.body._read()
43
+ elif _on == u"ecdsa-sha2-nistp256":
44
+ self.body = SshPublicKey.KeyEcdsa(self._io, self, self._root)
45
+ self.body._read()
46
+ elif _on == u"ssh-ed25519":
47
+ self.body = SshPublicKey.KeyEd25519(self._io, self, self._root)
48
+ self.body._read()
49
+ elif _on == u"ssh-dss":
50
+ self.body = SshPublicKey.KeyDsa(self._io, self, self._root)
51
+ self.body._read()
52
+ self._debug['body']['end'] = self._io.pos()
53
+
54
+ class KeyRsa(KaitaiStruct):
55
+ """
56
+ .. seealso::
57
+ Source - https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshkey.c#L2011-L2028
58
+ """
59
+ SEQ_FIELDS = ["rsa_e", "rsa_n"]
60
+ def __init__(self, _io, _parent=None, _root=None):
61
+ self._io = _io
62
+ self._parent = _parent
63
+ self._root = _root if _root else self
64
+ self._debug = collections.defaultdict(dict)
65
+
66
+ def _read(self):
67
+ self._debug['rsa_e']['start'] = self._io.pos()
68
+ self.rsa_e = SshPublicKey.Bignum2(self._io, self, self._root)
69
+ self.rsa_e._read()
70
+ self._debug['rsa_e']['end'] = self._io.pos()
71
+ self._debug['rsa_n']['start'] = self._io.pos()
72
+ self.rsa_n = SshPublicKey.Bignum2(self._io, self, self._root)
73
+ self.rsa_n._read()
74
+ self._debug['rsa_n']['end'] = self._io.pos()
75
+
76
+ @property
77
+ def key_length(self):
78
+ """Key length in bits."""
79
+ if hasattr(self, '_m_key_length'):
80
+ return self._m_key_length if hasattr(self, '_m_key_length') else None
81
+
82
+ self._m_key_length = self.rsa_n.length_in_bits
83
+ return self._m_key_length if hasattr(self, '_m_key_length') else None
84
+
85
+
86
+ class KeyEd25519(KaitaiStruct):
87
+ """
88
+ .. seealso::
89
+ Source - https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshkey.c#L2111-L2124
90
+ """
91
+ SEQ_FIELDS = ["len_pk", "pk"]
92
+ def __init__(self, _io, _parent=None, _root=None):
93
+ self._io = _io
94
+ self._parent = _parent
95
+ self._root = _root if _root else self
96
+ self._debug = collections.defaultdict(dict)
97
+
98
+ def _read(self):
99
+ self._debug['len_pk']['start'] = self._io.pos()
100
+ self.len_pk = self._io.read_u4be()
101
+ self._debug['len_pk']['end'] = self._io.pos()
102
+ self._debug['pk']['start'] = self._io.pos()
103
+ self.pk = self._io.read_bytes(self.len_pk)
104
+ self._debug['pk']['end'] = self._io.pos()
105
+
106
+
107
+ class KeyEcdsa(KaitaiStruct):
108
+ """
109
+ .. seealso::
110
+ Source - https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshkey.c#L2060-L2103
111
+ """
112
+ SEQ_FIELDS = ["curve_name", "ec"]
113
+ def __init__(self, _io, _parent=None, _root=None):
114
+ self._io = _io
115
+ self._parent = _parent
116
+ self._root = _root if _root else self
117
+ self._debug = collections.defaultdict(dict)
118
+
119
+ def _read(self):
120
+ self._debug['curve_name']['start'] = self._io.pos()
121
+ self.curve_name = SshPublicKey.Cstring(self._io, self, self._root)
122
+ self.curve_name._read()
123
+ self._debug['curve_name']['end'] = self._io.pos()
124
+ self._debug['ec']['start'] = self._io.pos()
125
+ self.ec = SshPublicKey.EllipticCurve(self._io, self, self._root)
126
+ self.ec._read()
127
+ self._debug['ec']['end'] = self._io.pos()
128
+
129
+
130
+ class Cstring(KaitaiStruct):
131
+ """A integer-prefixed string designed to be read using `sshbuf_get_cstring`
132
+ and written by `sshbuf_put_cstring` routines in ssh sources. Name is an
133
+ obscure misnomer, as typically "C string" means a null-terminated string.
134
+
135
+ .. seealso::
136
+ Source - https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshbuf-getput-basic.c#L181
137
+ """
138
+ SEQ_FIELDS = ["len", "value"]
139
+ def __init__(self, _io, _parent=None, _root=None):
140
+ self._io = _io
141
+ self._parent = _parent
142
+ self._root = _root if _root else self
143
+ self._debug = collections.defaultdict(dict)
144
+
145
+ def _read(self):
146
+ self._debug['len']['start'] = self._io.pos()
147
+ self.len = self._io.read_u4be()
148
+ self._debug['len']['end'] = self._io.pos()
149
+ self._debug['value']['start'] = self._io.pos()
150
+ self.value = (self._io.read_bytes(self.len)).decode(u"ASCII")
151
+ self._debug['value']['end'] = self._io.pos()
152
+
153
+
154
+ class KeyDsa(KaitaiStruct):
155
+ """
156
+ .. seealso::
157
+ Source - https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshkey.c#L2036-L2051
158
+ """
159
+ SEQ_FIELDS = ["dsa_p", "dsa_q", "dsa_g", "dsa_pub_key"]
160
+ def __init__(self, _io, _parent=None, _root=None):
161
+ self._io = _io
162
+ self._parent = _parent
163
+ self._root = _root if _root else self
164
+ self._debug = collections.defaultdict(dict)
165
+
166
+ def _read(self):
167
+ self._debug['dsa_p']['start'] = self._io.pos()
168
+ self.dsa_p = SshPublicKey.Bignum2(self._io, self, self._root)
169
+ self.dsa_p._read()
170
+ self._debug['dsa_p']['end'] = self._io.pos()
171
+ self._debug['dsa_q']['start'] = self._io.pos()
172
+ self.dsa_q = SshPublicKey.Bignum2(self._io, self, self._root)
173
+ self.dsa_q._read()
174
+ self._debug['dsa_q']['end'] = self._io.pos()
175
+ self._debug['dsa_g']['start'] = self._io.pos()
176
+ self.dsa_g = SshPublicKey.Bignum2(self._io, self, self._root)
177
+ self.dsa_g._read()
178
+ self._debug['dsa_g']['end'] = self._io.pos()
179
+ self._debug['dsa_pub_key']['start'] = self._io.pos()
180
+ self.dsa_pub_key = SshPublicKey.Bignum2(self._io, self, self._root)
181
+ self.dsa_pub_key._read()
182
+ self._debug['dsa_pub_key']['end'] = self._io.pos()
183
+
184
+
185
+ class EllipticCurve(KaitaiStruct):
186
+ """Elliptic curve dump format used by ssh. In OpenSSH code, the following
187
+ routines are used to read/write it:
188
+
189
+ * sshbuf_get_ec
190
+ * get_ec
191
+
192
+ .. seealso::
193
+ Source - https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshbuf-getput-crypto.c#L90
194
+ https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshbuf-getput-crypto.c#L76
195
+ """
196
+ SEQ_FIELDS = ["len", "body"]
197
+ def __init__(self, _io, _parent=None, _root=None):
198
+ self._io = _io
199
+ self._parent = _parent
200
+ self._root = _root if _root else self
201
+ self._debug = collections.defaultdict(dict)
202
+
203
+ def _read(self):
204
+ self._debug['len']['start'] = self._io.pos()
205
+ self.len = self._io.read_u4be()
206
+ self._debug['len']['end'] = self._io.pos()
207
+ self._debug['body']['start'] = self._io.pos()
208
+ self.body = self._io.read_bytes(self.len)
209
+ self._debug['body']['end'] = self._io.pos()
210
+
211
+
212
+ class Bignum2(KaitaiStruct):
213
+ """Big integers serialization format used by ssh, v2. In the code, the following
214
+ routines are used to read/write it:
215
+
216
+ * sshbuf_get_bignum2
217
+ * sshbuf_get_bignum2_bytes_direct
218
+ * sshbuf_put_bignum2
219
+ * sshbuf_get_bignum2_bytes_direct
220
+
221
+ .. seealso::
222
+ Source - https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshbuf-getput-crypto.c#L35
223
+ https://github.com/openssh/openssh-portable/blob/b4d4eda6/sshbuf-getput-basic.c#L431
224
+ """
225
+ SEQ_FIELDS = ["len", "body"]
226
+ def __init__(self, _io, _parent=None, _root=None):
227
+ self._io = _io
228
+ self._parent = _parent
229
+ self._root = _root if _root else self
230
+ self._debug = collections.defaultdict(dict)
231
+
232
+ def _read(self):
233
+ self._debug['len']['start'] = self._io.pos()
234
+ self.len = self._io.read_u4be()
235
+ self._debug['len']['end'] = self._io.pos()
236
+ self._debug['body']['start'] = self._io.pos()
237
+ self.body = self._io.read_bytes(self.len)
238
+ self._debug['body']['end'] = self._io.pos()
239
+
240
+ @property
241
+ def length_in_bits(self):
242
+ """Length of big integer in bits. In OpenSSH sources, this corresponds to
243
+ `BN_num_bits` function.
244
+ """
245
+ if hasattr(self, '_m_length_in_bits'):
246
+ return self._m_length_in_bits if hasattr(self, '_m_length_in_bits') else None
247
+
248
+ self._m_length_in_bits = ((self.len - 1) * 8)
249
+ return self._m_length_in_bits if hasattr(self, '_m_length_in_bits') else None
250
+
251
+
252
+
@@ -0,0 +1,390 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ import collections
7
+ from enum import Enum
8
+
9
+
10
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
11
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
12
+
13
+ from polyfile.kaitai.parsers import vlq_base128_be
14
+ class StandardMidiFile(KaitaiStruct):
15
+ """Standard MIDI file, typically known just as "MID", is a standard way
16
+ to serialize series of MIDI events, which is a protocol used in many
17
+ music synthesizers to transfer music data: notes being played,
18
+ effects being applied, etc.
19
+
20
+ Internally, file consists of a header and series of tracks, every
21
+ track listing MIDI events with certain header designating time these
22
+ events are happening.
23
+
24
+ NOTE: Rarely, MIDI files employ certain stateful compression scheme
25
+ to avoid storing certain elements of further elements, instead
26
+ reusing them from events which happened earlier in the
27
+ stream. Kaitai Struct (as of v0.9) is currently unable to parse
28
+ these, but files employing this mechanism are relatively rare.
29
+ """
30
+ SEQ_FIELDS = ["hdr", "tracks"]
31
+ def __init__(self, _io, _parent=None, _root=None):
32
+ self._io = _io
33
+ self._parent = _parent
34
+ self._root = _root if _root else self
35
+ self._debug = collections.defaultdict(dict)
36
+
37
+ def _read(self):
38
+ self._debug['hdr']['start'] = self._io.pos()
39
+ self.hdr = StandardMidiFile.Header(self._io, self, self._root)
40
+ self.hdr._read()
41
+ self._debug['hdr']['end'] = self._io.pos()
42
+ self._debug['tracks']['start'] = self._io.pos()
43
+ self.tracks = [None] * (self.hdr.num_tracks)
44
+ for i in range(self.hdr.num_tracks):
45
+ if not 'arr' in self._debug['tracks']:
46
+ self._debug['tracks']['arr'] = []
47
+ self._debug['tracks']['arr'].append({'start': self._io.pos()})
48
+ _t_tracks = StandardMidiFile.Track(self._io, self, self._root)
49
+ _t_tracks._read()
50
+ self.tracks[i] = _t_tracks
51
+ self._debug['tracks']['arr'][i]['end'] = self._io.pos()
52
+
53
+ self._debug['tracks']['end'] = self._io.pos()
54
+
55
+ class TrackEvents(KaitaiStruct):
56
+ SEQ_FIELDS = ["event"]
57
+ def __init__(self, _io, _parent=None, _root=None):
58
+ self._io = _io
59
+ self._parent = _parent
60
+ self._root = _root if _root else self
61
+ self._debug = collections.defaultdict(dict)
62
+
63
+ def _read(self):
64
+ self._debug['event']['start'] = self._io.pos()
65
+ self.event = []
66
+ i = 0
67
+ while not self._io.is_eof():
68
+ if not 'arr' in self._debug['event']:
69
+ self._debug['event']['arr'] = []
70
+ self._debug['event']['arr'].append({'start': self._io.pos()})
71
+ _t_event = StandardMidiFile.TrackEvent(self._io, self, self._root)
72
+ _t_event._read()
73
+ self.event.append(_t_event)
74
+ self._debug['event']['arr'][len(self.event) - 1]['end'] = self._io.pos()
75
+ i += 1
76
+
77
+ self._debug['event']['end'] = self._io.pos()
78
+
79
+
80
+ class TrackEvent(KaitaiStruct):
81
+ SEQ_FIELDS = ["v_time", "event_header", "meta_event_body", "sysex_body", "event_body"]
82
+ def __init__(self, _io, _parent=None, _root=None):
83
+ self._io = _io
84
+ self._parent = _parent
85
+ self._root = _root if _root else self
86
+ self._debug = collections.defaultdict(dict)
87
+
88
+ def _read(self):
89
+ self._debug['v_time']['start'] = self._io.pos()
90
+ self.v_time = vlq_base128_be.VlqBase128Be(self._io)
91
+ self.v_time._read()
92
+ self._debug['v_time']['end'] = self._io.pos()
93
+ self._debug['event_header']['start'] = self._io.pos()
94
+ self.event_header = self._io.read_u1()
95
+ self._debug['event_header']['end'] = self._io.pos()
96
+ if self.event_header == 255:
97
+ self._debug['meta_event_body']['start'] = self._io.pos()
98
+ self.meta_event_body = StandardMidiFile.MetaEventBody(self._io, self, self._root)
99
+ self.meta_event_body._read()
100
+ self._debug['meta_event_body']['end'] = self._io.pos()
101
+
102
+ if self.event_header == 240:
103
+ self._debug['sysex_body']['start'] = self._io.pos()
104
+ self.sysex_body = StandardMidiFile.SysexEventBody(self._io, self, self._root)
105
+ self.sysex_body._read()
106
+ self._debug['sysex_body']['end'] = self._io.pos()
107
+
108
+ self._debug['event_body']['start'] = self._io.pos()
109
+ _on = self.event_type
110
+ if _on == 224:
111
+ self.event_body = StandardMidiFile.PitchBendEvent(self._io, self, self._root)
112
+ self.event_body._read()
113
+ elif _on == 144:
114
+ self.event_body = StandardMidiFile.NoteOnEvent(self._io, self, self._root)
115
+ self.event_body._read()
116
+ elif _on == 208:
117
+ self.event_body = StandardMidiFile.ChannelPressureEvent(self._io, self, self._root)
118
+ self.event_body._read()
119
+ elif _on == 192:
120
+ self.event_body = StandardMidiFile.ProgramChangeEvent(self._io, self, self._root)
121
+ self.event_body._read()
122
+ elif _on == 160:
123
+ self.event_body = StandardMidiFile.PolyphonicPressureEvent(self._io, self, self._root)
124
+ self.event_body._read()
125
+ elif _on == 176:
126
+ self.event_body = StandardMidiFile.ControllerEvent(self._io, self, self._root)
127
+ self.event_body._read()
128
+ elif _on == 128:
129
+ self.event_body = StandardMidiFile.NoteOffEvent(self._io, self, self._root)
130
+ self.event_body._read()
131
+ self._debug['event_body']['end'] = self._io.pos()
132
+
133
+ @property
134
+ def event_type(self):
135
+ if hasattr(self, '_m_event_type'):
136
+ return self._m_event_type if hasattr(self, '_m_event_type') else None
137
+
138
+ self._m_event_type = (self.event_header & 240)
139
+ return self._m_event_type if hasattr(self, '_m_event_type') else None
140
+
141
+ @property
142
+ def channel(self):
143
+ if hasattr(self, '_m_channel'):
144
+ return self._m_channel if hasattr(self, '_m_channel') else None
145
+
146
+ if self.event_type != 240:
147
+ self._m_channel = (self.event_header & 15)
148
+
149
+ return self._m_channel if hasattr(self, '_m_channel') else None
150
+
151
+
152
+ class PitchBendEvent(KaitaiStruct):
153
+ SEQ_FIELDS = ["b1", "b2"]
154
+ def __init__(self, _io, _parent=None, _root=None):
155
+ self._io = _io
156
+ self._parent = _parent
157
+ self._root = _root if _root else self
158
+ self._debug = collections.defaultdict(dict)
159
+
160
+ def _read(self):
161
+ self._debug['b1']['start'] = self._io.pos()
162
+ self.b1 = self._io.read_u1()
163
+ self._debug['b1']['end'] = self._io.pos()
164
+ self._debug['b2']['start'] = self._io.pos()
165
+ self.b2 = self._io.read_u1()
166
+ self._debug['b2']['end'] = self._io.pos()
167
+
168
+ @property
169
+ def bend_value(self):
170
+ if hasattr(self, '_m_bend_value'):
171
+ return self._m_bend_value if hasattr(self, '_m_bend_value') else None
172
+
173
+ self._m_bend_value = (((self.b2 << 7) + self.b1) - 16384)
174
+ return self._m_bend_value if hasattr(self, '_m_bend_value') else None
175
+
176
+ @property
177
+ def adj_bend_value(self):
178
+ if hasattr(self, '_m_adj_bend_value'):
179
+ return self._m_adj_bend_value if hasattr(self, '_m_adj_bend_value') else None
180
+
181
+ self._m_adj_bend_value = (self.bend_value - 16384)
182
+ return self._m_adj_bend_value if hasattr(self, '_m_adj_bend_value') else None
183
+
184
+
185
+ class ProgramChangeEvent(KaitaiStruct):
186
+ SEQ_FIELDS = ["program"]
187
+ def __init__(self, _io, _parent=None, _root=None):
188
+ self._io = _io
189
+ self._parent = _parent
190
+ self._root = _root if _root else self
191
+ self._debug = collections.defaultdict(dict)
192
+
193
+ def _read(self):
194
+ self._debug['program']['start'] = self._io.pos()
195
+ self.program = self._io.read_u1()
196
+ self._debug['program']['end'] = self._io.pos()
197
+
198
+
199
+ class NoteOnEvent(KaitaiStruct):
200
+ SEQ_FIELDS = ["note", "velocity"]
201
+ def __init__(self, _io, _parent=None, _root=None):
202
+ self._io = _io
203
+ self._parent = _parent
204
+ self._root = _root if _root else self
205
+ self._debug = collections.defaultdict(dict)
206
+
207
+ def _read(self):
208
+ self._debug['note']['start'] = self._io.pos()
209
+ self.note = self._io.read_u1()
210
+ self._debug['note']['end'] = self._io.pos()
211
+ self._debug['velocity']['start'] = self._io.pos()
212
+ self.velocity = self._io.read_u1()
213
+ self._debug['velocity']['end'] = self._io.pos()
214
+
215
+
216
+ class PolyphonicPressureEvent(KaitaiStruct):
217
+ SEQ_FIELDS = ["note", "pressure"]
218
+ def __init__(self, _io, _parent=None, _root=None):
219
+ self._io = _io
220
+ self._parent = _parent
221
+ self._root = _root if _root else self
222
+ self._debug = collections.defaultdict(dict)
223
+
224
+ def _read(self):
225
+ self._debug['note']['start'] = self._io.pos()
226
+ self.note = self._io.read_u1()
227
+ self._debug['note']['end'] = self._io.pos()
228
+ self._debug['pressure']['start'] = self._io.pos()
229
+ self.pressure = self._io.read_u1()
230
+ self._debug['pressure']['end'] = self._io.pos()
231
+
232
+
233
+ class Track(KaitaiStruct):
234
+ SEQ_FIELDS = ["magic", "len_events", "events"]
235
+ def __init__(self, _io, _parent=None, _root=None):
236
+ self._io = _io
237
+ self._parent = _parent
238
+ self._root = _root if _root else self
239
+ self._debug = collections.defaultdict(dict)
240
+
241
+ def _read(self):
242
+ self._debug['magic']['start'] = self._io.pos()
243
+ self.magic = self._io.read_bytes(4)
244
+ self._debug['magic']['end'] = self._io.pos()
245
+ if not self.magic == b"\x4D\x54\x72\x6B":
246
+ raise kaitaistruct.ValidationNotEqualError(b"\x4D\x54\x72\x6B", self.magic, self._io, u"/types/track/seq/0")
247
+ self._debug['len_events']['start'] = self._io.pos()
248
+ self.len_events = self._io.read_u4be()
249
+ self._debug['len_events']['end'] = self._io.pos()
250
+ self._debug['events']['start'] = self._io.pos()
251
+ self._raw_events = self._io.read_bytes(self.len_events)
252
+ _io__raw_events = KaitaiStream(BytesIO(self._raw_events))
253
+ self.events = StandardMidiFile.TrackEvents(_io__raw_events, self, self._root)
254
+ self.events._read()
255
+ self._debug['events']['end'] = self._io.pos()
256
+
257
+
258
+ class MetaEventBody(KaitaiStruct):
259
+
260
+ class MetaTypeEnum(Enum):
261
+ sequence_number = 0
262
+ text_event = 1
263
+ copyright = 2
264
+ sequence_track_name = 3
265
+ instrument_name = 4
266
+ lyric_text = 5
267
+ marker_text = 6
268
+ cue_point = 7
269
+ midi_channel_prefix_assignment = 32
270
+ end_of_track = 47
271
+ tempo = 81
272
+ smpte_offset = 84
273
+ time_signature = 88
274
+ key_signature = 89
275
+ sequencer_specific_event = 127
276
+ SEQ_FIELDS = ["meta_type", "len", "body"]
277
+ def __init__(self, _io, _parent=None, _root=None):
278
+ self._io = _io
279
+ self._parent = _parent
280
+ self._root = _root if _root else self
281
+ self._debug = collections.defaultdict(dict)
282
+
283
+ def _read(self):
284
+ self._debug['meta_type']['start'] = self._io.pos()
285
+ self.meta_type = KaitaiStream.resolve_enum(StandardMidiFile.MetaEventBody.MetaTypeEnum, self._io.read_u1())
286
+ self._debug['meta_type']['end'] = self._io.pos()
287
+ self._debug['len']['start'] = self._io.pos()
288
+ self.len = vlq_base128_be.VlqBase128Be(self._io)
289
+ self.len._read()
290
+ self._debug['len']['end'] = self._io.pos()
291
+ self._debug['body']['start'] = self._io.pos()
292
+ self.body = self._io.read_bytes(self.len.value)
293
+ self._debug['body']['end'] = self._io.pos()
294
+
295
+
296
+ class ControllerEvent(KaitaiStruct):
297
+ SEQ_FIELDS = ["controller", "value"]
298
+ def __init__(self, _io, _parent=None, _root=None):
299
+ self._io = _io
300
+ self._parent = _parent
301
+ self._root = _root if _root else self
302
+ self._debug = collections.defaultdict(dict)
303
+
304
+ def _read(self):
305
+ self._debug['controller']['start'] = self._io.pos()
306
+ self.controller = self._io.read_u1()
307
+ self._debug['controller']['end'] = self._io.pos()
308
+ self._debug['value']['start'] = self._io.pos()
309
+ self.value = self._io.read_u1()
310
+ self._debug['value']['end'] = self._io.pos()
311
+
312
+
313
+ class Header(KaitaiStruct):
314
+ SEQ_FIELDS = ["magic", "len_header", "format", "num_tracks", "division"]
315
+ def __init__(self, _io, _parent=None, _root=None):
316
+ self._io = _io
317
+ self._parent = _parent
318
+ self._root = _root if _root else self
319
+ self._debug = collections.defaultdict(dict)
320
+
321
+ def _read(self):
322
+ self._debug['magic']['start'] = self._io.pos()
323
+ self.magic = self._io.read_bytes(4)
324
+ self._debug['magic']['end'] = self._io.pos()
325
+ if not self.magic == b"\x4D\x54\x68\x64":
326
+ raise kaitaistruct.ValidationNotEqualError(b"\x4D\x54\x68\x64", self.magic, self._io, u"/types/header/seq/0")
327
+ self._debug['len_header']['start'] = self._io.pos()
328
+ self.len_header = self._io.read_u4be()
329
+ self._debug['len_header']['end'] = self._io.pos()
330
+ self._debug['format']['start'] = self._io.pos()
331
+ self.format = self._io.read_u2be()
332
+ self._debug['format']['end'] = self._io.pos()
333
+ self._debug['num_tracks']['start'] = self._io.pos()
334
+ self.num_tracks = self._io.read_u2be()
335
+ self._debug['num_tracks']['end'] = self._io.pos()
336
+ self._debug['division']['start'] = self._io.pos()
337
+ self.division = self._io.read_s2be()
338
+ self._debug['division']['end'] = self._io.pos()
339
+
340
+
341
+ class SysexEventBody(KaitaiStruct):
342
+ SEQ_FIELDS = ["len", "data"]
343
+ def __init__(self, _io, _parent=None, _root=None):
344
+ self._io = _io
345
+ self._parent = _parent
346
+ self._root = _root if _root else self
347
+ self._debug = collections.defaultdict(dict)
348
+
349
+ def _read(self):
350
+ self._debug['len']['start'] = self._io.pos()
351
+ self.len = vlq_base128_be.VlqBase128Be(self._io)
352
+ self.len._read()
353
+ self._debug['len']['end'] = self._io.pos()
354
+ self._debug['data']['start'] = self._io.pos()
355
+ self.data = self._io.read_bytes(self.len.value)
356
+ self._debug['data']['end'] = self._io.pos()
357
+
358
+
359
+ class NoteOffEvent(KaitaiStruct):
360
+ SEQ_FIELDS = ["note", "velocity"]
361
+ def __init__(self, _io, _parent=None, _root=None):
362
+ self._io = _io
363
+ self._parent = _parent
364
+ self._root = _root if _root else self
365
+ self._debug = collections.defaultdict(dict)
366
+
367
+ def _read(self):
368
+ self._debug['note']['start'] = self._io.pos()
369
+ self.note = self._io.read_u1()
370
+ self._debug['note']['end'] = self._io.pos()
371
+ self._debug['velocity']['start'] = self._io.pos()
372
+ self.velocity = self._io.read_u1()
373
+ self._debug['velocity']['end'] = self._io.pos()
374
+
375
+
376
+ class ChannelPressureEvent(KaitaiStruct):
377
+ SEQ_FIELDS = ["pressure"]
378
+ def __init__(self, _io, _parent=None, _root=None):
379
+ self._io = _io
380
+ self._parent = _parent
381
+ self._root = _root if _root else self
382
+ self._debug = collections.defaultdict(dict)
383
+
384
+ def _read(self):
385
+ self._debug['pressure']['start'] = self._io.pos()
386
+ self.pressure = self._io.read_u1()
387
+ self._debug['pressure']['end'] = self._io.pos()
388
+
389
+
390
+