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,244 @@
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 GimpBrush(KaitaiStruct):
14
+ """GIMP brush format is native to the GIMP image editor for storing a brush or a texture.
15
+ It can be used in all [Paint Tools](https://docs.gimp.org/2.10/en/gimp-tools-paint.html),
16
+ for example Pencil and Paintbrush. It works by repeating the brush bitmap as you move
17
+ the tool. The Spacing parameter sets the distance between the brush marks as a percentage
18
+ of brush width. Its default value can be set in the brush file.
19
+
20
+ You can also use GIMP to create new brushes in this format. Custom brushes can be loaded
21
+ into GIMP for use in the paint tools by copying them into one of the Brush Folders -
22
+ select **Edit** > **Preferences** in the menu bar, expand the **Folders** section
23
+ and choose **Brushes** to see the recognized Brush Folders or to add new ones.
24
+
25
+ .. seealso::
26
+ Source - https://github.com/GNOME/gimp/blob/441631322b/devel-docs/gbr.txt
27
+ """
28
+
29
+ class ColorDepth(Enum):
30
+ grayscale = 1
31
+ rgba = 4
32
+ SEQ_FIELDS = ["len_header", "header"]
33
+ def __init__(self, _io, _parent=None, _root=None):
34
+ self._io = _io
35
+ self._parent = _parent
36
+ self._root = _root if _root else self
37
+ self._debug = collections.defaultdict(dict)
38
+
39
+ def _read(self):
40
+ self._debug['len_header']['start'] = self._io.pos()
41
+ self.len_header = self._io.read_u4be()
42
+ self._debug['len_header']['end'] = self._io.pos()
43
+ self._debug['header']['start'] = self._io.pos()
44
+ self._raw_header = self._io.read_bytes((self.len_header - 4))
45
+ _io__raw_header = KaitaiStream(BytesIO(self._raw_header))
46
+ self.header = GimpBrush.Header(_io__raw_header, self, self._root)
47
+ self.header._read()
48
+ self._debug['header']['end'] = self._io.pos()
49
+
50
+ class Header(KaitaiStruct):
51
+ SEQ_FIELDS = ["version", "width", "height", "bytes_per_pixel", "magic", "spacing", "brush_name"]
52
+ def __init__(self, _io, _parent=None, _root=None):
53
+ self._io = _io
54
+ self._parent = _parent
55
+ self._root = _root if _root else self
56
+ self._debug = collections.defaultdict(dict)
57
+
58
+ def _read(self):
59
+ self._debug['version']['start'] = self._io.pos()
60
+ self.version = self._io.read_u4be()
61
+ self._debug['version']['end'] = self._io.pos()
62
+ if not self.version == 2:
63
+ raise kaitaistruct.ValidationNotEqualError(2, self.version, self._io, u"/types/header/seq/0")
64
+ self._debug['width']['start'] = self._io.pos()
65
+ self.width = self._io.read_u4be()
66
+ self._debug['width']['end'] = self._io.pos()
67
+ if not self.width >= 1:
68
+ raise kaitaistruct.ValidationLessThanError(1, self.width, self._io, u"/types/header/seq/1")
69
+ if not self.width <= 10000:
70
+ raise kaitaistruct.ValidationGreaterThanError(10000, self.width, self._io, u"/types/header/seq/1")
71
+ self._debug['height']['start'] = self._io.pos()
72
+ self.height = self._io.read_u4be()
73
+ self._debug['height']['end'] = self._io.pos()
74
+ if not self.height >= 1:
75
+ raise kaitaistruct.ValidationLessThanError(1, self.height, self._io, u"/types/header/seq/2")
76
+ if not self.height <= 10000:
77
+ raise kaitaistruct.ValidationGreaterThanError(10000, self.height, self._io, u"/types/header/seq/2")
78
+ self._debug['bytes_per_pixel']['start'] = self._io.pos()
79
+ self.bytes_per_pixel = KaitaiStream.resolve_enum(GimpBrush.ColorDepth, self._io.read_u4be())
80
+ self._debug['bytes_per_pixel']['end'] = self._io.pos()
81
+ self._debug['magic']['start'] = self._io.pos()
82
+ self.magic = self._io.read_bytes(4)
83
+ self._debug['magic']['end'] = self._io.pos()
84
+ if not self.magic == b"\x47\x49\x4D\x50":
85
+ raise kaitaistruct.ValidationNotEqualError(b"\x47\x49\x4D\x50", self.magic, self._io, u"/types/header/seq/4")
86
+ self._debug['spacing']['start'] = self._io.pos()
87
+ self.spacing = self._io.read_u4be()
88
+ self._debug['spacing']['end'] = self._io.pos()
89
+ self._debug['brush_name']['start'] = self._io.pos()
90
+ self.brush_name = (KaitaiStream.bytes_terminate(self._io.read_bytes_full(), 0, False)).decode(u"UTF-8")
91
+ self._debug['brush_name']['end'] = self._io.pos()
92
+
93
+
94
+ class Bitmap(KaitaiStruct):
95
+ SEQ_FIELDS = ["rows"]
96
+ def __init__(self, _io, _parent=None, _root=None):
97
+ self._io = _io
98
+ self._parent = _parent
99
+ self._root = _root if _root else self
100
+ self._debug = collections.defaultdict(dict)
101
+
102
+ def _read(self):
103
+ self._debug['rows']['start'] = self._io.pos()
104
+ self.rows = [None] * (self._root.header.height)
105
+ for i in range(self._root.header.height):
106
+ if not 'arr' in self._debug['rows']:
107
+ self._debug['rows']['arr'] = []
108
+ self._debug['rows']['arr'].append({'start': self._io.pos()})
109
+ _t_rows = GimpBrush.Row(self._io, self, self._root)
110
+ _t_rows._read()
111
+ self.rows[i] = _t_rows
112
+ self._debug['rows']['arr'][i]['end'] = self._io.pos()
113
+
114
+ self._debug['rows']['end'] = self._io.pos()
115
+
116
+
117
+ class Row(KaitaiStruct):
118
+ SEQ_FIELDS = ["pixels"]
119
+ def __init__(self, _io, _parent=None, _root=None):
120
+ self._io = _io
121
+ self._parent = _parent
122
+ self._root = _root if _root else self
123
+ self._debug = collections.defaultdict(dict)
124
+
125
+ def _read(self):
126
+ self._debug['pixels']['start'] = self._io.pos()
127
+ self.pixels = [None] * (self._root.header.width)
128
+ for i in range(self._root.header.width):
129
+ if not 'arr' in self._debug['pixels']:
130
+ self._debug['pixels']['arr'] = []
131
+ self._debug['pixels']['arr'].append({'start': self._io.pos()})
132
+ _on = self._root.header.bytes_per_pixel
133
+ if _on == GimpBrush.ColorDepth.grayscale:
134
+ if not 'arr' in self._debug['pixels']:
135
+ self._debug['pixels']['arr'] = []
136
+ self._debug['pixels']['arr'].append({'start': self._io.pos()})
137
+ _t_pixels = GimpBrush.Row.PixelGray(self._io, self, self._root)
138
+ _t_pixels._read()
139
+ self.pixels[i] = _t_pixels
140
+ self._debug['pixels']['arr'][i]['end'] = self._io.pos()
141
+ elif _on == GimpBrush.ColorDepth.rgba:
142
+ if not 'arr' in self._debug['pixels']:
143
+ self._debug['pixels']['arr'] = []
144
+ self._debug['pixels']['arr'].append({'start': self._io.pos()})
145
+ _t_pixels = GimpBrush.Row.PixelRgba(self._io, self, self._root)
146
+ _t_pixels._read()
147
+ self.pixels[i] = _t_pixels
148
+ self._debug['pixels']['arr'][i]['end'] = self._io.pos()
149
+ self._debug['pixels']['arr'][i]['end'] = self._io.pos()
150
+
151
+ self._debug['pixels']['end'] = self._io.pos()
152
+
153
+ class PixelGray(KaitaiStruct):
154
+ SEQ_FIELDS = ["gray"]
155
+ def __init__(self, _io, _parent=None, _root=None):
156
+ self._io = _io
157
+ self._parent = _parent
158
+ self._root = _root if _root else self
159
+ self._debug = collections.defaultdict(dict)
160
+
161
+ def _read(self):
162
+ self._debug['gray']['start'] = self._io.pos()
163
+ self.gray = self._io.read_u1()
164
+ self._debug['gray']['end'] = self._io.pos()
165
+
166
+ @property
167
+ def red(self):
168
+ if hasattr(self, '_m_red'):
169
+ return self._m_red if hasattr(self, '_m_red') else None
170
+
171
+ self._m_red = 0
172
+ return self._m_red if hasattr(self, '_m_red') else None
173
+
174
+ @property
175
+ def green(self):
176
+ if hasattr(self, '_m_green'):
177
+ return self._m_green if hasattr(self, '_m_green') else None
178
+
179
+ self._m_green = 0
180
+ return self._m_green if hasattr(self, '_m_green') else None
181
+
182
+ @property
183
+ def blue(self):
184
+ if hasattr(self, '_m_blue'):
185
+ return self._m_blue if hasattr(self, '_m_blue') else None
186
+
187
+ self._m_blue = 0
188
+ return self._m_blue if hasattr(self, '_m_blue') else None
189
+
190
+ @property
191
+ def alpha(self):
192
+ if hasattr(self, '_m_alpha'):
193
+ return self._m_alpha if hasattr(self, '_m_alpha') else None
194
+
195
+ self._m_alpha = self.gray
196
+ return self._m_alpha if hasattr(self, '_m_alpha') else None
197
+
198
+
199
+ class PixelRgba(KaitaiStruct):
200
+ SEQ_FIELDS = ["red", "green", "blue", "alpha"]
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['red']['start'] = self._io.pos()
209
+ self.red = self._io.read_u1()
210
+ self._debug['red']['end'] = self._io.pos()
211
+ self._debug['green']['start'] = self._io.pos()
212
+ self.green = self._io.read_u1()
213
+ self._debug['green']['end'] = self._io.pos()
214
+ self._debug['blue']['start'] = self._io.pos()
215
+ self.blue = self._io.read_u1()
216
+ self._debug['blue']['end'] = self._io.pos()
217
+ self._debug['alpha']['start'] = self._io.pos()
218
+ self.alpha = self._io.read_u1()
219
+ self._debug['alpha']['end'] = self._io.pos()
220
+
221
+
222
+
223
+ @property
224
+ def len_body(self):
225
+ if hasattr(self, '_m_len_body'):
226
+ return self._m_len_body if hasattr(self, '_m_len_body') else None
227
+
228
+ self._m_len_body = ((self.header.width * self.header.height) * self.header.bytes_per_pixel.value)
229
+ return self._m_len_body if hasattr(self, '_m_len_body') else None
230
+
231
+ @property
232
+ def body(self):
233
+ if hasattr(self, '_m_body'):
234
+ return self._m_body if hasattr(self, '_m_body') else None
235
+
236
+ _pos = self._io.pos()
237
+ self._io.seek(self.len_header)
238
+ self._debug['_m_body']['start'] = self._io.pos()
239
+ self._m_body = self._io.read_bytes(self.len_body)
240
+ self._debug['_m_body']['end'] = self._io.pos()
241
+ self._io.seek(_pos)
242
+ return self._m_body if hasattr(self, '_m_body') else None
243
+
244
+
@@ -0,0 +1,114 @@
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 GlibcUtmp(KaitaiStruct):
14
+
15
+ class EntryType(Enum):
16
+ empty = 0
17
+ run_lvl = 1
18
+ boot_time = 2
19
+ new_time = 3
20
+ old_time = 4
21
+ init_process = 5
22
+ login_process = 6
23
+ user_process = 7
24
+ dead_process = 8
25
+ accounting = 9
26
+ SEQ_FIELDS = ["records"]
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['records']['start'] = self._io.pos()
35
+ self._raw_records = []
36
+ self.records = []
37
+ i = 0
38
+ while not self._io.is_eof():
39
+ if not 'arr' in self._debug['records']:
40
+ self._debug['records']['arr'] = []
41
+ self._debug['records']['arr'].append({'start': self._io.pos()})
42
+ self._raw_records.append(self._io.read_bytes(384))
43
+ _io__raw_records = KaitaiStream(BytesIO(self._raw_records[-1]))
44
+ _t_records = GlibcUtmp.Record(_io__raw_records, self, self._root)
45
+ _t_records._read()
46
+ self.records.append(_t_records)
47
+ self._debug['records']['arr'][len(self.records) - 1]['end'] = self._io.pos()
48
+ i += 1
49
+
50
+ self._debug['records']['end'] = self._io.pos()
51
+
52
+ class Record(KaitaiStruct):
53
+ SEQ_FIELDS = ["ut_type", "pid", "line", "id", "user", "host", "exit", "session", "tv", "addr_v6", "reserved"]
54
+ def __init__(self, _io, _parent=None, _root=None):
55
+ self._io = _io
56
+ self._parent = _parent
57
+ self._root = _root if _root else self
58
+ self._debug = collections.defaultdict(dict)
59
+
60
+ def _read(self):
61
+ self._debug['ut_type']['start'] = self._io.pos()
62
+ self.ut_type = KaitaiStream.resolve_enum(GlibcUtmp.EntryType, self._io.read_s4le())
63
+ self._debug['ut_type']['end'] = self._io.pos()
64
+ self._debug['pid']['start'] = self._io.pos()
65
+ self.pid = self._io.read_u4le()
66
+ self._debug['pid']['end'] = self._io.pos()
67
+ self._debug['line']['start'] = self._io.pos()
68
+ self.line = (self._io.read_bytes(32)).decode(u"UTF-8")
69
+ self._debug['line']['end'] = self._io.pos()
70
+ self._debug['id']['start'] = self._io.pos()
71
+ self.id = (self._io.read_bytes(4)).decode(u"UTF-8")
72
+ self._debug['id']['end'] = self._io.pos()
73
+ self._debug['user']['start'] = self._io.pos()
74
+ self.user = (self._io.read_bytes(32)).decode(u"UTF-8")
75
+ self._debug['user']['end'] = self._io.pos()
76
+ self._debug['host']['start'] = self._io.pos()
77
+ self.host = (self._io.read_bytes(256)).decode(u"UTF-8")
78
+ self._debug['host']['end'] = self._io.pos()
79
+ self._debug['exit']['start'] = self._io.pos()
80
+ self.exit = self._io.read_u4le()
81
+ self._debug['exit']['end'] = self._io.pos()
82
+ self._debug['session']['start'] = self._io.pos()
83
+ self.session = self._io.read_s4le()
84
+ self._debug['session']['end'] = self._io.pos()
85
+ self._debug['tv']['start'] = self._io.pos()
86
+ self.tv = GlibcUtmp.Timeval(self._io, self, self._root)
87
+ self.tv._read()
88
+ self._debug['tv']['end'] = self._io.pos()
89
+ self._debug['addr_v6']['start'] = self._io.pos()
90
+ self.addr_v6 = self._io.read_bytes(16)
91
+ self._debug['addr_v6']['end'] = self._io.pos()
92
+ self._debug['reserved']['start'] = self._io.pos()
93
+ self.reserved = self._io.read_bytes(20)
94
+ self._debug['reserved']['end'] = self._io.pos()
95
+
96
+
97
+ class Timeval(KaitaiStruct):
98
+ SEQ_FIELDS = ["sec", "usec"]
99
+ def __init__(self, _io, _parent=None, _root=None):
100
+ self._io = _io
101
+ self._parent = _parent
102
+ self._root = _root if _root else self
103
+ self._debug = collections.defaultdict(dict)
104
+
105
+ def _read(self):
106
+ self._debug['sec']['start'] = self._io.pos()
107
+ self.sec = self._io.read_s4le()
108
+ self._debug['sec']['end'] = self._io.pos()
109
+ self._debug['usec']['start'] = self._io.pos()
110
+ self.usec = self._io.read_s4le()
111
+ self._debug['usec']['end'] = self._io.pos()
112
+
113
+
114
+
@@ -0,0 +1,132 @@
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 GltfBinary(KaitaiStruct):
14
+ """glTF is a format for distribution of 3D models optimized for being used in software
15
+
16
+ .. seealso::
17
+ Source - https://github.com/KhronosGroup/glTF/tree/2354846/specification/2.0#binary-gltf-layout
18
+ """
19
+
20
+ class ChunkType(Enum):
21
+ bin = 5130562
22
+ json = 1313821514
23
+ SEQ_FIELDS = ["header", "chunks"]
24
+ def __init__(self, _io, _parent=None, _root=None):
25
+ self._io = _io
26
+ self._parent = _parent
27
+ self._root = _root if _root else self
28
+ self._debug = collections.defaultdict(dict)
29
+
30
+ def _read(self):
31
+ self._debug['header']['start'] = self._io.pos()
32
+ self.header = GltfBinary.Header(self._io, self, self._root)
33
+ self.header._read()
34
+ self._debug['header']['end'] = self._io.pos()
35
+ self._debug['chunks']['start'] = self._io.pos()
36
+ self.chunks = []
37
+ i = 0
38
+ while not self._io.is_eof():
39
+ if not 'arr' in self._debug['chunks']:
40
+ self._debug['chunks']['arr'] = []
41
+ self._debug['chunks']['arr'].append({'start': self._io.pos()})
42
+ _t_chunks = GltfBinary.Chunk(self._io, self, self._root)
43
+ _t_chunks._read()
44
+ self.chunks.append(_t_chunks)
45
+ self._debug['chunks']['arr'][len(self.chunks) - 1]['end'] = self._io.pos()
46
+ i += 1
47
+
48
+ self._debug['chunks']['end'] = self._io.pos()
49
+
50
+ class Header(KaitaiStruct):
51
+ SEQ_FIELDS = ["magic", "version", "length"]
52
+ def __init__(self, _io, _parent=None, _root=None):
53
+ self._io = _io
54
+ self._parent = _parent
55
+ self._root = _root if _root else self
56
+ self._debug = collections.defaultdict(dict)
57
+
58
+ def _read(self):
59
+ self._debug['magic']['start'] = self._io.pos()
60
+ self.magic = self._io.read_bytes(4)
61
+ self._debug['magic']['end'] = self._io.pos()
62
+ if not self.magic == b"\x67\x6C\x54\x46":
63
+ raise kaitaistruct.ValidationNotEqualError(b"\x67\x6C\x54\x46", self.magic, self._io, u"/types/header/seq/0")
64
+ self._debug['version']['start'] = self._io.pos()
65
+ self.version = self._io.read_u4le()
66
+ self._debug['version']['end'] = self._io.pos()
67
+ self._debug['length']['start'] = self._io.pos()
68
+ self.length = self._io.read_u4le()
69
+ self._debug['length']['end'] = self._io.pos()
70
+
71
+
72
+ class Chunk(KaitaiStruct):
73
+ SEQ_FIELDS = ["len_data", "type", "data"]
74
+ def __init__(self, _io, _parent=None, _root=None):
75
+ self._io = _io
76
+ self._parent = _parent
77
+ self._root = _root if _root else self
78
+ self._debug = collections.defaultdict(dict)
79
+
80
+ def _read(self):
81
+ self._debug['len_data']['start'] = self._io.pos()
82
+ self.len_data = self._io.read_u4le()
83
+ self._debug['len_data']['end'] = self._io.pos()
84
+ self._debug['type']['start'] = self._io.pos()
85
+ self.type = KaitaiStream.resolve_enum(GltfBinary.ChunkType, self._io.read_u4le())
86
+ self._debug['type']['end'] = self._io.pos()
87
+ self._debug['data']['start'] = self._io.pos()
88
+ _on = self.type
89
+ if _on == GltfBinary.ChunkType.json:
90
+ self._raw_data = self._io.read_bytes(self.len_data)
91
+ _io__raw_data = KaitaiStream(BytesIO(self._raw_data))
92
+ self.data = GltfBinary.Json(_io__raw_data, self, self._root)
93
+ self.data._read()
94
+ elif _on == GltfBinary.ChunkType.bin:
95
+ self._raw_data = self._io.read_bytes(self.len_data)
96
+ _io__raw_data = KaitaiStream(BytesIO(self._raw_data))
97
+ self.data = GltfBinary.Bin(_io__raw_data, self, self._root)
98
+ self.data._read()
99
+ else:
100
+ self.data = self._io.read_bytes(self.len_data)
101
+ self._debug['data']['end'] = self._io.pos()
102
+
103
+
104
+ class Json(KaitaiStruct):
105
+ SEQ_FIELDS = ["data"]
106
+ def __init__(self, _io, _parent=None, _root=None):
107
+ self._io = _io
108
+ self._parent = _parent
109
+ self._root = _root if _root else self
110
+ self._debug = collections.defaultdict(dict)
111
+
112
+ def _read(self):
113
+ self._debug['data']['start'] = self._io.pos()
114
+ self.data = (self._io.read_bytes_full()).decode(u"UTF-8")
115
+ self._debug['data']['end'] = self._io.pos()
116
+
117
+
118
+ class Bin(KaitaiStruct):
119
+ SEQ_FIELDS = ["data"]
120
+ def __init__(self, _io, _parent=None, _root=None):
121
+ self._io = _io
122
+ self._parent = _parent
123
+ self._root = _root if _root else self
124
+ self._debug = collections.defaultdict(dict)
125
+
126
+ def _read(self):
127
+ self._debug['data']['start'] = self._io.pos()
128
+ self.data = self._io.read_bytes_full()
129
+ self._debug['data']['end'] = self._io.pos()
130
+
131
+
132
+
@@ -0,0 +1,151 @@
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_le
14
+ class GoogleProtobuf(KaitaiStruct):
15
+ """Google Protocol Buffers (AKA protobuf) is a popular data
16
+ serialization scheme used for communication protocols, data storage,
17
+ etc. There are implementations are available for almost every
18
+ popular language. The focus points of this scheme are brevity (data
19
+ is encoded in a very size-efficient manner) and extensibility (one
20
+ can add keys to the structure, while keeping it readable in previous
21
+ version of software).
22
+
23
+ Protobuf uses semi-self-describing encoding scheme for its
24
+ messages. It means that it is possible to parse overall structure of
25
+ the message (skipping over fields one can't understand), but to
26
+ fully understand the message, one needs a protocol definition file
27
+ (`.proto`). To be specific:
28
+
29
+ * "Keys" in key-value pairs provided in the message are identified
30
+ only with an integer "field tag". `.proto` file provides info on
31
+ which symbolic field names these field tags map to.
32
+ * "Keys" also provide something called "wire type". It's not a data
33
+ type in its common sense (i.e. you can't, for example, distinguish
34
+ `sint32` vs `uint32` vs some enum, or `string` from `bytes`), but
35
+ it's enough information to determine how many bytes to
36
+ parse. Interpretation of the value should be done according to the
37
+ type specified in `.proto` file.
38
+ * There's no direct information on which fields are optional /
39
+ required, which fields may be repeated or constitute a map, what
40
+ restrictions are placed on fields usage in a single message, what
41
+ are the fields' default values, etc, etc.
42
+
43
+ .. seealso::
44
+ Source - https://protobuf.dev/programming-guides/encoding/
45
+ """
46
+ SEQ_FIELDS = ["pairs"]
47
+ def __init__(self, _io, _parent=None, _root=None):
48
+ self._io = _io
49
+ self._parent = _parent
50
+ self._root = _root if _root else self
51
+ self._debug = collections.defaultdict(dict)
52
+
53
+ def _read(self):
54
+ self._debug['pairs']['start'] = self._io.pos()
55
+ self.pairs = []
56
+ i = 0
57
+ while not self._io.is_eof():
58
+ if not 'arr' in self._debug['pairs']:
59
+ self._debug['pairs']['arr'] = []
60
+ self._debug['pairs']['arr'].append({'start': self._io.pos()})
61
+ _t_pairs = GoogleProtobuf.Pair(self._io, self, self._root)
62
+ _t_pairs._read()
63
+ self.pairs.append(_t_pairs)
64
+ self._debug['pairs']['arr'][len(self.pairs) - 1]['end'] = self._io.pos()
65
+ i += 1
66
+
67
+ self._debug['pairs']['end'] = self._io.pos()
68
+
69
+ class Pair(KaitaiStruct):
70
+ """Key-value pair."""
71
+
72
+ class WireTypes(Enum):
73
+ varint = 0
74
+ bit_64 = 1
75
+ len_delimited = 2
76
+ group_start = 3
77
+ group_end = 4
78
+ bit_32 = 5
79
+ SEQ_FIELDS = ["key", "value"]
80
+ def __init__(self, _io, _parent=None, _root=None):
81
+ self._io = _io
82
+ self._parent = _parent
83
+ self._root = _root if _root else self
84
+ self._debug = collections.defaultdict(dict)
85
+
86
+ def _read(self):
87
+ self._debug['key']['start'] = self._io.pos()
88
+ self.key = vlq_base128_le.VlqBase128Le(self._io)
89
+ self.key._read()
90
+ self._debug['key']['end'] = self._io.pos()
91
+ self._debug['value']['start'] = self._io.pos()
92
+ _on = self.wire_type
93
+ if _on == GoogleProtobuf.Pair.WireTypes.varint:
94
+ self.value = vlq_base128_le.VlqBase128Le(self._io)
95
+ self.value._read()
96
+ elif _on == GoogleProtobuf.Pair.WireTypes.len_delimited:
97
+ self.value = GoogleProtobuf.DelimitedBytes(self._io, self, self._root)
98
+ self.value._read()
99
+ elif _on == GoogleProtobuf.Pair.WireTypes.bit_64:
100
+ self.value = self._io.read_u8le()
101
+ elif _on == GoogleProtobuf.Pair.WireTypes.bit_32:
102
+ self.value = self._io.read_u4le()
103
+ self._debug['value']['end'] = self._io.pos()
104
+
105
+ @property
106
+ def wire_type(self):
107
+ """"Wire type" is a part of the "key" that carries enough
108
+ information to parse value from the wire, i.e. read correct
109
+ amount of bytes, but there's not enough informaton to
110
+ interprete in unambiguously. For example, one can't clearly
111
+ distinguish 64-bit fixed-sized integers from 64-bit floats,
112
+ signed zigzag-encoded varints from regular unsigned varints,
113
+ arbitrary bytes from UTF-8 encoded strings, etc.
114
+ """
115
+ if hasattr(self, '_m_wire_type'):
116
+ return self._m_wire_type if hasattr(self, '_m_wire_type') else None
117
+
118
+ self._m_wire_type = KaitaiStream.resolve_enum(GoogleProtobuf.Pair.WireTypes, (self.key.value & 7))
119
+ return self._m_wire_type if hasattr(self, '_m_wire_type') else None
120
+
121
+ @property
122
+ def field_tag(self):
123
+ """Identifies a field of protocol. One can look up symbolic
124
+ field name in a `.proto` file by this field tag.
125
+ """
126
+ if hasattr(self, '_m_field_tag'):
127
+ return self._m_field_tag if hasattr(self, '_m_field_tag') else None
128
+
129
+ self._m_field_tag = (self.key.value >> 3)
130
+ return self._m_field_tag if hasattr(self, '_m_field_tag') else None
131
+
132
+
133
+ class DelimitedBytes(KaitaiStruct):
134
+ SEQ_FIELDS = ["len", "body"]
135
+ def __init__(self, _io, _parent=None, _root=None):
136
+ self._io = _io
137
+ self._parent = _parent
138
+ self._root = _root if _root else self
139
+ self._debug = collections.defaultdict(dict)
140
+
141
+ def _read(self):
142
+ self._debug['len']['start'] = self._io.pos()
143
+ self.len = vlq_base128_le.VlqBase128Le(self._io)
144
+ self.len._read()
145
+ self._debug['len']['end'] = self._io.pos()
146
+ self._debug['body']['start'] = self._io.pos()
147
+ self.body = self._io.read_bytes(self.len.value)
148
+ self._debug['body']['end'] = self._io.pos()
149
+
150
+
151
+