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,319 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ import collections
7
+
8
+
9
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
10
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
11
+
12
+ class AndroidImg(KaitaiStruct):
13
+ """
14
+ .. seealso::
15
+ Source - https://source.android.com/docs/core/architecture/bootloader/boot-image-header
16
+ """
17
+ SEQ_FIELDS = ["magic", "kernel", "ramdisk", "second", "tags_load", "page_size", "header_version", "os_version", "name", "cmdline", "sha", "extra_cmdline", "recovery_dtbo", "boot_header_size", "dtb"]
18
+ def __init__(self, _io, _parent=None, _root=None):
19
+ self._io = _io
20
+ self._parent = _parent
21
+ self._root = _root if _root else self
22
+ self._debug = collections.defaultdict(dict)
23
+
24
+ def _read(self):
25
+ self._debug['magic']['start'] = self._io.pos()
26
+ self.magic = self._io.read_bytes(8)
27
+ self._debug['magic']['end'] = self._io.pos()
28
+ if not self.magic == b"\x41\x4E\x44\x52\x4F\x49\x44\x21":
29
+ raise kaitaistruct.ValidationNotEqualError(b"\x41\x4E\x44\x52\x4F\x49\x44\x21", self.magic, self._io, u"/seq/0")
30
+ self._debug['kernel']['start'] = self._io.pos()
31
+ self.kernel = AndroidImg.Load(self._io, self, self._root)
32
+ self.kernel._read()
33
+ self._debug['kernel']['end'] = self._io.pos()
34
+ self._debug['ramdisk']['start'] = self._io.pos()
35
+ self.ramdisk = AndroidImg.Load(self._io, self, self._root)
36
+ self.ramdisk._read()
37
+ self._debug['ramdisk']['end'] = self._io.pos()
38
+ self._debug['second']['start'] = self._io.pos()
39
+ self.second = AndroidImg.Load(self._io, self, self._root)
40
+ self.second._read()
41
+ self._debug['second']['end'] = self._io.pos()
42
+ self._debug['tags_load']['start'] = self._io.pos()
43
+ self.tags_load = self._io.read_u4le()
44
+ self._debug['tags_load']['end'] = self._io.pos()
45
+ self._debug['page_size']['start'] = self._io.pos()
46
+ self.page_size = self._io.read_u4le()
47
+ self._debug['page_size']['end'] = self._io.pos()
48
+ self._debug['header_version']['start'] = self._io.pos()
49
+ self.header_version = self._io.read_u4le()
50
+ self._debug['header_version']['end'] = self._io.pos()
51
+ self._debug['os_version']['start'] = self._io.pos()
52
+ self.os_version = AndroidImg.OsVersion(self._io, self, self._root)
53
+ self.os_version._read()
54
+ self._debug['os_version']['end'] = self._io.pos()
55
+ self._debug['name']['start'] = self._io.pos()
56
+ self.name = (KaitaiStream.bytes_terminate(self._io.read_bytes(16), 0, False)).decode(u"ASCII")
57
+ self._debug['name']['end'] = self._io.pos()
58
+ self._debug['cmdline']['start'] = self._io.pos()
59
+ self.cmdline = (KaitaiStream.bytes_terminate(self._io.read_bytes(512), 0, False)).decode(u"ASCII")
60
+ self._debug['cmdline']['end'] = self._io.pos()
61
+ self._debug['sha']['start'] = self._io.pos()
62
+ self.sha = self._io.read_bytes(32)
63
+ self._debug['sha']['end'] = self._io.pos()
64
+ self._debug['extra_cmdline']['start'] = self._io.pos()
65
+ self.extra_cmdline = (KaitaiStream.bytes_terminate(self._io.read_bytes(1024), 0, False)).decode(u"ASCII")
66
+ self._debug['extra_cmdline']['end'] = self._io.pos()
67
+ if self.header_version > 0:
68
+ self._debug['recovery_dtbo']['start'] = self._io.pos()
69
+ self.recovery_dtbo = AndroidImg.SizeOffset(self._io, self, self._root)
70
+ self.recovery_dtbo._read()
71
+ self._debug['recovery_dtbo']['end'] = self._io.pos()
72
+
73
+ if self.header_version > 0:
74
+ self._debug['boot_header_size']['start'] = self._io.pos()
75
+ self.boot_header_size = self._io.read_u4le()
76
+ self._debug['boot_header_size']['end'] = self._io.pos()
77
+
78
+ if self.header_version > 1:
79
+ self._debug['dtb']['start'] = self._io.pos()
80
+ self.dtb = AndroidImg.LoadLong(self._io, self, self._root)
81
+ self.dtb._read()
82
+ self._debug['dtb']['end'] = self._io.pos()
83
+
84
+
85
+ class Load(KaitaiStruct):
86
+ SEQ_FIELDS = ["size", "addr"]
87
+ def __init__(self, _io, _parent=None, _root=None):
88
+ self._io = _io
89
+ self._parent = _parent
90
+ self._root = _root if _root else self
91
+ self._debug = collections.defaultdict(dict)
92
+
93
+ def _read(self):
94
+ self._debug['size']['start'] = self._io.pos()
95
+ self.size = self._io.read_u4le()
96
+ self._debug['size']['end'] = self._io.pos()
97
+ self._debug['addr']['start'] = self._io.pos()
98
+ self.addr = self._io.read_u4le()
99
+ self._debug['addr']['end'] = self._io.pos()
100
+
101
+
102
+ class LoadLong(KaitaiStruct):
103
+ SEQ_FIELDS = ["size", "addr"]
104
+ def __init__(self, _io, _parent=None, _root=None):
105
+ self._io = _io
106
+ self._parent = _parent
107
+ self._root = _root if _root else self
108
+ self._debug = collections.defaultdict(dict)
109
+
110
+ def _read(self):
111
+ self._debug['size']['start'] = self._io.pos()
112
+ self.size = self._io.read_u4le()
113
+ self._debug['size']['end'] = self._io.pos()
114
+ self._debug['addr']['start'] = self._io.pos()
115
+ self.addr = self._io.read_u8le()
116
+ self._debug['addr']['end'] = self._io.pos()
117
+
118
+
119
+ class SizeOffset(KaitaiStruct):
120
+ SEQ_FIELDS = ["size", "offset"]
121
+ def __init__(self, _io, _parent=None, _root=None):
122
+ self._io = _io
123
+ self._parent = _parent
124
+ self._root = _root if _root else self
125
+ self._debug = collections.defaultdict(dict)
126
+
127
+ def _read(self):
128
+ self._debug['size']['start'] = self._io.pos()
129
+ self.size = self._io.read_u4le()
130
+ self._debug['size']['end'] = self._io.pos()
131
+ self._debug['offset']['start'] = self._io.pos()
132
+ self.offset = self._io.read_u8le()
133
+ self._debug['offset']['end'] = self._io.pos()
134
+
135
+
136
+ class OsVersion(KaitaiStruct):
137
+ SEQ_FIELDS = ["version"]
138
+ def __init__(self, _io, _parent=None, _root=None):
139
+ self._io = _io
140
+ self._parent = _parent
141
+ self._root = _root if _root else self
142
+ self._debug = collections.defaultdict(dict)
143
+
144
+ def _read(self):
145
+ self._debug['version']['start'] = self._io.pos()
146
+ self.version = self._io.read_u4le()
147
+ self._debug['version']['end'] = self._io.pos()
148
+
149
+ @property
150
+ def month(self):
151
+ if hasattr(self, '_m_month'):
152
+ return self._m_month if hasattr(self, '_m_month') else None
153
+
154
+ self._m_month = (self.version & 15)
155
+ return self._m_month if hasattr(self, '_m_month') else None
156
+
157
+ @property
158
+ def patch(self):
159
+ if hasattr(self, '_m_patch'):
160
+ return self._m_patch if hasattr(self, '_m_patch') else None
161
+
162
+ self._m_patch = ((self.version >> 11) & 127)
163
+ return self._m_patch if hasattr(self, '_m_patch') else None
164
+
165
+ @property
166
+ def year(self):
167
+ if hasattr(self, '_m_year'):
168
+ return self._m_year if hasattr(self, '_m_year') else None
169
+
170
+ self._m_year = (((self.version >> 4) & 127) + 2000)
171
+ return self._m_year if hasattr(self, '_m_year') else None
172
+
173
+ @property
174
+ def major(self):
175
+ if hasattr(self, '_m_major'):
176
+ return self._m_major if hasattr(self, '_m_major') else None
177
+
178
+ self._m_major = ((self.version >> 25) & 127)
179
+ return self._m_major if hasattr(self, '_m_major') else None
180
+
181
+ @property
182
+ def minor(self):
183
+ if hasattr(self, '_m_minor'):
184
+ return self._m_minor if hasattr(self, '_m_minor') else None
185
+
186
+ self._m_minor = ((self.version >> 18) & 127)
187
+ return self._m_minor if hasattr(self, '_m_minor') else None
188
+
189
+
190
+ @property
191
+ def kernel_img(self):
192
+ if hasattr(self, '_m_kernel_img'):
193
+ return self._m_kernel_img if hasattr(self, '_m_kernel_img') else None
194
+
195
+ _pos = self._io.pos()
196
+ self._io.seek(self.page_size)
197
+ self._debug['_m_kernel_img']['start'] = self._io.pos()
198
+ self._m_kernel_img = self._io.read_bytes(self.kernel.size)
199
+ self._debug['_m_kernel_img']['end'] = self._io.pos()
200
+ self._io.seek(_pos)
201
+ return self._m_kernel_img if hasattr(self, '_m_kernel_img') else None
202
+
203
+ @property
204
+ def tags_offset(self):
205
+ """tags offset from base."""
206
+ if hasattr(self, '_m_tags_offset'):
207
+ return self._m_tags_offset if hasattr(self, '_m_tags_offset') else None
208
+
209
+ self._m_tags_offset = (self.tags_load - self.base)
210
+ return self._m_tags_offset if hasattr(self, '_m_tags_offset') else None
211
+
212
+ @property
213
+ def ramdisk_offset(self):
214
+ """ramdisk offset from base."""
215
+ if hasattr(self, '_m_ramdisk_offset'):
216
+ return self._m_ramdisk_offset if hasattr(self, '_m_ramdisk_offset') else None
217
+
218
+ self._m_ramdisk_offset = ((self.ramdisk.addr - self.base) if self.ramdisk.addr > 0 else 0)
219
+ return self._m_ramdisk_offset if hasattr(self, '_m_ramdisk_offset') else None
220
+
221
+ @property
222
+ def second_offset(self):
223
+ """2nd bootloader offset from base."""
224
+ if hasattr(self, '_m_second_offset'):
225
+ return self._m_second_offset if hasattr(self, '_m_second_offset') else None
226
+
227
+ self._m_second_offset = ((self.second.addr - self.base) if self.second.addr > 0 else 0)
228
+ return self._m_second_offset if hasattr(self, '_m_second_offset') else None
229
+
230
+ @property
231
+ def kernel_offset(self):
232
+ """kernel offset from base."""
233
+ if hasattr(self, '_m_kernel_offset'):
234
+ return self._m_kernel_offset if hasattr(self, '_m_kernel_offset') else None
235
+
236
+ self._m_kernel_offset = (self.kernel.addr - self.base)
237
+ return self._m_kernel_offset if hasattr(self, '_m_kernel_offset') else None
238
+
239
+ @property
240
+ def dtb_offset(self):
241
+ """dtb offset from base."""
242
+ if hasattr(self, '_m_dtb_offset'):
243
+ return self._m_dtb_offset if hasattr(self, '_m_dtb_offset') else None
244
+
245
+ if self.header_version > 1:
246
+ self._m_dtb_offset = ((self.dtb.addr - self.base) if self.dtb.addr > 0 else 0)
247
+
248
+ return self._m_dtb_offset if hasattr(self, '_m_dtb_offset') else None
249
+
250
+ @property
251
+ def dtb_img(self):
252
+ if hasattr(self, '_m_dtb_img'):
253
+ return self._m_dtb_img if hasattr(self, '_m_dtb_img') else None
254
+
255
+ if ((self.header_version > 1) and (self.dtb.size > 0)) :
256
+ _pos = self._io.pos()
257
+ self._io.seek((((((((self.page_size + self.kernel.size) + self.ramdisk.size) + self.second.size) + self.recovery_dtbo.size) + self.page_size) - 1) // self.page_size * self.page_size))
258
+ self._debug['_m_dtb_img']['start'] = self._io.pos()
259
+ self._m_dtb_img = self._io.read_bytes(self.dtb.size)
260
+ self._debug['_m_dtb_img']['end'] = self._io.pos()
261
+ self._io.seek(_pos)
262
+
263
+ return self._m_dtb_img if hasattr(self, '_m_dtb_img') else None
264
+
265
+ @property
266
+ def ramdisk_img(self):
267
+ if hasattr(self, '_m_ramdisk_img'):
268
+ return self._m_ramdisk_img if hasattr(self, '_m_ramdisk_img') else None
269
+
270
+ if self.ramdisk.size > 0:
271
+ _pos = self._io.pos()
272
+ self._io.seek(((((self.page_size + self.kernel.size) + self.page_size) - 1) // self.page_size * self.page_size))
273
+ self._debug['_m_ramdisk_img']['start'] = self._io.pos()
274
+ self._m_ramdisk_img = self._io.read_bytes(self.ramdisk.size)
275
+ self._debug['_m_ramdisk_img']['end'] = self._io.pos()
276
+ self._io.seek(_pos)
277
+
278
+ return self._m_ramdisk_img if hasattr(self, '_m_ramdisk_img') else None
279
+
280
+ @property
281
+ def recovery_dtbo_img(self):
282
+ if hasattr(self, '_m_recovery_dtbo_img'):
283
+ return self._m_recovery_dtbo_img if hasattr(self, '_m_recovery_dtbo_img') else None
284
+
285
+ if ((self.header_version > 0) and (self.recovery_dtbo.size > 0)) :
286
+ _pos = self._io.pos()
287
+ self._io.seek(self.recovery_dtbo.offset)
288
+ self._debug['_m_recovery_dtbo_img']['start'] = self._io.pos()
289
+ self._m_recovery_dtbo_img = self._io.read_bytes(self.recovery_dtbo.size)
290
+ self._debug['_m_recovery_dtbo_img']['end'] = self._io.pos()
291
+ self._io.seek(_pos)
292
+
293
+ return self._m_recovery_dtbo_img if hasattr(self, '_m_recovery_dtbo_img') else None
294
+
295
+ @property
296
+ def second_img(self):
297
+ if hasattr(self, '_m_second_img'):
298
+ return self._m_second_img if hasattr(self, '_m_second_img') else None
299
+
300
+ if self.second.size > 0:
301
+ _pos = self._io.pos()
302
+ self._io.seek((((((self.page_size + self.kernel.size) + self.ramdisk.size) + self.page_size) - 1) // self.page_size * self.page_size))
303
+ self._debug['_m_second_img']['start'] = self._io.pos()
304
+ self._m_second_img = self._io.read_bytes(self.second.size)
305
+ self._debug['_m_second_img']['end'] = self._io.pos()
306
+ self._io.seek(_pos)
307
+
308
+ return self._m_second_img if hasattr(self, '_m_second_img') else None
309
+
310
+ @property
311
+ def base(self):
312
+ """base loading address."""
313
+ if hasattr(self, '_m_base'):
314
+ return self._m_base if hasattr(self, '_m_base') else None
315
+
316
+ self._m_base = (self.kernel.addr - 32768)
317
+ return self._m_base if hasattr(self, '_m_base') else None
318
+
319
+
@@ -0,0 +1,83 @@
1
+ # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
2
+
3
+ from pkg_resources import parse_version
4
+ import kaitaistruct
5
+ from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
6
+ import collections
7
+
8
+
9
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
10
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
11
+
12
+ class AndroidNanoappHeader(KaitaiStruct):
13
+ """
14
+ .. seealso::
15
+ Source - https://android.googlesource.com/platform/system/chre/+/a7ff61b9/build/build_template.mk#130
16
+ """
17
+ SEQ_FIELDS = ["header_version", "magic", "app_id", "app_version", "flags", "hub_type", "chre_api_major_version", "chre_api_minor_version", "reserved"]
18
+ def __init__(self, _io, _parent=None, _root=None):
19
+ self._io = _io
20
+ self._parent = _parent
21
+ self._root = _root if _root else self
22
+ self._debug = collections.defaultdict(dict)
23
+
24
+ def _read(self):
25
+ self._debug['header_version']['start'] = self._io.pos()
26
+ self.header_version = self._io.read_u4le()
27
+ self._debug['header_version']['end'] = self._io.pos()
28
+ if not self.header_version == 1:
29
+ raise kaitaistruct.ValidationNotEqualError(1, self.header_version, self._io, u"/seq/0")
30
+ self._debug['magic']['start'] = self._io.pos()
31
+ self.magic = self._io.read_bytes(4)
32
+ self._debug['magic']['end'] = self._io.pos()
33
+ if not self.magic == b"\x4E\x41\x4E\x4F":
34
+ raise kaitaistruct.ValidationNotEqualError(b"\x4E\x41\x4E\x4F", self.magic, self._io, u"/seq/1")
35
+ self._debug['app_id']['start'] = self._io.pos()
36
+ self.app_id = self._io.read_u8le()
37
+ self._debug['app_id']['end'] = self._io.pos()
38
+ self._debug['app_version']['start'] = self._io.pos()
39
+ self.app_version = self._io.read_u4le()
40
+ self._debug['app_version']['end'] = self._io.pos()
41
+ self._debug['flags']['start'] = self._io.pos()
42
+ self.flags = self._io.read_u4le()
43
+ self._debug['flags']['end'] = self._io.pos()
44
+ self._debug['hub_type']['start'] = self._io.pos()
45
+ self.hub_type = self._io.read_u8le()
46
+ self._debug['hub_type']['end'] = self._io.pos()
47
+ self._debug['chre_api_major_version']['start'] = self._io.pos()
48
+ self.chre_api_major_version = self._io.read_u1()
49
+ self._debug['chre_api_major_version']['end'] = self._io.pos()
50
+ self._debug['chre_api_minor_version']['start'] = self._io.pos()
51
+ self.chre_api_minor_version = self._io.read_u1()
52
+ self._debug['chre_api_minor_version']['end'] = self._io.pos()
53
+ self._debug['reserved']['start'] = self._io.pos()
54
+ self.reserved = self._io.read_bytes(6)
55
+ self._debug['reserved']['end'] = self._io.pos()
56
+ if not self.reserved == b"\x00\x00\x00\x00\x00\x00":
57
+ raise kaitaistruct.ValidationNotEqualError(b"\x00\x00\x00\x00\x00\x00", self.reserved, self._io, u"/seq/8")
58
+
59
+ @property
60
+ def is_signed(self):
61
+ if hasattr(self, '_m_is_signed'):
62
+ return self._m_is_signed if hasattr(self, '_m_is_signed') else None
63
+
64
+ self._m_is_signed = (self.flags & 1) != 0
65
+ return self._m_is_signed if hasattr(self, '_m_is_signed') else None
66
+
67
+ @property
68
+ def is_encrypted(self):
69
+ if hasattr(self, '_m_is_encrypted'):
70
+ return self._m_is_encrypted if hasattr(self, '_m_is_encrypted') else None
71
+
72
+ self._m_is_encrypted = (self.flags & 2) != 0
73
+ return self._m_is_encrypted if hasattr(self, '_m_is_encrypted') else None
74
+
75
+ @property
76
+ def is_tcm_capable(self):
77
+ if hasattr(self, '_m_is_tcm_capable'):
78
+ return self._m_is_tcm_capable if hasattr(self, '_m_is_tcm_capable') else None
79
+
80
+ self._m_is_tcm_capable = (self.flags & 4) != 0
81
+ return self._m_is_tcm_capable if hasattr(self, '_m_is_tcm_capable') else None
82
+
83
+
@@ -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
+
8
+
9
+ if parse_version(kaitaistruct.__version__) < parse_version('0.9'):
10
+ raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
11
+
12
+ class AndroidOpenglShadersCache(KaitaiStruct):
13
+ """Android apps using directly or indirectly OpenGL cache compiled shaders
14
+ into com.android.opengl.shaders_cache file.
15
+
16
+ .. seealso::
17
+ Source - https://android.googlesource.com/platform/frameworks/native/+/master/opengl/libs/EGL/FileBlobCache.cpp
18
+ """
19
+ SEQ_FIELDS = ["magic", "crc32", "contents"]
20
+ def __init__(self, _io, _parent=None, _root=None):
21
+ self._io = _io
22
+ self._parent = _parent
23
+ self._root = _root if _root else self
24
+ self._debug = collections.defaultdict(dict)
25
+
26
+ def _read(self):
27
+ self._debug['magic']['start'] = self._io.pos()
28
+ self.magic = self._io.read_bytes(4)
29
+ self._debug['magic']['end'] = self._io.pos()
30
+ if not self.magic == b"\x45\x47\x4C\x24":
31
+ raise kaitaistruct.ValidationNotEqualError(b"\x45\x47\x4C\x24", self.magic, self._io, u"/seq/0")
32
+ self._debug['crc32']['start'] = self._io.pos()
33
+ self.crc32 = self._io.read_u4le()
34
+ self._debug['crc32']['end'] = self._io.pos()
35
+ self._debug['contents']['start'] = self._io.pos()
36
+ self._raw_contents = self._io.read_bytes_full()
37
+ _io__raw_contents = KaitaiStream(BytesIO(self._raw_contents))
38
+ self.contents = AndroidOpenglShadersCache.Cache(_io__raw_contents, self, self._root)
39
+ self.contents._read()
40
+ self._debug['contents']['end'] = self._io.pos()
41
+
42
+ class Alignment(KaitaiStruct):
43
+ SEQ_FIELDS = ["alignment"]
44
+ def __init__(self, _io, _parent=None, _root=None):
45
+ self._io = _io
46
+ self._parent = _parent
47
+ self._root = _root if _root else self
48
+ self._debug = collections.defaultdict(dict)
49
+
50
+ def _read(self):
51
+ self._debug['alignment']['start'] = self._io.pos()
52
+ self.alignment = self._io.read_bytes(((self._io.pos() + 3) & (~3 - self._io.pos())))
53
+ self._debug['alignment']['end'] = self._io.pos()
54
+
55
+
56
+ class PrefixedString(KaitaiStruct):
57
+ SEQ_FIELDS = ["len_str", "str", "alignment"]
58
+ def __init__(self, _io, _parent=None, _root=None):
59
+ self._io = _io
60
+ self._parent = _parent
61
+ self._root = _root if _root else self
62
+ self._debug = collections.defaultdict(dict)
63
+
64
+ def _read(self):
65
+ self._debug['len_str']['start'] = self._io.pos()
66
+ self.len_str = self._io.read_u4le()
67
+ self._debug['len_str']['end'] = self._io.pos()
68
+ self._debug['str']['start'] = self._io.pos()
69
+ self.str = (KaitaiStream.bytes_terminate(self._io.read_bytes(self.len_str), 0, False)).decode(u"ascii")
70
+ self._debug['str']['end'] = self._io.pos()
71
+ self._debug['alignment']['start'] = self._io.pos()
72
+ self.alignment = AndroidOpenglShadersCache.Alignment(self._io, self, self._root)
73
+ self.alignment._read()
74
+ self._debug['alignment']['end'] = self._io.pos()
75
+
76
+
77
+ class Cache(KaitaiStruct):
78
+ """
79
+ .. seealso::
80
+ Source - https://android.googlesource.com/platform/frameworks/native/+/master/opengl/libs/EGL/BlobCache.cpp
81
+ """
82
+ SEQ_FIELDS = ["magic", "version", "device_version", "num_entries", "build_id", "entries"]
83
+ def __init__(self, _io, _parent=None, _root=None):
84
+ self._io = _io
85
+ self._parent = _parent
86
+ self._root = _root if _root else self
87
+ self._debug = collections.defaultdict(dict)
88
+
89
+ def _read(self):
90
+ self._debug['magic']['start'] = self._io.pos()
91
+ self.magic = self._io.read_bytes(4)
92
+ self._debug['magic']['end'] = self._io.pos()
93
+ if not self.magic == b"\x24\x62\x42\x5F":
94
+ raise kaitaistruct.ValidationNotEqualError(b"\x24\x62\x42\x5F", self.magic, self._io, u"/types/cache/seq/0")
95
+ self._debug['version']['start'] = self._io.pos()
96
+ self.version = self._io.read_u4le()
97
+ self._debug['version']['end'] = self._io.pos()
98
+ self._debug['device_version']['start'] = self._io.pos()
99
+ self.device_version = self._io.read_u4le()
100
+ self._debug['device_version']['end'] = self._io.pos()
101
+ self._debug['num_entries']['start'] = self._io.pos()
102
+ self.num_entries = self._io.read_u4le()
103
+ self._debug['num_entries']['end'] = self._io.pos()
104
+ if self.version >= 3:
105
+ self._debug['build_id']['start'] = self._io.pos()
106
+ self.build_id = AndroidOpenglShadersCache.PrefixedString(self._io, self, self._root)
107
+ self.build_id._read()
108
+ self._debug['build_id']['end'] = self._io.pos()
109
+
110
+ self._debug['entries']['start'] = self._io.pos()
111
+ self.entries = [None] * (self.num_entries)
112
+ for i in range(self.num_entries):
113
+ if not 'arr' in self._debug['entries']:
114
+ self._debug['entries']['arr'] = []
115
+ self._debug['entries']['arr'].append({'start': self._io.pos()})
116
+ _t_entries = AndroidOpenglShadersCache.Cache.Entry(self._io, self, self._root)
117
+ _t_entries._read()
118
+ self.entries[i] = _t_entries
119
+ self._debug['entries']['arr'][i]['end'] = self._io.pos()
120
+
121
+ self._debug['entries']['end'] = self._io.pos()
122
+
123
+ class Entry(KaitaiStruct):
124
+ SEQ_FIELDS = ["len_key", "len_value", "key", "value", "alignment"]
125
+ def __init__(self, _io, _parent=None, _root=None):
126
+ self._io = _io
127
+ self._parent = _parent
128
+ self._root = _root if _root else self
129
+ self._debug = collections.defaultdict(dict)
130
+
131
+ def _read(self):
132
+ self._debug['len_key']['start'] = self._io.pos()
133
+ self.len_key = self._io.read_u4le()
134
+ self._debug['len_key']['end'] = self._io.pos()
135
+ self._debug['len_value']['start'] = self._io.pos()
136
+ self.len_value = self._io.read_u4le()
137
+ self._debug['len_value']['end'] = self._io.pos()
138
+ self._debug['key']['start'] = self._io.pos()
139
+ self.key = self._io.read_bytes(self.len_key)
140
+ self._debug['key']['end'] = self._io.pos()
141
+ self._debug['value']['start'] = self._io.pos()
142
+ self.value = self._io.read_bytes(self.len_value)
143
+ self._debug['value']['end'] = self._io.pos()
144
+ self._debug['alignment']['start'] = self._io.pos()
145
+ self.alignment = AndroidOpenglShadersCache.Alignment(self._io, self, self._root)
146
+ self.alignment._read()
147
+ self._debug['alignment']['end'] = self._io.pos()
148
+
149
+
150
+
151
+