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,634 @@
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
+ from enum import Enum
7
+ import collections
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
+ class QuicktimeMov(KaitaiStruct):
14
+ """
15
+ .. seealso::
16
+ Source - https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html#//apple_ref/doc/uid/TP40000939-CH203-BBCGDDDF
17
+ """
18
+
19
+ class AtomType(Enum):
20
+ xtra = 1484026465
21
+ dinf = 1684631142
22
+ dref = 1685218662
23
+ edts = 1701082227
24
+ elst = 1701606260
25
+ free = 1718773093
26
+ ftyp = 1718909296
27
+ hdlr = 1751411826
28
+ iods = 1768907891
29
+ mdat = 1835295092
30
+ mdhd = 1835296868
31
+ mdia = 1835297121
32
+ meta = 1835365473
33
+ minf = 1835626086
34
+ moof = 1836019558
35
+ moov = 1836019574
36
+ mvhd = 1836476516
37
+ smhd = 1936549988
38
+ stbl = 1937007212
39
+ stco = 1937007471
40
+ stsc = 1937011555
41
+ stsd = 1937011556
42
+ stsz = 1937011578
43
+ stts = 1937011827
44
+ tkhd = 1953196132
45
+ traf = 1953653094
46
+ trak = 1953653099
47
+ tref = 1953654118
48
+ udta = 1969517665
49
+ vmhd = 1986881636
50
+
51
+ class Brand(Enum):
52
+ x_3g2a = 862401121
53
+ x_3ge6 = 862414134
54
+ x_3ge7 = 862414135
55
+ x_3ge9 = 862414137
56
+ x_3gf9 = 862414393
57
+ x_3gg6 = 862414646
58
+ x_3gg9 = 862414649
59
+ x_3gh9 = 862414905
60
+ x_3gm9 = 862416185
61
+ x_3gma = 862416193
62
+ x_3gp4 = 862416948
63
+ x_3gp5 = 862416949
64
+ x_3gp6 = 862416950
65
+ x_3gp7 = 862416951
66
+ x_3gp8 = 862416952
67
+ x_3gp9 = 862416953
68
+ x_3gr6 = 862417462
69
+ x_3gr9 = 862417465
70
+ x_3gs6 = 862417718
71
+ x_3gs9 = 862417721
72
+ x_3gt8 = 862417976
73
+ x_3gt9 = 862417977
74
+ x_3gtv = 862418038
75
+ x_3gvr = 862418546
76
+ x_3vra = 863400545
77
+ x_3vrb = 863400546
78
+ x_3vrm = 863400557
79
+ arri = 1095914057
80
+ caep = 1128351056
81
+ cdes = 1128555891
82
+ j2p0 = 1244811312
83
+ j2p1 = 1244811313
84
+ lcag = 1279476039
85
+ m4a = 1295270176
86
+ m4b = 1295270432
87
+ m4p = 1295274016
88
+ m4v = 1295275552
89
+ ma1a = 1296118081
90
+ ma1b = 1296118082
91
+ mfsm = 1296454477
92
+ mgsv = 1296520022
93
+ mppi = 1297109065
94
+ msnv = 1297305174
95
+ miab = 1298743618
96
+ miac = 1298743619
97
+ mian = 1298743662
98
+ mibu = 1298743925
99
+ micm = 1298744173
100
+ miha = 1298745409
101
+ mihb = 1298745410
102
+ mihe = 1298745413
103
+ mipr = 1298747506
104
+ ross = 1380930387
105
+ seau = 1397047637
106
+ sebk = 1397047883
107
+ xavc = 1480676931
108
+ adti = 1633973353
109
+ aid3 = 1634296883
110
+ av01 = 1635135537
111
+ avc1 = 1635148593
112
+ avci = 1635148649
113
+ avcs = 1635148659
114
+ avde = 1635148901
115
+ avif = 1635150182
116
+ avio = 1635150191
117
+ avis = 1635150195
118
+ bbxm = 1650620525
119
+ ca4m = 1667314797
120
+ ca4s = 1667314803
121
+ caaa = 1667326305
122
+ caac = 1667326307
123
+ cabl = 1667326572
124
+ cama = 1667329377
125
+ camc = 1667329379
126
+ caqv = 1667330422
127
+ casu = 1667330933
128
+ ccea = 1667458401
129
+ ccff = 1667458662
130
+ cdm1 = 1667525937
131
+ cdm4 = 1667525940
132
+ ceac = 1667588451
133
+ cfhd = 1667655780
134
+ cfsd = 1667658596
135
+ chd1 = 1667785777
136
+ chd2 = 1667785778
137
+ chdf = 1667785830
138
+ chev = 1667786102
139
+ chh1 = 1667786801
140
+ chhd = 1667786852
141
+ cint = 1667853940
142
+ clg1 = 1668048689
143
+ clg2 = 1668048690
144
+ cmf2 = 1668113970
145
+ cmfc = 1668114019
146
+ cmff = 1668114022
147
+ cmfl = 1668114028
148
+ cmfs = 1668114035
149
+ cmhm = 1668114541
150
+ cmhs = 1668114547
151
+ comp = 1668246896
152
+ csh1 = 1668507697
153
+ cud1 = 1668637745
154
+ cud2 = 1668637746
155
+ cud8 = 1668637752
156
+ cud9 = 1668637753
157
+ cuvd = 1668642404
158
+ cvid = 1668704612
159
+ cvvc = 1668707939
160
+ cwvt = 1668773492
161
+ da0a = 1684090977
162
+ da0b = 1684090978
163
+ da1a = 1684091233
164
+ da1b = 1684091234
165
+ da2a = 1684091489
166
+ da2b = 1684091490
167
+ da3a = 1684091745
168
+ da3b = 1684091746
169
+ dash = 1684108136
170
+ dby1 = 1684175153
171
+ dmb1 = 1684890161
172
+ dsms = 1685286259
173
+ dts1 = 1685353265
174
+ dts2 = 1685353266
175
+ dts3 = 1685353267
176
+ dv1a = 1685467489
177
+ dv1b = 1685467490
178
+ dv2a = 1685467745
179
+ dv2b = 1685467746
180
+ dv3a = 1685468001
181
+ dv3b = 1685468002
182
+ dvr1 = 1685484081
183
+ dvt1 = 1685484593
184
+ dxo = 1685614368
185
+ emsg = 1701671783
186
+ heic = 1751476579
187
+ heim = 1751476589
188
+ heis = 1751476595
189
+ heix = 1751476600
190
+ heoi = 1751478121
191
+ hevc = 1751479907
192
+ hevd = 1751479908
193
+ hevi = 1751479913
194
+ hevm = 1751479917
195
+ hevs = 1751479923
196
+ hevx = 1751479928
197
+ hvce = 1752589157
198
+ hvci = 1752589161
199
+ hvcx = 1752589176
200
+ hvti = 1752593513
201
+ ifaa = 1768317281
202
+ ifah = 1768317288
203
+ ifai = 1768317289
204
+ ifas = 1768317299
205
+ ifau = 1768317301
206
+ ifav = 1768317302
207
+ ifhd = 1768319076
208
+ ifhh = 1768319080
209
+ ifhr = 1768319090
210
+ ifhs = 1768319091
211
+ ifhu = 1768319093
212
+ ifhx = 1768319096
213
+ ifrm = 1768321645
214
+ ifsd = 1768321892
215
+ im1i = 1768763753
216
+ im1t = 1768763764
217
+ im2i = 1768764009
218
+ im2t = 1768764020
219
+ isc2 = 1769169714
220
+ iso2 = 1769172786
221
+ iso3 = 1769172787
222
+ iso4 = 1769172788
223
+ iso5 = 1769172789
224
+ iso6 = 1769172790
225
+ iso7 = 1769172791
226
+ iso8 = 1769172792
227
+ iso9 = 1769172793
228
+ isoa = 1769172833
229
+ isob = 1769172834
230
+ isoc = 1769172835
231
+ isom = 1769172845
232
+ j2is = 1781688691
233
+ j2ki = 1781689193
234
+ j2ks = 1781689203
235
+ jp2 = 1785737760
236
+ jpeg = 1785750887
237
+ jpgs = 1785751411
238
+ jpm = 1785752864
239
+ jpoi = 1785753449
240
+ jpsi = 1785754473
241
+ jpx = 1785755680
242
+ jpxb = 1785755746
243
+ jxl = 1786276896
244
+ jxs = 1786278688
245
+ jxsc = 1786278755
246
+ jxsi = 1786278761
247
+ jxss = 1786278771
248
+ lhte = 1818784869
249
+ lhti = 1818784873
250
+ lmsg = 1819112295
251
+ miaf = 1835622758
252
+ mif1 = 1835623985
253
+ mif2 = 1835623986
254
+ mj2s = 1835676275
255
+ mjp2 = 1835692082
256
+ mp21 = 1836069425
257
+ mp41 = 1836069937
258
+ mp42 = 1836069938
259
+ mp71 = 1836070705
260
+ mpuf = 1836086630
261
+ msdh = 1836278888
262
+ msf1 = 1836279345
263
+ msix = 1836280184
264
+ niko = 1852402543
265
+ nlsl = 1852601196
266
+ nras = 1852989811
267
+ oa2d = 1868640868
268
+ oabl = 1868653164
269
+ odcf = 1868850022
270
+ ompp = 1869443184
271
+ opf2 = 1869637170
272
+ opx2 = 1869641778
273
+ ovdp = 1870029936
274
+ ovly = 1870031993
275
+ paff = 1885431398
276
+ pana = 1885433441
277
+ piff = 1885955686
278
+ pmff = 1886217830
279
+ pnvi = 1886287465
280
+ pred = 1886545252
281
+ qt = 1903435808
282
+ relo = 1919249519
283
+ risx = 1919513464
284
+ sdv = 1935963680
285
+ senv = 1936027254
286
+ sims = 1936289139
287
+ sisx = 1936290680
288
+ siti = 1936290921
289
+ sitv = 1936290934
290
+ slh1 = 1936484401
291
+ slh2 = 1936484402
292
+ slh3 = 1936484403
293
+ ssss = 1936946035
294
+ ttml = 1953787244
295
+ ttwv = 1953789814
296
+ uhvi = 1969780329
297
+ unif = 1970170214
298
+ uvvu = 1970697845
299
+ v3mp = 1983081840
300
+ v3mt = 1983081844
301
+ v3nt = 1983082100
302
+ v3st = 1983083380
303
+ vvci = 1987470185
304
+ vvoi = 1987473257
305
+ vwpt = 1987539060
306
+ yt4 = 2037658656
307
+ SEQ_FIELDS = ["atoms"]
308
+ def __init__(self, _io, _parent=None, _root=None):
309
+ self._io = _io
310
+ self._parent = _parent
311
+ self._root = _root if _root else self
312
+ self._debug = collections.defaultdict(dict)
313
+
314
+ def _read(self):
315
+ self._debug['atoms']['start'] = self._io.pos()
316
+ self.atoms = QuicktimeMov.AtomList(self._io, self, self._root)
317
+ self.atoms._read()
318
+ self._debug['atoms']['end'] = self._io.pos()
319
+
320
+ class MvhdBody(KaitaiStruct):
321
+ """
322
+ .. seealso::
323
+ Source - https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-BBCGFGJG
324
+ """
325
+ SEQ_FIELDS = ["version", "flags", "creation_time", "modification_time", "time_scale", "duration", "preferred_rate", "preferred_volume", "reserved1", "matrix", "preview_time", "preview_duration", "poster_time", "selection_time", "selection_duration", "current_time", "next_track_id"]
326
+ def __init__(self, _io, _parent=None, _root=None):
327
+ self._io = _io
328
+ self._parent = _parent
329
+ self._root = _root if _root else self
330
+ self._debug = collections.defaultdict(dict)
331
+
332
+ def _read(self):
333
+ self._debug['version']['start'] = self._io.pos()
334
+ self.version = self._io.read_u1()
335
+ self._debug['version']['end'] = self._io.pos()
336
+ self._debug['flags']['start'] = self._io.pos()
337
+ self.flags = self._io.read_bytes(3)
338
+ self._debug['flags']['end'] = self._io.pos()
339
+ self._debug['creation_time']['start'] = self._io.pos()
340
+ self.creation_time = self._io.read_u4be()
341
+ self._debug['creation_time']['end'] = self._io.pos()
342
+ self._debug['modification_time']['start'] = self._io.pos()
343
+ self.modification_time = self._io.read_u4be()
344
+ self._debug['modification_time']['end'] = self._io.pos()
345
+ self._debug['time_scale']['start'] = self._io.pos()
346
+ self.time_scale = self._io.read_u4be()
347
+ self._debug['time_scale']['end'] = self._io.pos()
348
+ self._debug['duration']['start'] = self._io.pos()
349
+ self.duration = self._io.read_u4be()
350
+ self._debug['duration']['end'] = self._io.pos()
351
+ self._debug['preferred_rate']['start'] = self._io.pos()
352
+ self.preferred_rate = QuicktimeMov.Fixed32(self._io, self, self._root)
353
+ self.preferred_rate._read()
354
+ self._debug['preferred_rate']['end'] = self._io.pos()
355
+ self._debug['preferred_volume']['start'] = self._io.pos()
356
+ self.preferred_volume = QuicktimeMov.Fixed16(self._io, self, self._root)
357
+ self.preferred_volume._read()
358
+ self._debug['preferred_volume']['end'] = self._io.pos()
359
+ self._debug['reserved1']['start'] = self._io.pos()
360
+ self.reserved1 = self._io.read_bytes(10)
361
+ self._debug['reserved1']['end'] = self._io.pos()
362
+ self._debug['matrix']['start'] = self._io.pos()
363
+ self.matrix = self._io.read_bytes(36)
364
+ self._debug['matrix']['end'] = self._io.pos()
365
+ self._debug['preview_time']['start'] = self._io.pos()
366
+ self.preview_time = self._io.read_u4be()
367
+ self._debug['preview_time']['end'] = self._io.pos()
368
+ self._debug['preview_duration']['start'] = self._io.pos()
369
+ self.preview_duration = self._io.read_u4be()
370
+ self._debug['preview_duration']['end'] = self._io.pos()
371
+ self._debug['poster_time']['start'] = self._io.pos()
372
+ self.poster_time = self._io.read_u4be()
373
+ self._debug['poster_time']['end'] = self._io.pos()
374
+ self._debug['selection_time']['start'] = self._io.pos()
375
+ self.selection_time = self._io.read_u4be()
376
+ self._debug['selection_time']['end'] = self._io.pos()
377
+ self._debug['selection_duration']['start'] = self._io.pos()
378
+ self.selection_duration = self._io.read_u4be()
379
+ self._debug['selection_duration']['end'] = self._io.pos()
380
+ self._debug['current_time']['start'] = self._io.pos()
381
+ self.current_time = self._io.read_u4be()
382
+ self._debug['current_time']['end'] = self._io.pos()
383
+ self._debug['next_track_id']['start'] = self._io.pos()
384
+ self.next_track_id = self._io.read_u4be()
385
+ self._debug['next_track_id']['end'] = self._io.pos()
386
+
387
+
388
+ class FtypBody(KaitaiStruct):
389
+ """
390
+ .. seealso::
391
+ Source - https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html#//apple_ref/doc/uid/TP40000939-CH203-CJBCBIFF
392
+ """
393
+ SEQ_FIELDS = ["major_brand", "minor_version", "compatible_brands"]
394
+ def __init__(self, _io, _parent=None, _root=None):
395
+ self._io = _io
396
+ self._parent = _parent
397
+ self._root = _root if _root else self
398
+ self._debug = collections.defaultdict(dict)
399
+
400
+ def _read(self):
401
+ self._debug['major_brand']['start'] = self._io.pos()
402
+ self.major_brand = KaitaiStream.resolve_enum(QuicktimeMov.Brand, self._io.read_u4be())
403
+ self._debug['major_brand']['end'] = self._io.pos()
404
+ self._debug['minor_version']['start'] = self._io.pos()
405
+ self.minor_version = self._io.read_bytes(4)
406
+ self._debug['minor_version']['end'] = self._io.pos()
407
+ self._debug['compatible_brands']['start'] = self._io.pos()
408
+ self.compatible_brands = []
409
+ i = 0
410
+ while not self._io.is_eof():
411
+ if not 'arr' in self._debug['compatible_brands']:
412
+ self._debug['compatible_brands']['arr'] = []
413
+ self._debug['compatible_brands']['arr'].append({'start': self._io.pos()})
414
+ self.compatible_brands.append(KaitaiStream.resolve_enum(QuicktimeMov.Brand, self._io.read_u4be()))
415
+ self._debug['compatible_brands']['arr'][len(self.compatible_brands) - 1]['end'] = self._io.pos()
416
+ i += 1
417
+
418
+ self._debug['compatible_brands']['end'] = self._io.pos()
419
+
420
+
421
+ class Fixed32(KaitaiStruct):
422
+ """Fixed-point 32-bit number."""
423
+ SEQ_FIELDS = ["int_part", "frac_part"]
424
+ def __init__(self, _io, _parent=None, _root=None):
425
+ self._io = _io
426
+ self._parent = _parent
427
+ self._root = _root if _root else self
428
+ self._debug = collections.defaultdict(dict)
429
+
430
+ def _read(self):
431
+ self._debug['int_part']['start'] = self._io.pos()
432
+ self.int_part = self._io.read_s2be()
433
+ self._debug['int_part']['end'] = self._io.pos()
434
+ self._debug['frac_part']['start'] = self._io.pos()
435
+ self.frac_part = self._io.read_u2be()
436
+ self._debug['frac_part']['end'] = self._io.pos()
437
+
438
+
439
+ class Fixed16(KaitaiStruct):
440
+ """Fixed-point 16-bit number."""
441
+ SEQ_FIELDS = ["int_part", "frac_part"]
442
+ def __init__(self, _io, _parent=None, _root=None):
443
+ self._io = _io
444
+ self._parent = _parent
445
+ self._root = _root if _root else self
446
+ self._debug = collections.defaultdict(dict)
447
+
448
+ def _read(self):
449
+ self._debug['int_part']['start'] = self._io.pos()
450
+ self.int_part = self._io.read_s1()
451
+ self._debug['int_part']['end'] = self._io.pos()
452
+ self._debug['frac_part']['start'] = self._io.pos()
453
+ self.frac_part = self._io.read_u1()
454
+ self._debug['frac_part']['end'] = self._io.pos()
455
+
456
+
457
+ class Atom(KaitaiStruct):
458
+ SEQ_FIELDS = ["len32", "atom_type", "len64", "body"]
459
+ def __init__(self, _io, _parent=None, _root=None):
460
+ self._io = _io
461
+ self._parent = _parent
462
+ self._root = _root if _root else self
463
+ self._debug = collections.defaultdict(dict)
464
+
465
+ def _read(self):
466
+ self._debug['len32']['start'] = self._io.pos()
467
+ self.len32 = self._io.read_u4be()
468
+ self._debug['len32']['end'] = self._io.pos()
469
+ self._debug['atom_type']['start'] = self._io.pos()
470
+ self.atom_type = KaitaiStream.resolve_enum(QuicktimeMov.AtomType, self._io.read_u4be())
471
+ self._debug['atom_type']['end'] = self._io.pos()
472
+ if self.len32 == 1:
473
+ self._debug['len64']['start'] = self._io.pos()
474
+ self.len64 = self._io.read_u8be()
475
+ self._debug['len64']['end'] = self._io.pos()
476
+
477
+ self._debug['body']['start'] = self._io.pos()
478
+ _on = self.atom_type
479
+ if _on == QuicktimeMov.AtomType.moof:
480
+ self._raw_body = self._io.read_bytes(self.len)
481
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
482
+ self.body = QuicktimeMov.AtomList(_io__raw_body, self, self._root)
483
+ self.body._read()
484
+ elif _on == QuicktimeMov.AtomType.tkhd:
485
+ self._raw_body = self._io.read_bytes(self.len)
486
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
487
+ self.body = QuicktimeMov.TkhdBody(_io__raw_body, self, self._root)
488
+ self.body._read()
489
+ elif _on == QuicktimeMov.AtomType.stbl:
490
+ self._raw_body = self._io.read_bytes(self.len)
491
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
492
+ self.body = QuicktimeMov.AtomList(_io__raw_body, self, self._root)
493
+ self.body._read()
494
+ elif _on == QuicktimeMov.AtomType.traf:
495
+ self._raw_body = self._io.read_bytes(self.len)
496
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
497
+ self.body = QuicktimeMov.AtomList(_io__raw_body, self, self._root)
498
+ self.body._read()
499
+ elif _on == QuicktimeMov.AtomType.minf:
500
+ self._raw_body = self._io.read_bytes(self.len)
501
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
502
+ self.body = QuicktimeMov.AtomList(_io__raw_body, self, self._root)
503
+ self.body._read()
504
+ elif _on == QuicktimeMov.AtomType.trak:
505
+ self._raw_body = self._io.read_bytes(self.len)
506
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
507
+ self.body = QuicktimeMov.AtomList(_io__raw_body, self, self._root)
508
+ self.body._read()
509
+ elif _on == QuicktimeMov.AtomType.moov:
510
+ self._raw_body = self._io.read_bytes(self.len)
511
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
512
+ self.body = QuicktimeMov.AtomList(_io__raw_body, self, self._root)
513
+ self.body._read()
514
+ elif _on == QuicktimeMov.AtomType.mdia:
515
+ self._raw_body = self._io.read_bytes(self.len)
516
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
517
+ self.body = QuicktimeMov.AtomList(_io__raw_body, self, self._root)
518
+ self.body._read()
519
+ elif _on == QuicktimeMov.AtomType.dinf:
520
+ self._raw_body = self._io.read_bytes(self.len)
521
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
522
+ self.body = QuicktimeMov.AtomList(_io__raw_body, self, self._root)
523
+ self.body._read()
524
+ elif _on == QuicktimeMov.AtomType.mvhd:
525
+ self._raw_body = self._io.read_bytes(self.len)
526
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
527
+ self.body = QuicktimeMov.MvhdBody(_io__raw_body, self, self._root)
528
+ self.body._read()
529
+ elif _on == QuicktimeMov.AtomType.ftyp:
530
+ self._raw_body = self._io.read_bytes(self.len)
531
+ _io__raw_body = KaitaiStream(BytesIO(self._raw_body))
532
+ self.body = QuicktimeMov.FtypBody(_io__raw_body, self, self._root)
533
+ self.body._read()
534
+ else:
535
+ self.body = self._io.read_bytes(self.len)
536
+ self._debug['body']['end'] = self._io.pos()
537
+
538
+ @property
539
+ def len(self):
540
+ if hasattr(self, '_m_len'):
541
+ return self._m_len if hasattr(self, '_m_len') else None
542
+
543
+ self._m_len = ((self._io.size() - 8) if self.len32 == 0 else ((self.len64 - 16) if self.len32 == 1 else (self.len32 - 8)))
544
+ return self._m_len if hasattr(self, '_m_len') else None
545
+
546
+
547
+ class TkhdBody(KaitaiStruct):
548
+ """
549
+ .. seealso::
550
+ Source - https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25550
551
+ """
552
+ SEQ_FIELDS = ["version", "flags", "creation_time", "modification_time", "track_id", "reserved1", "duration", "reserved2", "layer", "alternative_group", "volume", "reserved3", "matrix", "width", "height"]
553
+ def __init__(self, _io, _parent=None, _root=None):
554
+ self._io = _io
555
+ self._parent = _parent
556
+ self._root = _root if _root else self
557
+ self._debug = collections.defaultdict(dict)
558
+
559
+ def _read(self):
560
+ self._debug['version']['start'] = self._io.pos()
561
+ self.version = self._io.read_u1()
562
+ self._debug['version']['end'] = self._io.pos()
563
+ self._debug['flags']['start'] = self._io.pos()
564
+ self.flags = self._io.read_bytes(3)
565
+ self._debug['flags']['end'] = self._io.pos()
566
+ self._debug['creation_time']['start'] = self._io.pos()
567
+ self.creation_time = self._io.read_u4be()
568
+ self._debug['creation_time']['end'] = self._io.pos()
569
+ self._debug['modification_time']['start'] = self._io.pos()
570
+ self.modification_time = self._io.read_u4be()
571
+ self._debug['modification_time']['end'] = self._io.pos()
572
+ self._debug['track_id']['start'] = self._io.pos()
573
+ self.track_id = self._io.read_u4be()
574
+ self._debug['track_id']['end'] = self._io.pos()
575
+ self._debug['reserved1']['start'] = self._io.pos()
576
+ self.reserved1 = self._io.read_bytes(4)
577
+ self._debug['reserved1']['end'] = self._io.pos()
578
+ self._debug['duration']['start'] = self._io.pos()
579
+ self.duration = self._io.read_u4be()
580
+ self._debug['duration']['end'] = self._io.pos()
581
+ self._debug['reserved2']['start'] = self._io.pos()
582
+ self.reserved2 = self._io.read_bytes(8)
583
+ self._debug['reserved2']['end'] = self._io.pos()
584
+ self._debug['layer']['start'] = self._io.pos()
585
+ self.layer = self._io.read_u2be()
586
+ self._debug['layer']['end'] = self._io.pos()
587
+ self._debug['alternative_group']['start'] = self._io.pos()
588
+ self.alternative_group = self._io.read_u2be()
589
+ self._debug['alternative_group']['end'] = self._io.pos()
590
+ self._debug['volume']['start'] = self._io.pos()
591
+ self.volume = self._io.read_u2be()
592
+ self._debug['volume']['end'] = self._io.pos()
593
+ self._debug['reserved3']['start'] = self._io.pos()
594
+ self.reserved3 = self._io.read_u2be()
595
+ self._debug['reserved3']['end'] = self._io.pos()
596
+ self._debug['matrix']['start'] = self._io.pos()
597
+ self.matrix = self._io.read_bytes(36)
598
+ self._debug['matrix']['end'] = self._io.pos()
599
+ self._debug['width']['start'] = self._io.pos()
600
+ self.width = QuicktimeMov.Fixed32(self._io, self, self._root)
601
+ self.width._read()
602
+ self._debug['width']['end'] = self._io.pos()
603
+ self._debug['height']['start'] = self._io.pos()
604
+ self.height = QuicktimeMov.Fixed32(self._io, self, self._root)
605
+ self.height._read()
606
+ self._debug['height']['end'] = self._io.pos()
607
+
608
+
609
+ class AtomList(KaitaiStruct):
610
+ SEQ_FIELDS = ["items"]
611
+ def __init__(self, _io, _parent=None, _root=None):
612
+ self._io = _io
613
+ self._parent = _parent
614
+ self._root = _root if _root else self
615
+ self._debug = collections.defaultdict(dict)
616
+
617
+ def _read(self):
618
+ self._debug['items']['start'] = self._io.pos()
619
+ self.items = []
620
+ i = 0
621
+ while not self._io.is_eof():
622
+ if not 'arr' in self._debug['items']:
623
+ self._debug['items']['arr'] = []
624
+ self._debug['items']['arr'].append({'start': self._io.pos()})
625
+ _t_items = QuicktimeMov.Atom(self._io, self, self._root)
626
+ _t_items._read()
627
+ self.items.append(_t_items)
628
+ self._debug['items']['arr'][len(self.items) - 1]['end'] = self._io.pos()
629
+ i += 1
630
+
631
+ self._debug['items']['end'] = self._io.pos()
632
+
633
+
634
+