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,964 @@
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 Rpm(KaitaiStruct):
14
+ """This parser is for the RPM version 3 file format which is the current version
15
+ of the file format used by RPM 2.1 and later (including RPM version 4.x, which
16
+ is the current version of the RPM tool). There are historical versions of the
17
+ RPM file format, as well as a currently abandoned fork (rpm5). These formats
18
+ are not covered by this specification.
19
+
20
+ .. seealso::
21
+ Source - https://github.com/rpm-software-management/rpm/blob/afad3167/docs/manual/format.md
22
+
23
+
24
+ .. seealso::
25
+ Source - https://github.com/rpm-software-management/rpm/blob/afad3167/docs/manual/tags.md
26
+
27
+
28
+ .. seealso::
29
+ Source - https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/pkgformat.html
30
+
31
+
32
+ .. seealso::
33
+ Source - http://ftp.rpm.org/max-rpm/
34
+ """
35
+
36
+ class OperatingSystems(Enum):
37
+ linux = 1
38
+ irix = 2
39
+ no_os = 255
40
+
41
+ class SignatureTags(Enum):
42
+ signatures = 62
43
+ header_immutable = 63
44
+ i18n_table = 100
45
+ bad_sha1_1_obsolete = 264
46
+ bad_sha1_2_obsolete = 265
47
+ dsa = 267
48
+ rsa = 268
49
+ sha1 = 269
50
+ long_size = 270
51
+ long_archive_size = 271
52
+ sha256 = 273
53
+ file_signatures = 274
54
+ file_signature_length = 275
55
+ verity_signatures = 276
56
+ verity_signature_algo = 277
57
+ size = 1000
58
+ le_md5_1_obsolete = 1001
59
+ pgp = 1002
60
+ le_md5_2_obsolete = 1003
61
+ md5 = 1004
62
+ gpg = 1005
63
+ pgp5_obsolete = 1006
64
+ payload_size = 1007
65
+ reserved_space = 1008
66
+
67
+ class RecordTypes(Enum):
68
+ not_implemented = 0
69
+ char = 1
70
+ uint8 = 2
71
+ uint16 = 3
72
+ uint32 = 4
73
+ uint64 = 5
74
+ string = 6
75
+ bin = 7
76
+ string_array = 8
77
+ i18n_string = 9
78
+
79
+ class HeaderTags(Enum):
80
+ signatures = 62
81
+ header_immutable = 63
82
+ i18n_table = 100
83
+ name = 1000
84
+ version = 1001
85
+ release = 1002
86
+ epoch = 1003
87
+ summary = 1004
88
+ description = 1005
89
+ build_time = 1006
90
+ build_host = 1007
91
+ install_time = 1008
92
+ size = 1009
93
+ distribution = 1010
94
+ vendor = 1011
95
+ gif_obsolete = 1012
96
+ xpm_obsolete = 1013
97
+ license = 1014
98
+ packager = 1015
99
+ group = 1016
100
+ changelog_internal = 1017
101
+ source = 1018
102
+ patch = 1019
103
+ url = 1020
104
+ os = 1021
105
+ arch = 1022
106
+ pre_install_scriptlet = 1023
107
+ post_install_scriptlet = 1024
108
+ pre_uninstall_scriptlet = 1025
109
+ post_uninstall_scriptlet = 1026
110
+ old_file_names_obsolete = 1027
111
+ file_sizes = 1028
112
+ file_states = 1029
113
+ file_modes = 1030
114
+ file_uids_internal = 1031
115
+ file_gids_internal = 1032
116
+ device_number = 1033
117
+ mtimes = 1034
118
+ file_digests = 1035
119
+ link_tos = 1036
120
+ file_flags = 1037
121
+ root_internal = 1038
122
+ file_owner = 1039
123
+ file_group = 1040
124
+ exclude_internal = 1041
125
+ exclusive_internal = 1042
126
+ icon_obsolete = 1043
127
+ source_rpm = 1044
128
+ file_verify_flags = 1045
129
+ archive_size = 1046
130
+ provide_name = 1047
131
+ require_flags = 1048
132
+ require_name = 1049
133
+ require_version = 1050
134
+ no_source = 1051
135
+ no_patch = 1052
136
+ conflict_flags = 1053
137
+ conflict_name = 1054
138
+ conflict_version = 1055
139
+ default_prefix_internal = 1056
140
+ build_root_internal = 1057
141
+ install_prefix_internal = 1058
142
+ exclude_arch = 1059
143
+ exclude_os = 1060
144
+ exclusive_arch = 1061
145
+ exclusive_os = 1062
146
+ autoreqprov_internal = 1063
147
+ rpm_version = 1064
148
+ trigger_scripts = 1065
149
+ trigger_name = 1066
150
+ trigger_version = 1067
151
+ trigger_flags = 1068
152
+ trigger_index = 1069
153
+ verify_script = 1079
154
+ changelog_time = 1080
155
+ changelog_name = 1081
156
+ changelog_text = 1082
157
+ broken_md5_internal = 1083
158
+ prereq_internal = 1084
159
+ pre_install_interpreter = 1085
160
+ post_install_interpreter = 1086
161
+ pre_uninstall_interpreter = 1087
162
+ post_uninstall_interpreter = 1088
163
+ build_archs = 1089
164
+ obsolete_name = 1090
165
+ verify_script_prog = 1091
166
+ trigger_script_prog = 1092
167
+ doc_dir_internal = 1093
168
+ cookie = 1094
169
+ file_devices = 1095
170
+ file_inodes = 1096
171
+ file_langs = 1097
172
+ prefixes = 1098
173
+ install_prefixes = 1099
174
+ trigger_install_internal = 1100
175
+ trigger_uninstall_internal = 1101
176
+ trigger_post_uninstall_internal = 1102
177
+ autoreq_internal = 1103
178
+ autoprov_internal = 1104
179
+ capability_internal = 1105
180
+ source_package = 1106
181
+ old_orig_filenames_internal = 1107
182
+ build_prereq_internal = 1108
183
+ build_requires_internal = 1109
184
+ build_conflicts_internal = 1110
185
+ build_macros_internal = 1111
186
+ provide_flags = 1112
187
+ provide_version = 1113
188
+ obsolete_flags = 1114
189
+ obsolete_version = 1115
190
+ dir_indexes = 1116
191
+ base_names = 1117
192
+ dir_names = 1118
193
+ orig_dir_indexes = 1119
194
+ orig_base_names = 1120
195
+ orig_dir_names = 1121
196
+ opt_flags = 1122
197
+ dist_url = 1123
198
+ payload_format = 1124
199
+ payload_compressor = 1125
200
+ payload_flags = 1126
201
+ install_color = 1127
202
+ install_tid = 1128
203
+ remove_tid_obsolete = 1129
204
+ sha1_rhn_internal = 1130
205
+ rhn_platform_internal = 1131
206
+ platform = 1132
207
+ patches_name_obsolete = 1133
208
+ patches_flags_obsolete = 1134
209
+ patches_version_obsolete = 1135
210
+ cache_ctime_internal = 1136
211
+ cache_pkg_path_internal = 1137
212
+ cache_pkg_size_internal = 1138
213
+ cache_pkg_mtime_internal = 1139
214
+ file_colors = 1140
215
+ file_class = 1141
216
+ class_dict = 1142
217
+ file_depends_idx = 1143
218
+ file_depends_num = 1144
219
+ depends_dict = 1145
220
+ source_pkgid = 1146
221
+ file_contexts_obsolete = 1147
222
+ fs_contexts_obsolete = 1148
223
+ re_contexts_obsolete = 1149
224
+ policies = 1150
225
+ pre_trans = 1151
226
+ post_trans = 1152
227
+ pre_trans_prog = 1153
228
+ post_trans_prog = 1154
229
+ dist_tag = 1155
230
+ old_suggests_name_obsolete = 1156
231
+ old_suggests_version_obsolete = 1157
232
+ old_suggests_flags_obsolete = 1158
233
+ old_enhances_name_obsolete = 1159
234
+ old_enhances_version_obsolete = 1160
235
+ old_enhances_flags_obsolete = 1161
236
+ priority_unimplemented = 1162
237
+ cvsid_unimplemented = 1163
238
+ blink_pkgid_unimplemented = 1164
239
+ blink_hdrid_unimplemented = 1165
240
+ blink_nevra_unimplemented = 1166
241
+ flink_pkgid_unimplemented = 1167
242
+ flink_hdrid_unimplemented = 1168
243
+ flink_nevra_unimplemented = 1169
244
+ package_origin_unimplemented = 1170
245
+ trigger_pre_install_internal = 1171
246
+ build_suggests_unimplemented = 1172
247
+ build_enhances_unimplemented = 1173
248
+ script_states_unimplemented = 1174
249
+ script_metrics_unimplemented = 1175
250
+ build_cpu_clock_unimplemented = 1176
251
+ file_digest_algos_unimplemented = 1177
252
+ variants_unimplemented = 1178
253
+ xmajor_unimplemented = 1179
254
+ xminor_unimplemented = 1180
255
+ repo_tag_unimplemented = 1181
256
+ keywords_unimplemented = 1182
257
+ build_platforms_unimplemented = 1183
258
+ package_color_unimplemented = 1184
259
+ package_pref_color_unimplemented = 1185
260
+ xattrs_dict_unimplemented = 1186
261
+ filex_attrsx_unimplemented = 1187
262
+ dep_attrs_dict_unimplemented = 1188
263
+ conflict_attrsx_unimplemented = 1189
264
+ obsolete_attrsx_unimplemented = 1190
265
+ provide_attrsx_unimplemented = 1191
266
+ require_attrsx_unimplemented = 1192
267
+ build_provides_unimplemented = 1193
268
+ build_obsoletes_unimplemented = 1194
269
+ db_instance = 1195
270
+ nvra = 1196
271
+ file_names = 5000
272
+ file_provide = 5001
273
+ file_require = 5002
274
+ fs_names_unimplemented = 5003
275
+ fs_sizes_unimplemented = 5004
276
+ trigger_conds = 5005
277
+ trigger_type = 5006
278
+ orig_file_names = 5007
279
+ long_file_sizes = 5008
280
+ long_size = 5009
281
+ file_caps = 5010
282
+ file_digest_algo = 5011
283
+ bug_url = 5012
284
+ evr = 5013
285
+ nvr = 5014
286
+ nevr = 5015
287
+ nevra = 5016
288
+ header_color = 5017
289
+ verbose = 5018
290
+ epoch_num = 5019
291
+ pre_install_flags = 5020
292
+ post_install_flags = 5021
293
+ pre_uninstall_flags = 5022
294
+ post_uninstall_flags = 5023
295
+ pre_trans_flags = 5024
296
+ post_trans_flags = 5025
297
+ verify_script_flags = 5026
298
+ trigger_script_flags = 5027
299
+ collections_unimplemented = 5029
300
+ policy_names = 5030
301
+ policy_types = 5031
302
+ policy_types_indexes = 5032
303
+ policy_flags = 5033
304
+ vcs = 5034
305
+ order_name = 5035
306
+ order_version = 5036
307
+ order_flags = 5037
308
+ mssf_manifest_unimplemented = 5038
309
+ mssf_domain_unimplemented = 5039
310
+ inst_file_names = 5040
311
+ require_nevrs = 5041
312
+ provide_nevrs = 5042
313
+ obsolete_nevrs = 5043
314
+ conflict_nevrs = 5044
315
+ file_nlinks = 5045
316
+ recommend_name = 5046
317
+ recommend_version = 5047
318
+ recommend_flags = 5048
319
+ suggest_name = 5049
320
+ suggest_version = 5050
321
+ suggest_flags = 5051
322
+ supplement_name = 5052
323
+ supplement_version = 5053
324
+ supplement_flags = 5054
325
+ enhance_name = 5055
326
+ enhance_version = 5056
327
+ enhance_flags = 5057
328
+ recommend_nevrs = 5058
329
+ suggest_nevrs = 5059
330
+ supplement_nevrs = 5060
331
+ enhance_nevrs = 5061
332
+ encoding = 5062
333
+ file_trigger_install_internal = 5063
334
+ file_trigger_uninstall_internal = 5064
335
+ file_trigger_post_uninstall_internal = 5065
336
+ file_trigger_scripts = 5066
337
+ file_trigger_script_prog = 5067
338
+ file_trigger_script_flags = 5068
339
+ file_trigger_name = 5069
340
+ file_trigger_index = 5070
341
+ file_trigger_version = 5071
342
+ file_trigger_flags = 5072
343
+ trans_file_trigger_install_internal = 5073
344
+ trans_file_trigger_uninstall_internal = 5074
345
+ trans_file_trigger_post_uninstall_internal = 5075
346
+ trans_file_trigger_scripts = 5076
347
+ trans_file_trigger_script_prog = 5077
348
+ trans_file_trigger_script_flags = 5078
349
+ trans_file_trigger_name = 5079
350
+ trans_file_trigger_index = 5080
351
+ trans_file_trigger_version = 5081
352
+ trans_file_trigger_flags = 5082
353
+ remove_path_postfixes_internal = 5083
354
+ file_trigger_priorities = 5084
355
+ trans_file_trigger_priorities = 5085
356
+ file_trigger_conds = 5086
357
+ file_trigger_type = 5087
358
+ trans_file_trigger_conds = 5088
359
+ trans_file_trigger_type = 5089
360
+ file_signatures = 5090
361
+ file_signature_length = 5091
362
+ payload_digest = 5092
363
+ payload_digest_algo = 5093
364
+ auto_installed_unimplemented = 5094
365
+ identity_unimplemented = 5095
366
+ modularity_label = 5096
367
+ payload_digest_alt = 5097
368
+ arch_suffix = 5098
369
+ spec = 5099
370
+ translation_url = 5100
371
+ upstream_releases = 5101
372
+ source_license_internal = 5102
373
+ pre_untrans = 5103
374
+ post_untrans = 5104
375
+ pre_untrans_prog = 5105
376
+ post_untrans_prog = 5106
377
+ pre_untrans_flags = 5107
378
+ post_untrans_flags = 5108
379
+ sys_users = 5109
380
+
381
+ class RpmTypes(Enum):
382
+ binary = 0
383
+ source = 1
384
+
385
+ class Architectures(Enum):
386
+ x86 = 1
387
+ alpha = 2
388
+ sparc = 3
389
+ mips = 4
390
+ ppc = 5
391
+ m68k = 6
392
+ sgi = 7
393
+ rs6000 = 8
394
+ ia64 = 9
395
+ sparc64 = 10
396
+ mips64 = 11
397
+ arm = 12
398
+ m68k_mint = 13
399
+ s390 = 14
400
+ s390x = 15
401
+ ppc64 = 16
402
+ sh = 17
403
+ xtensa = 18
404
+ aarch64 = 19
405
+ mips_r6 = 20
406
+ mips64_r6 = 21
407
+ riscv = 22
408
+ loongarch64 = 23
409
+ no_arch = 255
410
+ SEQ_FIELDS = ["lead", "signature", "signature_padding", "_unnamed3", "header", "_unnamed5", "signature_tags_steps"]
411
+ def __init__(self, _io, _parent=None, _root=None):
412
+ self._io = _io
413
+ self._parent = _parent
414
+ self._root = _root if _root else self
415
+ self._debug = collections.defaultdict(dict)
416
+
417
+ def _read(self):
418
+ self._debug['lead']['start'] = self._io.pos()
419
+ self.lead = Rpm.Lead(self._io, self, self._root)
420
+ self.lead._read()
421
+ self._debug['lead']['end'] = self._io.pos()
422
+ self._debug['signature']['start'] = self._io.pos()
423
+ self.signature = Rpm.Header(True, self._io, self, self._root)
424
+ self.signature._read()
425
+ self._debug['signature']['end'] = self._io.pos()
426
+ self._debug['signature_padding']['start'] = self._io.pos()
427
+ self.signature_padding = self._io.read_bytes((-(self._io.pos()) % 8))
428
+ self._debug['signature_padding']['end'] = self._io.pos()
429
+ if self.ofs_header < 0:
430
+ self._debug['_unnamed3']['start'] = self._io.pos()
431
+ self._unnamed3 = self._io.read_bytes(0)
432
+ self._debug['_unnamed3']['end'] = self._io.pos()
433
+
434
+ self._debug['header']['start'] = self._io.pos()
435
+ self.header = Rpm.Header(False, self._io, self, self._root)
436
+ self.header._read()
437
+ self._debug['header']['end'] = self._io.pos()
438
+ if self.ofs_payload < 0:
439
+ self._debug['_unnamed5']['start'] = self._io.pos()
440
+ self._unnamed5 = self._io.read_bytes(0)
441
+ self._debug['_unnamed5']['end'] = self._io.pos()
442
+
443
+ self._debug['signature_tags_steps']['start'] = self._io.pos()
444
+ self.signature_tags_steps = [None] * (self.signature.header_record.num_index_records)
445
+ for i in range(self.signature.header_record.num_index_records):
446
+ if not 'arr' in self._debug['signature_tags_steps']:
447
+ self._debug['signature_tags_steps']['arr'] = []
448
+ self._debug['signature_tags_steps']['arr'].append({'start': self._io.pos()})
449
+ _t_signature_tags_steps = Rpm.SignatureTagsStep(i, (-1 if i < 1 else self.signature_tags_steps[(i - 1)].size_tag_idx), self._io, self, self._root)
450
+ _t_signature_tags_steps._read()
451
+ self.signature_tags_steps[i] = _t_signature_tags_steps
452
+ self._debug['signature_tags_steps']['arr'][i]['end'] = self._io.pos()
453
+
454
+ self._debug['signature_tags_steps']['end'] = self._io.pos()
455
+
456
+ class RecordTypeStringArray(KaitaiStruct):
457
+ SEQ_FIELDS = ["values"]
458
+ def __init__(self, num_values, _io, _parent=None, _root=None):
459
+ self._io = _io
460
+ self._parent = _parent
461
+ self._root = _root if _root else self
462
+ self.num_values = num_values
463
+ self._debug = collections.defaultdict(dict)
464
+
465
+ def _read(self):
466
+ self._debug['values']['start'] = self._io.pos()
467
+ self.values = [None] * (self.num_values)
468
+ for i in range(self.num_values):
469
+ if not 'arr' in self._debug['values']:
470
+ self._debug['values']['arr'] = []
471
+ self._debug['values']['arr'].append({'start': self._io.pos()})
472
+ self.values[i] = (self._io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
473
+ self._debug['values']['arr'][i]['end'] = self._io.pos()
474
+
475
+ self._debug['values']['end'] = self._io.pos()
476
+
477
+
478
+ class Lead(KaitaiStruct):
479
+ """In 2021, Panu Matilainen (a RPM developer) [described this
480
+ structure](https://github.com/kaitai-io/kaitai_struct_formats/pull/469#discussion_r718288192)
481
+ as follows:
482
+
483
+ > The lead as a structure is 25 years obsolete, the data there is
484
+ > meaningless. Seriously. Except to check for the magic to detect that
485
+ > it's an rpm file in the first place, just ignore everything in it.
486
+ > Literally everything.
487
+
488
+ The fields with `valid` constraints are important, because these are the
489
+ same validations that RPM does (which means that any valid `.rpm` file
490
+ must pass them), but otherwise you should not make decisions based on the
491
+ values given here.
492
+ """
493
+ SEQ_FIELDS = ["magic", "version", "type", "architecture", "package_name", "os", "signature_type", "reserved"]
494
+ def __init__(self, _io, _parent=None, _root=None):
495
+ self._io = _io
496
+ self._parent = _parent
497
+ self._root = _root if _root else self
498
+ self._debug = collections.defaultdict(dict)
499
+
500
+ def _read(self):
501
+ self._debug['magic']['start'] = self._io.pos()
502
+ self.magic = self._io.read_bytes(4)
503
+ self._debug['magic']['end'] = self._io.pos()
504
+ if not self.magic == b"\xED\xAB\xEE\xDB":
505
+ raise kaitaistruct.ValidationNotEqualError(b"\xED\xAB\xEE\xDB", self.magic, self._io, u"/types/lead/seq/0")
506
+ self._debug['version']['start'] = self._io.pos()
507
+ self.version = Rpm.RpmVersion(self._io, self, self._root)
508
+ self.version._read()
509
+ self._debug['version']['end'] = self._io.pos()
510
+ self._debug['type']['start'] = self._io.pos()
511
+ self.type = KaitaiStream.resolve_enum(Rpm.RpmTypes, self._io.read_u2be())
512
+ self._debug['type']['end'] = self._io.pos()
513
+ self._debug['architecture']['start'] = self._io.pos()
514
+ self.architecture = KaitaiStream.resolve_enum(Rpm.Architectures, self._io.read_u2be())
515
+ self._debug['architecture']['end'] = self._io.pos()
516
+ self._debug['package_name']['start'] = self._io.pos()
517
+ self.package_name = (KaitaiStream.bytes_terminate(self._io.read_bytes(66), 0, False)).decode(u"UTF-8")
518
+ self._debug['package_name']['end'] = self._io.pos()
519
+ self._debug['os']['start'] = self._io.pos()
520
+ self.os = KaitaiStream.resolve_enum(Rpm.OperatingSystems, self._io.read_u2be())
521
+ self._debug['os']['end'] = self._io.pos()
522
+ self._debug['signature_type']['start'] = self._io.pos()
523
+ self.signature_type = self._io.read_u2be()
524
+ self._debug['signature_type']['end'] = self._io.pos()
525
+ if not self.signature_type == 5:
526
+ raise kaitaistruct.ValidationNotEqualError(5, self.signature_type, self._io, u"/types/lead/seq/6")
527
+ self._debug['reserved']['start'] = self._io.pos()
528
+ self.reserved = self._io.read_bytes(16)
529
+ self._debug['reserved']['end'] = self._io.pos()
530
+
531
+
532
+ class RecordTypeString(KaitaiStruct):
533
+ SEQ_FIELDS = ["values"]
534
+ def __init__(self, _io, _parent=None, _root=None):
535
+ self._io = _io
536
+ self._parent = _parent
537
+ self._root = _root if _root else self
538
+ self._debug = collections.defaultdict(dict)
539
+
540
+ def _read(self):
541
+ self._debug['values']['start'] = self._io.pos()
542
+ self.values = [None] * (1)
543
+ for i in range(1):
544
+ if not 'arr' in self._debug['values']:
545
+ self._debug['values']['arr'] = []
546
+ self._debug['values']['arr'].append({'start': self._io.pos()})
547
+ self.values[i] = (self._io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
548
+ self._debug['values']['arr'][i]['end'] = self._io.pos()
549
+
550
+ self._debug['values']['end'] = self._io.pos()
551
+
552
+
553
+ class SignatureTagsStep(KaitaiStruct):
554
+ SEQ_FIELDS = []
555
+ def __init__(self, idx, prev_size_tag_idx, _io, _parent=None, _root=None):
556
+ self._io = _io
557
+ self._parent = _parent
558
+ self._root = _root if _root else self
559
+ self.idx = idx
560
+ self.prev_size_tag_idx = prev_size_tag_idx
561
+ self._debug = collections.defaultdict(dict)
562
+
563
+ def _read(self):
564
+ pass
565
+
566
+ @property
567
+ def size_tag_idx(self):
568
+ if hasattr(self, '_m_size_tag_idx'):
569
+ return self._m_size_tag_idx if hasattr(self, '_m_size_tag_idx') else None
570
+
571
+ self._m_size_tag_idx = (self.prev_size_tag_idx if self.prev_size_tag_idx != -1 else (self.idx if ((self._parent.signature.index_records[self.idx].signature_tag == Rpm.SignatureTags.size) and (self._parent.signature.index_records[self.idx].record_type == Rpm.RecordTypes.uint32) and (self._parent.signature.index_records[self.idx].num_values >= 1)) else -1))
572
+ return self._m_size_tag_idx if hasattr(self, '_m_size_tag_idx') else None
573
+
574
+
575
+ class RecordTypeUint32(KaitaiStruct):
576
+ SEQ_FIELDS = ["values"]
577
+ def __init__(self, num_values, _io, _parent=None, _root=None):
578
+ self._io = _io
579
+ self._parent = _parent
580
+ self._root = _root if _root else self
581
+ self.num_values = num_values
582
+ self._debug = collections.defaultdict(dict)
583
+
584
+ def _read(self):
585
+ self._debug['values']['start'] = self._io.pos()
586
+ self.values = [None] * (self.num_values)
587
+ for i in range(self.num_values):
588
+ if not 'arr' in self._debug['values']:
589
+ self._debug['values']['arr'] = []
590
+ self._debug['values']['arr'].append({'start': self._io.pos()})
591
+ self.values[i] = self._io.read_u4be()
592
+ self._debug['values']['arr'][i]['end'] = self._io.pos()
593
+
594
+ self._debug['values']['end'] = self._io.pos()
595
+
596
+
597
+ class RecordTypeUint16(KaitaiStruct):
598
+ SEQ_FIELDS = ["values"]
599
+ def __init__(self, num_values, _io, _parent=None, _root=None):
600
+ self._io = _io
601
+ self._parent = _parent
602
+ self._root = _root if _root else self
603
+ self.num_values = num_values
604
+ self._debug = collections.defaultdict(dict)
605
+
606
+ def _read(self):
607
+ self._debug['values']['start'] = self._io.pos()
608
+ self.values = [None] * (self.num_values)
609
+ for i in range(self.num_values):
610
+ if not 'arr' in self._debug['values']:
611
+ self._debug['values']['arr'] = []
612
+ self._debug['values']['arr'].append({'start': self._io.pos()})
613
+ self.values[i] = self._io.read_u2be()
614
+ self._debug['values']['arr'][i]['end'] = self._io.pos()
615
+
616
+ self._debug['values']['end'] = self._io.pos()
617
+
618
+
619
+ class HeaderIndexRecord(KaitaiStruct):
620
+ SEQ_FIELDS = ["tag_raw", "record_type", "ofs_body", "count"]
621
+ def __init__(self, _io, _parent=None, _root=None):
622
+ self._io = _io
623
+ self._parent = _parent
624
+ self._root = _root if _root else self
625
+ self._debug = collections.defaultdict(dict)
626
+
627
+ def _read(self):
628
+ self._debug['tag_raw']['start'] = self._io.pos()
629
+ self.tag_raw = self._io.read_u4be()
630
+ self._debug['tag_raw']['end'] = self._io.pos()
631
+ self._debug['record_type']['start'] = self._io.pos()
632
+ self.record_type = KaitaiStream.resolve_enum(Rpm.RecordTypes, self._io.read_u4be())
633
+ self._debug['record_type']['end'] = self._io.pos()
634
+ self._debug['ofs_body']['start'] = self._io.pos()
635
+ self.ofs_body = self._io.read_u4be()
636
+ self._debug['ofs_body']['end'] = self._io.pos()
637
+ self._debug['count']['start'] = self._io.pos()
638
+ self.count = self._io.read_u4be()
639
+ self._debug['count']['end'] = self._io.pos()
640
+
641
+ @property
642
+ def num_values(self):
643
+ if hasattr(self, '_m_num_values'):
644
+ return self._m_num_values if hasattr(self, '_m_num_values') else None
645
+
646
+ if self.record_type != Rpm.RecordTypes.bin:
647
+ self._m_num_values = self.count
648
+
649
+ return self._m_num_values if hasattr(self, '_m_num_values') else None
650
+
651
+ @property
652
+ def body(self):
653
+ if hasattr(self, '_m_body'):
654
+ return self._m_body if hasattr(self, '_m_body') else None
655
+
656
+ io = self._parent.storage_section._io
657
+ _pos = io.pos()
658
+ io.seek(self.ofs_body)
659
+ self._debug['_m_body']['start'] = io.pos()
660
+ _on = self.record_type
661
+ if _on == Rpm.RecordTypes.uint32:
662
+ self._m_body = Rpm.RecordTypeUint32(self.num_values, io, self, self._root)
663
+ self._m_body._read()
664
+ elif _on == Rpm.RecordTypes.uint64:
665
+ self._m_body = Rpm.RecordTypeUint64(self.num_values, io, self, self._root)
666
+ self._m_body._read()
667
+ elif _on == Rpm.RecordTypes.bin:
668
+ self._m_body = Rpm.RecordTypeBin(self.len_value, io, self, self._root)
669
+ self._m_body._read()
670
+ elif _on == Rpm.RecordTypes.string:
671
+ self._m_body = Rpm.RecordTypeString(io, self, self._root)
672
+ self._m_body._read()
673
+ elif _on == Rpm.RecordTypes.uint8:
674
+ self._m_body = Rpm.RecordTypeUint8(self.num_values, io, self, self._root)
675
+ self._m_body._read()
676
+ elif _on == Rpm.RecordTypes.i18n_string:
677
+ self._m_body = Rpm.RecordTypeStringArray(self.num_values, io, self, self._root)
678
+ self._m_body._read()
679
+ elif _on == Rpm.RecordTypes.uint16:
680
+ self._m_body = Rpm.RecordTypeUint16(self.num_values, io, self, self._root)
681
+ self._m_body._read()
682
+ elif _on == Rpm.RecordTypes.char:
683
+ self._m_body = Rpm.RecordTypeUint8(self.num_values, io, self, self._root)
684
+ self._m_body._read()
685
+ elif _on == Rpm.RecordTypes.string_array:
686
+ self._m_body = Rpm.RecordTypeStringArray(self.num_values, io, self, self._root)
687
+ self._m_body._read()
688
+ self._debug['_m_body']['end'] = io.pos()
689
+ io.seek(_pos)
690
+ return self._m_body if hasattr(self, '_m_body') else None
691
+
692
+ @property
693
+ def signature_tag(self):
694
+ if hasattr(self, '_m_signature_tag'):
695
+ return self._m_signature_tag if hasattr(self, '_m_signature_tag') else None
696
+
697
+ if self._parent.is_signature:
698
+ self._m_signature_tag = KaitaiStream.resolve_enum(Rpm.SignatureTags, self.tag_raw)
699
+
700
+ return self._m_signature_tag if hasattr(self, '_m_signature_tag') else None
701
+
702
+ @property
703
+ def len_value(self):
704
+ if hasattr(self, '_m_len_value'):
705
+ return self._m_len_value if hasattr(self, '_m_len_value') else None
706
+
707
+ if self.record_type == Rpm.RecordTypes.bin:
708
+ self._m_len_value = self.count
709
+
710
+ return self._m_len_value if hasattr(self, '_m_len_value') else None
711
+
712
+ @property
713
+ def header_tag(self):
714
+ if hasattr(self, '_m_header_tag'):
715
+ return self._m_header_tag if hasattr(self, '_m_header_tag') else None
716
+
717
+ if self._parent.is_header:
718
+ self._m_header_tag = KaitaiStream.resolve_enum(Rpm.HeaderTags, self.tag_raw)
719
+
720
+ return self._m_header_tag if hasattr(self, '_m_header_tag') else None
721
+
722
+
723
+ class RpmVersion(KaitaiStruct):
724
+ SEQ_FIELDS = ["major", "minor"]
725
+ def __init__(self, _io, _parent=None, _root=None):
726
+ self._io = _io
727
+ self._parent = _parent
728
+ self._root = _root if _root else self
729
+ self._debug = collections.defaultdict(dict)
730
+
731
+ def _read(self):
732
+ self._debug['major']['start'] = self._io.pos()
733
+ self.major = self._io.read_u1()
734
+ self._debug['major']['end'] = self._io.pos()
735
+ if not self.major >= 3:
736
+ raise kaitaistruct.ValidationLessThanError(3, self.major, self._io, u"/types/rpm_version/seq/0")
737
+ if not self.major <= 4:
738
+ raise kaitaistruct.ValidationGreaterThanError(4, self.major, self._io, u"/types/rpm_version/seq/0")
739
+ self._debug['minor']['start'] = self._io.pos()
740
+ self.minor = self._io.read_u1()
741
+ self._debug['minor']['end'] = self._io.pos()
742
+
743
+
744
+ class Dummy(KaitaiStruct):
745
+ SEQ_FIELDS = []
746
+ def __init__(self, _io, _parent=None, _root=None):
747
+ self._io = _io
748
+ self._parent = _parent
749
+ self._root = _root if _root else self
750
+ self._debug = collections.defaultdict(dict)
751
+
752
+ def _read(self):
753
+ pass
754
+
755
+
756
+ class RecordTypeUint8(KaitaiStruct):
757
+ SEQ_FIELDS = ["values"]
758
+ def __init__(self, num_values, _io, _parent=None, _root=None):
759
+ self._io = _io
760
+ self._parent = _parent
761
+ self._root = _root if _root else self
762
+ self.num_values = num_values
763
+ self._debug = collections.defaultdict(dict)
764
+
765
+ def _read(self):
766
+ self._debug['values']['start'] = self._io.pos()
767
+ self.values = [None] * (self.num_values)
768
+ for i in range(self.num_values):
769
+ if not 'arr' in self._debug['values']:
770
+ self._debug['values']['arr'] = []
771
+ self._debug['values']['arr'].append({'start': self._io.pos()})
772
+ self.values[i] = self._io.read_u1()
773
+ self._debug['values']['arr'][i]['end'] = self._io.pos()
774
+
775
+ self._debug['values']['end'] = self._io.pos()
776
+
777
+
778
+ class RecordTypeUint64(KaitaiStruct):
779
+ SEQ_FIELDS = ["values"]
780
+ def __init__(self, num_values, _io, _parent=None, _root=None):
781
+ self._io = _io
782
+ self._parent = _parent
783
+ self._root = _root if _root else self
784
+ self.num_values = num_values
785
+ self._debug = collections.defaultdict(dict)
786
+
787
+ def _read(self):
788
+ self._debug['values']['start'] = self._io.pos()
789
+ self.values = [None] * (self.num_values)
790
+ for i in range(self.num_values):
791
+ if not 'arr' in self._debug['values']:
792
+ self._debug['values']['arr'] = []
793
+ self._debug['values']['arr'].append({'start': self._io.pos()})
794
+ self.values[i] = self._io.read_u8be()
795
+ self._debug['values']['arr'][i]['end'] = self._io.pos()
796
+
797
+ self._debug['values']['end'] = self._io.pos()
798
+
799
+
800
+ class RecordTypeBin(KaitaiStruct):
801
+ SEQ_FIELDS = ["values"]
802
+ def __init__(self, len_value, _io, _parent=None, _root=None):
803
+ self._io = _io
804
+ self._parent = _parent
805
+ self._root = _root if _root else self
806
+ self.len_value = len_value
807
+ self._debug = collections.defaultdict(dict)
808
+
809
+ def _read(self):
810
+ self._debug['values']['start'] = self._io.pos()
811
+ self.values = [None] * (1)
812
+ for i in range(1):
813
+ if not 'arr' in self._debug['values']:
814
+ self._debug['values']['arr'] = []
815
+ self._debug['values']['arr'].append({'start': self._io.pos()})
816
+ self.values[i] = self._io.read_bytes(self.len_value)
817
+ self._debug['values']['arr'][i]['end'] = self._io.pos()
818
+
819
+ self._debug['values']['end'] = self._io.pos()
820
+
821
+
822
+ class HeaderRecord(KaitaiStruct):
823
+ SEQ_FIELDS = ["magic", "reserved", "num_index_records", "len_storage_section"]
824
+ def __init__(self, _io, _parent=None, _root=None):
825
+ self._io = _io
826
+ self._parent = _parent
827
+ self._root = _root if _root else self
828
+ self._debug = collections.defaultdict(dict)
829
+
830
+ def _read(self):
831
+ self._debug['magic']['start'] = self._io.pos()
832
+ self.magic = self._io.read_bytes(4)
833
+ self._debug['magic']['end'] = self._io.pos()
834
+ if not self.magic == b"\x8E\xAD\xE8\x01":
835
+ raise kaitaistruct.ValidationNotEqualError(b"\x8E\xAD\xE8\x01", self.magic, self._io, u"/types/header_record/seq/0")
836
+ self._debug['reserved']['start'] = self._io.pos()
837
+ self.reserved = self._io.read_bytes(4)
838
+ self._debug['reserved']['end'] = self._io.pos()
839
+ if not self.reserved == b"\x00\x00\x00\x00":
840
+ raise kaitaistruct.ValidationNotEqualError(b"\x00\x00\x00\x00", self.reserved, self._io, u"/types/header_record/seq/1")
841
+ self._debug['num_index_records']['start'] = self._io.pos()
842
+ self.num_index_records = self._io.read_u4be()
843
+ self._debug['num_index_records']['end'] = self._io.pos()
844
+ if not self.num_index_records >= 1:
845
+ raise kaitaistruct.ValidationLessThanError(1, self.num_index_records, self._io, u"/types/header_record/seq/2")
846
+ self._debug['len_storage_section']['start'] = self._io.pos()
847
+ self.len_storage_section = self._io.read_u4be()
848
+ self._debug['len_storage_section']['end'] = self._io.pos()
849
+
850
+
851
+ class Header(KaitaiStruct):
852
+ """header structure used for both the "header" and "signature", but some tag
853
+ values have different meanings in signature and header (hence they use
854
+ different enums)
855
+ """
856
+ SEQ_FIELDS = ["header_record", "index_records", "storage_section"]
857
+ def __init__(self, is_signature, _io, _parent=None, _root=None):
858
+ self._io = _io
859
+ self._parent = _parent
860
+ self._root = _root if _root else self
861
+ self.is_signature = is_signature
862
+ self._debug = collections.defaultdict(dict)
863
+
864
+ def _read(self):
865
+ self._debug['header_record']['start'] = self._io.pos()
866
+ self.header_record = Rpm.HeaderRecord(self._io, self, self._root)
867
+ self.header_record._read()
868
+ self._debug['header_record']['end'] = self._io.pos()
869
+ self._debug['index_records']['start'] = self._io.pos()
870
+ self.index_records = [None] * (self.header_record.num_index_records)
871
+ for i in range(self.header_record.num_index_records):
872
+ if not 'arr' in self._debug['index_records']:
873
+ self._debug['index_records']['arr'] = []
874
+ self._debug['index_records']['arr'].append({'start': self._io.pos()})
875
+ _t_index_records = Rpm.HeaderIndexRecord(self._io, self, self._root)
876
+ _t_index_records._read()
877
+ self.index_records[i] = _t_index_records
878
+ self._debug['index_records']['arr'][i]['end'] = self._io.pos()
879
+
880
+ self._debug['index_records']['end'] = self._io.pos()
881
+ self._debug['storage_section']['start'] = self._io.pos()
882
+ self._raw_storage_section = self._io.read_bytes(self.header_record.len_storage_section)
883
+ _io__raw_storage_section = KaitaiStream(BytesIO(self._raw_storage_section))
884
+ self.storage_section = Rpm.Dummy(_io__raw_storage_section, self, self._root)
885
+ self.storage_section._read()
886
+ self._debug['storage_section']['end'] = self._io.pos()
887
+
888
+ @property
889
+ def is_header(self):
890
+ if hasattr(self, '_m_is_header'):
891
+ return self._m_is_header if hasattr(self, '_m_is_header') else None
892
+
893
+ self._m_is_header = not (self.is_signature)
894
+ return self._m_is_header if hasattr(self, '_m_is_header') else None
895
+
896
+
897
+ @property
898
+ def has_signature_size_tag(self):
899
+ if hasattr(self, '_m_has_signature_size_tag'):
900
+ return self._m_has_signature_size_tag if hasattr(self, '_m_has_signature_size_tag') else None
901
+
902
+ self._m_has_signature_size_tag = self.signature_tags_steps[-1].size_tag_idx != -1
903
+ return self._m_has_signature_size_tag if hasattr(self, '_m_has_signature_size_tag') else None
904
+
905
+ @property
906
+ def signature_size_tag(self):
907
+ if hasattr(self, '_m_signature_size_tag'):
908
+ return self._m_signature_size_tag if hasattr(self, '_m_signature_size_tag') else None
909
+
910
+ if self.has_signature_size_tag:
911
+ self._m_signature_size_tag = self.signature.index_records[self.signature_tags_steps[-1].size_tag_idx]
912
+
913
+ return self._m_signature_size_tag if hasattr(self, '_m_signature_size_tag') else None
914
+
915
+ @property
916
+ def len_payload(self):
917
+ if hasattr(self, '_m_len_payload'):
918
+ return self._m_len_payload if hasattr(self, '_m_len_payload') else None
919
+
920
+ if self.has_signature_size_tag:
921
+ self._m_len_payload = (self.signature_size_tag.body.values[0] - self.len_header)
922
+
923
+ return self._m_len_payload if hasattr(self, '_m_len_payload') else None
924
+
925
+ @property
926
+ def payload(self):
927
+ if hasattr(self, '_m_payload'):
928
+ return self._m_payload if hasattr(self, '_m_payload') else None
929
+
930
+ if self.has_signature_size_tag:
931
+ _pos = self._io.pos()
932
+ self._io.seek(self.ofs_payload)
933
+ self._debug['_m_payload']['start'] = self._io.pos()
934
+ self._m_payload = self._io.read_bytes(self.len_payload)
935
+ self._debug['_m_payload']['end'] = self._io.pos()
936
+ self._io.seek(_pos)
937
+
938
+ return self._m_payload if hasattr(self, '_m_payload') else None
939
+
940
+ @property
941
+ def len_header(self):
942
+ if hasattr(self, '_m_len_header'):
943
+ return self._m_len_header if hasattr(self, '_m_len_header') else None
944
+
945
+ self._m_len_header = (self.ofs_payload - self.ofs_header)
946
+ return self._m_len_header if hasattr(self, '_m_len_header') else None
947
+
948
+ @property
949
+ def ofs_header(self):
950
+ if hasattr(self, '_m_ofs_header'):
951
+ return self._m_ofs_header if hasattr(self, '_m_ofs_header') else None
952
+
953
+ self._m_ofs_header = self._io.pos()
954
+ return self._m_ofs_header if hasattr(self, '_m_ofs_header') else None
955
+
956
+ @property
957
+ def ofs_payload(self):
958
+ if hasattr(self, '_m_ofs_payload'):
959
+ return self._m_ofs_payload if hasattr(self, '_m_ofs_payload') else None
960
+
961
+ self._m_ofs_payload = self._io.pos()
962
+ return self._m_ofs_payload if hasattr(self, '_m_ofs_payload') else None
963
+
964
+