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.
- polyfile/__init__.py +15 -0
- polyfile/__main__.py +394 -0
- polyfile/arithmetic.py +27 -0
- polyfile/ast.py +114 -0
- polyfile/debugger.py +1039 -0
- polyfile/expressions.py +346 -0
- polyfile/fileutils.py +343 -0
- polyfile/html.py +135 -0
- polyfile/http/__init__.py +1 -0
- polyfile/http/defacto.py +37 -0
- polyfile/http/deprecated.py +51 -0
- polyfile/http/experimental.py +67 -0
- polyfile/http/http_11.py +548 -0
- polyfile/http/matcher.py +37 -0
- polyfile/http/structured_headers.py +48 -0
- polyfile/iterators.py +72 -0
- polyfile/jpeg.py +24 -0
- polyfile/kaitai/__init__.py +0 -0
- polyfile/kaitai/compiler.py +156 -0
- polyfile/kaitai/parser.py +312 -0
- polyfile/kaitai/parsers/__init__.py +0 -0
- polyfile/kaitai/parsers/aix_utmp.py +116 -0
- polyfile/kaitai/parsers/allegro_dat.py +367 -0
- polyfile/kaitai/parsers/andes_firmware.py +64 -0
- polyfile/kaitai/parsers/android_bootldr_asus.py +105 -0
- polyfile/kaitai/parsers/android_bootldr_huawei.py +181 -0
- polyfile/kaitai/parsers/android_bootldr_qcom.py +217 -0
- polyfile/kaitai/parsers/android_dto.py +138 -0
- polyfile/kaitai/parsers/android_img.py +319 -0
- polyfile/kaitai/parsers/android_nanoapp_header.py +83 -0
- polyfile/kaitai/parsers/android_opengl_shaders_cache.py +151 -0
- polyfile/kaitai/parsers/android_sparse.py +237 -0
- polyfile/kaitai/parsers/android_super.py +401 -0
- polyfile/kaitai/parsers/apm_partition_table.py +196 -0
- polyfile/kaitai/parsers/apple_single_double.py +180 -0
- polyfile/kaitai/parsers/asn1_der.py +235 -0
- polyfile/kaitai/parsers/au.py +138 -0
- polyfile/kaitai/parsers/avantes_roh60.py +112 -0
- polyfile/kaitai/parsers/avi.py +296 -0
- polyfile/kaitai/parsers/bcd.py +111 -0
- polyfile/kaitai/parsers/bitcoin_transaction.py +210 -0
- polyfile/kaitai/parsers/blender_blend.py +334 -0
- polyfile/kaitai/parsers/bmp.py +780 -0
- polyfile/kaitai/parsers/bson.py +411 -0
- polyfile/kaitai/parsers/btrfs_stream.py +318 -0
- polyfile/kaitai/parsers/bytes_with_io.py +27 -0
- polyfile/kaitai/parsers/chrome_pak.py +194 -0
- polyfile/kaitai/parsers/code_6502.py +456 -0
- polyfile/kaitai/parsers/compressed_resource.py +217 -0
- polyfile/kaitai/parsers/cpio_old_le.py +154 -0
- polyfile/kaitai/parsers/cramfs.py +344 -0
- polyfile/kaitai/parsers/creative_voice_file.py +342 -0
- polyfile/kaitai/parsers/dbf.py +274 -0
- polyfile/kaitai/parsers/dcmp_0.py +664 -0
- polyfile/kaitai/parsers/dcmp_1.py +422 -0
- polyfile/kaitai/parsers/dcmp_2.py +312 -0
- polyfile/kaitai/parsers/dcmp_variable_length_integer.py +66 -0
- polyfile/kaitai/parsers/dex.py +1086 -0
- polyfile/kaitai/parsers/dicom.py +4370 -0
- polyfile/kaitai/parsers/dime_message.py +201 -0
- polyfile/kaitai/parsers/dns_packet.py +569 -0
- polyfile/kaitai/parsers/doom_wad.py +654 -0
- polyfile/kaitai/parsers/dos_datetime.py +191 -0
- polyfile/kaitai/parsers/dos_mz.py +172 -0
- polyfile/kaitai/parsers/ds_store.py +513 -0
- polyfile/kaitai/parsers/dtb.py +310 -0
- polyfile/kaitai/parsers/dune_2_pak.py +126 -0
- polyfile/kaitai/parsers/edid.py +472 -0
- polyfile/kaitai/parsers/efivar_signature_list.py +331 -0
- polyfile/kaitai/parsers/elf.py +2482 -0
- polyfile/kaitai/parsers/ethernet_frame.py +114 -0
- polyfile/kaitai/parsers/exif.py +723 -0
- polyfile/kaitai/parsers/ext2.py +537 -0
- polyfile/kaitai/parsers/fallout2_dat.py +187 -0
- polyfile/kaitai/parsers/fallout_dat.py +156 -0
- polyfile/kaitai/parsers/fasttracker_xm_module.py +558 -0
- polyfile/kaitai/parsers/ftl_dat.py +90 -0
- polyfile/kaitai/parsers/genmidi_op2.py +161 -0
- polyfile/kaitai/parsers/gettext_mo.py +541 -0
- polyfile/kaitai/parsers/gif.py +492 -0
- polyfile/kaitai/parsers/gimp_brush.py +244 -0
- polyfile/kaitai/parsers/glibc_utmp.py +114 -0
- polyfile/kaitai/parsers/gltf_binary.py +132 -0
- polyfile/kaitai/parsers/google_protobuf.py +151 -0
- polyfile/kaitai/parsers/gpt_partition_table.py +175 -0
- polyfile/kaitai/parsers/gran_turismo_vol.py +140 -0
- polyfile/kaitai/parsers/grub2_font.py +337 -0
- polyfile/kaitai/parsers/gzip.py +232 -0
- polyfile/kaitai/parsers/hashcat_restore.py +60 -0
- polyfile/kaitai/parsers/hccap.py +111 -0
- polyfile/kaitai/parsers/hccapx.py +103 -0
- polyfile/kaitai/parsers/heaps_pak.py +177 -0
- polyfile/kaitai/parsers/heroes_of_might_and_magic_agg.py +116 -0
- polyfile/kaitai/parsers/heroes_of_might_and_magic_bmp.py +34 -0
- polyfile/kaitai/parsers/icmp_packet.py +136 -0
- polyfile/kaitai/parsers/ico.py +129 -0
- polyfile/kaitai/parsers/id3v1_1.py +220 -0
- polyfile/kaitai/parsers/id3v2_3.py +324 -0
- polyfile/kaitai/parsers/id3v2_4.py +423 -0
- polyfile/kaitai/parsers/ines.py +282 -0
- polyfile/kaitai/parsers/ipv4_packet.py +158 -0
- polyfile/kaitai/parsers/ipv6_packet.py +55 -0
- polyfile/kaitai/parsers/iso9660.py +544 -0
- polyfile/kaitai/parsers/java_class.py +1113 -0
- polyfile/kaitai/parsers/jpeg.py +361 -0
- polyfile/kaitai/parsers/luks.py +149 -0
- polyfile/kaitai/parsers/lzh.py +165 -0
- polyfile/kaitai/parsers/mac_os_resource_snd.py +493 -0
- polyfile/kaitai/parsers/mach_o.py +3033 -0
- polyfile/kaitai/parsers/mach_o_fat.py +92 -0
- polyfile/kaitai/parsers/magicavoxel_vox.py +391 -0
- polyfile/kaitai/parsers/manifest.json +1 -0
- polyfile/kaitai/parsers/mbr_partition_table.py +119 -0
- polyfile/kaitai/parsers/mcap.py +1015 -0
- polyfile/kaitai/parsers/microsoft_cfb.py +293 -0
- polyfile/kaitai/parsers/microsoft_network_monitor_v2.py +309 -0
- polyfile/kaitai/parsers/microsoft_pe.py +765 -0
- polyfile/kaitai/parsers/mifare_classic.py +706 -0
- polyfile/kaitai/parsers/minecraft_nbt.py +449 -0
- polyfile/kaitai/parsers/monomakh_sapr_chg.py +69 -0
- polyfile/kaitai/parsers/mozilla_mar.py +239 -0
- polyfile/kaitai/parsers/mp4.py +333 -0
- polyfile/kaitai/parsers/msgpack.py +467 -0
- polyfile/kaitai/parsers/nitf.py +1189 -0
- polyfile/kaitai/parsers/nt_mdt_pal.py +155 -0
- polyfile/kaitai/parsers/ogg.py +118 -0
- polyfile/kaitai/parsers/openpgp_message.py +993 -0
- polyfile/kaitai/parsers/packet_ppi.py +515 -0
- polyfile/kaitai/parsers/pcap.py +344 -0
- polyfile/kaitai/parsers/pcf_font.py +506 -0
- polyfile/kaitai/parsers/pcx.py +195 -0
- polyfile/kaitai/parsers/pcx_dcx.py +79 -0
- polyfile/kaitai/parsers/phar_without_stub.py +399 -0
- polyfile/kaitai/parsers/php_serialized_value.py +505 -0
- polyfile/kaitai/parsers/png.py +721 -0
- polyfile/kaitai/parsers/protocol_body.py +260 -0
- polyfile/kaitai/parsers/psx_tim.py +104 -0
- polyfile/kaitai/parsers/python_pickle.py +718 -0
- polyfile/kaitai/parsers/python_pyc_27.py +510 -0
- polyfile/kaitai/parsers/quake_mdl.py +441 -0
- polyfile/kaitai/parsers/quake_pak.py +112 -0
- polyfile/kaitai/parsers/quicktime_mov.py +634 -0
- polyfile/kaitai/parsers/rar.py +265 -0
- polyfile/kaitai/parsers/regf.py +569 -0
- polyfile/kaitai/parsers/renderware_binary_stream.py +877 -0
- polyfile/kaitai/parsers/resource_fork.py +611 -0
- polyfile/kaitai/parsers/respack.py +57 -0
- polyfile/kaitai/parsers/riff.py +409 -0
- polyfile/kaitai/parsers/rpm.py +964 -0
- polyfile/kaitai/parsers/rtcp_payload.py +579 -0
- polyfile/kaitai/parsers/rtp_packet.py +150 -0
- polyfile/kaitai/parsers/rtpdump.py +115 -0
- polyfile/kaitai/parsers/ruby_marshal.py +423 -0
- polyfile/kaitai/parsers/s3m.py +493 -0
- polyfile/kaitai/parsers/saints_row_2_vpp_pc.py +254 -0
- polyfile/kaitai/parsers/shapefile_index.py +174 -0
- polyfile/kaitai/parsers/shapefile_main.py +893 -0
- polyfile/kaitai/parsers/some_ip.py +209 -0
- polyfile/kaitai/parsers/some_ip_container.py +37 -0
- polyfile/kaitai/parsers/some_ip_sd.py +86 -0
- polyfile/kaitai/parsers/some_ip_sd_entries.py +160 -0
- polyfile/kaitai/parsers/some_ip_sd_options.py +374 -0
- polyfile/kaitai/parsers/specpr.py +404 -0
- polyfile/kaitai/parsers/sqlite3.py +472 -0
- polyfile/kaitai/parsers/ssh_public_key.py +252 -0
- polyfile/kaitai/parsers/standard_midi_file.py +390 -0
- polyfile/kaitai/parsers/stl.py +111 -0
- polyfile/kaitai/parsers/sudoers_ts.py +201 -0
- polyfile/kaitai/parsers/swf.py +406 -0
- polyfile/kaitai/parsers/systemd_journal.py +361 -0
- polyfile/kaitai/parsers/tcp_segment.py +57 -0
- polyfile/kaitai/parsers/tga.py +213 -0
- polyfile/kaitai/parsers/tls_client_hello.py +293 -0
- polyfile/kaitai/parsers/tr_dos_image.py +322 -0
- polyfile/kaitai/parsers/tsm.py +198 -0
- polyfile/kaitai/parsers/ttf.py +1847 -0
- polyfile/kaitai/parsers/udp_datagram.py +42 -0
- polyfile/kaitai/parsers/uefi_te.py +236 -0
- polyfile/kaitai/parsers/uimage.py +198 -0
- polyfile/kaitai/parsers/utf8_string.py +137 -0
- polyfile/kaitai/parsers/vfat.py +410 -0
- polyfile/kaitai/parsers/vlq_base128_be.py +104 -0
- polyfile/kaitai/parsers/vlq_base128_le.py +129 -0
- polyfile/kaitai/parsers/vmware_vmdk.py +167 -0
- polyfile/kaitai/parsers/vp8_ivf.py +112 -0
- polyfile/kaitai/parsers/warcraft_2_pud.py +423 -0
- polyfile/kaitai/parsers/wav.py +1014 -0
- polyfile/kaitai/parsers/websocket.py +167 -0
- polyfile/kaitai/parsers/windows_evt_log.py +304 -0
- polyfile/kaitai/parsers/windows_lnk_file.py +467 -0
- polyfile/kaitai/parsers/windows_minidump.py +575 -0
- polyfile/kaitai/parsers/windows_resource_file.py +243 -0
- polyfile/kaitai/parsers/windows_shell_items.py +190 -0
- polyfile/kaitai/parsers/windows_systemtime.py +52 -0
- polyfile/kaitai/parsers/wmf.py +502 -0
- polyfile/kaitai/parsers/xar.py +181 -0
- polyfile/kaitai/parsers/xwd.py +189 -0
- polyfile/kaitai/parsers/zip.py +685 -0
- polyfile/kaitai/parsers/zisofs.py +158 -0
- polyfile/kaitai/parsers/zx_spectrum_tap.py +184 -0
- polyfile/kaitaimatcher.py +113 -0
- polyfile/languagematcher.py +217 -0
- polyfile/logger.py +135 -0
- polyfile/magic.py +2983 -0
- polyfile/magic_defs/COPYING +29 -0
- polyfile/magic_defs/__init__.py +0 -0
- polyfile/magic_defs/acorn +102 -0
- polyfile/magic_defs/adi +13 -0
- polyfile/magic_defs/adventure +122 -0
- polyfile/magic_defs/aes +29 -0
- polyfile/magic_defs/algol68 +35 -0
- polyfile/magic_defs/allegro +9 -0
- polyfile/magic_defs/alliant +18 -0
- polyfile/magic_defs/alpha +32 -0
- polyfile/magic_defs/amanda +12 -0
- polyfile/magic_defs/amigaos +218 -0
- polyfile/magic_defs/android +259 -0
- polyfile/magic_defs/animation +1197 -0
- polyfile/magic_defs/aout +46 -0
- polyfile/magic_defs/apache +28 -0
- polyfile/magic_defs/apl +7 -0
- polyfile/magic_defs/apple +773 -0
- polyfile/magic_defs/application +7 -0
- polyfile/magic_defs/applix +13 -0
- polyfile/magic_defs/apt +52 -0
- polyfile/magic_defs/archive +2586 -0
- polyfile/magic_defs/aria +38 -0
- polyfile/magic_defs/arm +50 -0
- polyfile/magic_defs/asf +132 -0
- polyfile/magic_defs/assembler +18 -0
- polyfile/magic_defs/asterix +18 -0
- polyfile/magic_defs/att3b +41 -0
- polyfile/magic_defs/audio +1291 -0
- polyfile/magic_defs/avm +33 -0
- polyfile/magic_defs/basis +18 -0
- polyfile/magic_defs/beetle +7 -0
- polyfile/magic_defs/ber +65 -0
- polyfile/magic_defs/bflt +14 -0
- polyfile/magic_defs/bhl +10 -0
- polyfile/magic_defs/bioinformatics +178 -0
- polyfile/magic_defs/biosig +154 -0
- polyfile/magic_defs/blackberry +8 -0
- polyfile/magic_defs/blcr +25 -0
- polyfile/magic_defs/blender +50 -0
- polyfile/magic_defs/blit +24 -0
- polyfile/magic_defs/bm +10 -0
- polyfile/magic_defs/bout +11 -0
- polyfile/magic_defs/bsdi +33 -0
- polyfile/magic_defs/bsi +10 -0
- polyfile/magic_defs/btsnoop +13 -0
- polyfile/magic_defs/burp +7 -0
- polyfile/magic_defs/bytecode +41 -0
- polyfile/magic_defs/c-lang +110 -0
- polyfile/magic_defs/c64 +531 -0
- polyfile/magic_defs/cad +437 -0
- polyfile/magic_defs/cafebabe +107 -0
- polyfile/magic_defs/cbor +21 -0
- polyfile/magic_defs/ccf +14 -0
- polyfile/magic_defs/cddb +12 -0
- polyfile/magic_defs/chord +15 -0
- polyfile/magic_defs/cisco +12 -0
- polyfile/magic_defs/citrus +12 -0
- polyfile/magic_defs/clarion +27 -0
- polyfile/magic_defs/claris +48 -0
- polyfile/magic_defs/clipper +65 -0
- polyfile/magic_defs/clojure +30 -0
- polyfile/magic_defs/coff +98 -0
- polyfile/magic_defs/commands +201 -0
- polyfile/magic_defs/communications +22 -0
- polyfile/magic_defs/compress +461 -0
- polyfile/magic_defs/console +1213 -0
- polyfile/magic_defs/convex +69 -0
- polyfile/magic_defs/coverage +91 -0
- polyfile/magic_defs/cracklib +14 -0
- polyfile/magic_defs/crypto +31 -0
- polyfile/magic_defs/csv +8 -0
- polyfile/magic_defs/ctags +6 -0
- polyfile/magic_defs/ctf +23 -0
- polyfile/magic_defs/cubemap +8 -0
- polyfile/magic_defs/cups +56 -0
- polyfile/magic_defs/dact +11 -0
- polyfile/magic_defs/database +886 -0
- polyfile/magic_defs/dataone +47 -0
- polyfile/magic_defs/dbpf +15 -0
- polyfile/magic_defs/der +146 -0
- polyfile/magic_defs/diamond +12 -0
- polyfile/magic_defs/dif +33 -0
- polyfile/magic_defs/diff +41 -0
- polyfile/magic_defs/digital +59 -0
- polyfile/magic_defs/dolby +69 -0
- polyfile/magic_defs/dsf +25 -0
- polyfile/magic_defs/dump +96 -0
- polyfile/magic_defs/dwarfs +45 -0
- polyfile/magic_defs/dyadic +61 -0
- polyfile/magic_defs/ebml +8 -0
- polyfile/magic_defs/edid +11 -0
- polyfile/magic_defs/editors +43 -0
- polyfile/magic_defs/efi +15 -0
- polyfile/magic_defs/elf +379 -0
- polyfile/magic_defs/encore +22 -0
- polyfile/magic_defs/epoc +62 -0
- polyfile/magic_defs/erlang +21 -0
- polyfile/magic_defs/espressif +57 -0
- polyfile/magic_defs/esri +28 -0
- polyfile/magic_defs/etf +33 -0
- polyfile/magic_defs/fcs +9 -0
- polyfile/magic_defs/filesystems +2694 -0
- polyfile/magic_defs/finger +16 -0
- polyfile/magic_defs/firmware +133 -0
- polyfile/magic_defs/flash +62 -0
- polyfile/magic_defs/flif +36 -0
- polyfile/magic_defs/fonts +449 -0
- polyfile/magic_defs/forth +82 -0
- polyfile/magic_defs/fortran +9 -0
- polyfile/magic_defs/frame +62 -0
- polyfile/magic_defs/freebsd +164 -0
- polyfile/magic_defs/fsav +128 -0
- polyfile/magic_defs/fusecompress +12 -0
- polyfile/magic_defs/games +696 -0
- polyfile/magic_defs/gcc +17 -0
- polyfile/magic_defs/gconv +10 -0
- polyfile/magic_defs/gentoo +85 -0
- polyfile/magic_defs/geo +166 -0
- polyfile/magic_defs/geos +20 -0
- polyfile/magic_defs/gimp +77 -0
- polyfile/magic_defs/git +13 -0
- polyfile/magic_defs/glibc +21 -0
- polyfile/magic_defs/gnome +59 -0
- polyfile/magic_defs/gnu +173 -0
- polyfile/magic_defs/gnumeric +8 -0
- polyfile/magic_defs/gpt +240 -0
- polyfile/magic_defs/gpu +28 -0
- polyfile/magic_defs/grace +21 -0
- polyfile/magic_defs/graphviz +12 -0
- polyfile/magic_defs/gringotts +48 -0
- polyfile/magic_defs/guile +13 -0
- polyfile/magic_defs/hardware +12 -0
- polyfile/magic_defs/hitachi-sh +30 -0
- polyfile/magic_defs/hp +433 -0
- polyfile/magic_defs/human68k +26 -0
- polyfile/magic_defs/ibm370 +52 -0
- polyfile/magic_defs/ibm6000 +35 -0
- polyfile/magic_defs/icc +214 -0
- polyfile/magic_defs/iff +80 -0
- polyfile/magic_defs/images +4210 -0
- polyfile/magic_defs/inform +9 -0
- polyfile/magic_defs/intel +310 -0
- polyfile/magic_defs/interleaf +9 -0
- polyfile/magic_defs/island +10 -0
- polyfile/magic_defs/ispell +63 -0
- polyfile/magic_defs/isz +15 -0
- polyfile/magic_defs/java +52 -0
- polyfile/magic_defs/javascript +171 -0
- polyfile/magic_defs/jpeg +252 -0
- polyfile/magic_defs/json +8 -0
- polyfile/magic_defs/karma +9 -0
- polyfile/magic_defs/kde +11 -0
- polyfile/magic_defs/keepass +20 -0
- polyfile/magic_defs/kerberos +45 -0
- polyfile/magic_defs/kicad +85 -0
- polyfile/magic_defs/kml +34 -0
- polyfile/magic_defs/lammps +64 -0
- polyfile/magic_defs/lecter +6 -0
- polyfile/magic_defs/lex +12 -0
- polyfile/magic_defs/lif +50 -0
- polyfile/magic_defs/linux +557 -0
- polyfile/magic_defs/lisp +78 -0
- polyfile/magic_defs/llvm +22 -0
- polyfile/magic_defs/locoscript +12 -0
- polyfile/magic_defs/lua +31 -0
- polyfile/magic_defs/luks +126 -0
- polyfile/magic_defs/m4 +11 -0
- polyfile/magic_defs/mach +303 -0
- polyfile/magic_defs/macintosh +505 -0
- polyfile/magic_defs/macos +7 -0
- polyfile/magic_defs/magic +10 -0
- polyfile/magic_defs/magic.mgc +0 -0
- polyfile/magic_defs/mail.news +132 -0
- polyfile/magic_defs/make +21 -0
- polyfile/magic_defs/map +413 -0
- polyfile/magic_defs/maple +109 -0
- polyfile/magic_defs/marc21 +30 -0
- polyfile/magic_defs/mathcad +8 -0
- polyfile/magic_defs/mathematica +188 -0
- polyfile/magic_defs/matroska +17 -0
- polyfile/magic_defs/mcrypt +52 -0
- polyfile/magic_defs/measure +44 -0
- polyfile/magic_defs/mercurial +13 -0
- polyfile/magic_defs/metastore +8 -0
- polyfile/magic_defs/meteorological +53 -0
- polyfile/magic_defs/microfocus +21 -0
- polyfile/magic_defs/mime +9 -0
- polyfile/magic_defs/mips +120 -0
- polyfile/magic_defs/mirage +8 -0
- polyfile/magic_defs/misctools +140 -0
- polyfile/magic_defs/mkid +11 -0
- polyfile/magic_defs/mlssa +8 -0
- polyfile/magic_defs/mmdf +6 -0
- polyfile/magic_defs/modem +92 -0
- polyfile/magic_defs/modulefile +9 -0
- polyfile/magic_defs/motorola +71 -0
- polyfile/magic_defs/mozilla +37 -0
- polyfile/magic_defs/msdos +2304 -0
- polyfile/magic_defs/msooxml +68 -0
- polyfile/magic_defs/msvc +222 -0
- polyfile/magic_defs/msx +309 -0
- polyfile/magic_defs/mup +24 -0
- polyfile/magic_defs/music +17 -0
- polyfile/magic_defs/nasa +7 -0
- polyfile/magic_defs/natinst +24 -0
- polyfile/magic_defs/ncr +49 -0
- polyfile/magic_defs/neko +12 -0
- polyfile/magic_defs/netbsd +251 -0
- polyfile/magic_defs/netscape +26 -0
- polyfile/magic_defs/netware +11 -0
- polyfile/magic_defs/news +13 -0
- polyfile/magic_defs/nifty +202 -0
- polyfile/magic_defs/nim-lang +29 -0
- polyfile/magic_defs/nitpicker +14 -0
- polyfile/magic_defs/numpy +9 -0
- polyfile/magic_defs/oasis +12 -0
- polyfile/magic_defs/ocaml +14 -0
- polyfile/magic_defs/octave +6 -0
- polyfile/magic_defs/ole2compounddocs +760 -0
- polyfile/magic_defs/olf +98 -0
- polyfile/magic_defs/openfst +17 -0
- polyfile/magic_defs/opentimestamps +16 -0
- polyfile/magic_defs/oric +16 -0
- polyfile/magic_defs/os2 +186 -0
- polyfile/magic_defs/os400 +39 -0
- polyfile/magic_defs/os9 +80 -0
- polyfile/magic_defs/osf1 +10 -0
- polyfile/magic_defs/palm +156 -0
- polyfile/magic_defs/parix +13 -0
- polyfile/magic_defs/parrot +22 -0
- polyfile/magic_defs/pascal +39 -0
- polyfile/magic_defs/pbf +11 -0
- polyfile/magic_defs/pbm +8 -0
- polyfile/magic_defs/pc88 +24 -0
- polyfile/magic_defs/pc98 +77 -0
- polyfile/magic_defs/pci_ids +116 -0
- polyfile/magic_defs/pcjr +8 -0
- polyfile/magic_defs/pdf +51 -0
- polyfile/magic_defs/pdp +42 -0
- polyfile/magic_defs/perl +100 -0
- polyfile/magic_defs/pgf +52 -0
- polyfile/magic_defs/pgp +581 -0
- polyfile/magic_defs/pgp-binary-keys +388 -0
- polyfile/magic_defs/pkgadd +7 -0
- polyfile/magic_defs/plan9 +25 -0
- polyfile/magic_defs/playdate +57 -0
- polyfile/magic_defs/plus5 +18 -0
- polyfile/magic_defs/pmem +46 -0
- polyfile/magic_defs/polyfile_zip +5 -0
- polyfile/magic_defs/polyml +23 -0
- polyfile/magic_defs/printer +269 -0
- polyfile/magic_defs/project +10 -0
- polyfile/magic_defs/psdbms +14 -0
- polyfile/magic_defs/psl +14 -0
- polyfile/magic_defs/pulsar +13 -0
- polyfile/magic_defs/puzzle +17 -0
- polyfile/magic_defs/pwsafe +14 -0
- polyfile/magic_defs/pyramid +12 -0
- polyfile/magic_defs/python +305 -0
- polyfile/magic_defs/qt +30 -0
- polyfile/magic_defs/revision +66 -0
- polyfile/magic_defs/riff +840 -0
- polyfile/magic_defs/rinex +44 -0
- polyfile/magic_defs/ringdove +45 -0
- polyfile/magic_defs/rpi +52 -0
- polyfile/magic_defs/rpm +45 -0
- polyfile/magic_defs/rpmsg +7 -0
- polyfile/magic_defs/rst +11 -0
- polyfile/magic_defs/rtf +94 -0
- polyfile/magic_defs/ruby +55 -0
- polyfile/magic_defs/rust +21 -0
- polyfile/magic_defs/sc +7 -0
- polyfile/magic_defs/sccs +24 -0
- polyfile/magic_defs/scientific +144 -0
- polyfile/magic_defs/securitycerts +6 -0
- polyfile/magic_defs/selinux +24 -0
- polyfile/magic_defs/sendmail +37 -0
- polyfile/magic_defs/sequent +42 -0
- polyfile/magic_defs/sereal +35 -0
- polyfile/magic_defs/sgi +144 -0
- polyfile/magic_defs/sgml +161 -0
- polyfile/magic_defs/sharc +23 -0
- polyfile/magic_defs/sinclair +40 -0
- polyfile/magic_defs/sisu +18 -0
- polyfile/magic_defs/sketch +6 -0
- polyfile/magic_defs/smalltalk +25 -0
- polyfile/magic_defs/smile +34 -0
- polyfile/magic_defs/sniffer +482 -0
- polyfile/magic_defs/softquad +40 -0
- polyfile/magic_defs/sosi +40 -0
- polyfile/magic_defs/spec +21 -0
- polyfile/magic_defs/spectrum +184 -0
- polyfile/magic_defs/sql +288 -0
- polyfile/magic_defs/ssh +39 -0
- polyfile/magic_defs/ssl +20 -0
- polyfile/magic_defs/statistics +45 -0
- polyfile/magic_defs/subtitle +38 -0
- polyfile/magic_defs/sun +141 -0
- polyfile/magic_defs/svf +5 -0
- polyfile/magic_defs/sylk +36 -0
- polyfile/magic_defs/symbos +42 -0
- polyfile/magic_defs/sysex +429 -0
- polyfile/magic_defs/tcl +29 -0
- polyfile/magic_defs/teapot +6 -0
- polyfile/magic_defs/terminfo +63 -0
- polyfile/magic_defs/tex +141 -0
- polyfile/magic_defs/tgif +7 -0
- polyfile/magic_defs/ti-8x +239 -0
- polyfile/magic_defs/timezone +42 -0
- polyfile/magic_defs/tplink +95 -0
- polyfile/magic_defs/troff +38 -0
- polyfile/magic_defs/tuxedo +8 -0
- polyfile/magic_defs/typeset +8 -0
- polyfile/magic_defs/uf2 +72 -0
- polyfile/magic_defs/unicode +15 -0
- polyfile/magic_defs/unisig +12 -0
- polyfile/magic_defs/unknown +34 -0
- polyfile/magic_defs/usd +21 -0
- polyfile/magic_defs/uterus +16 -0
- polyfile/magic_defs/uuencode +28 -0
- polyfile/magic_defs/vacuum-cleaner +54 -0
- polyfile/magic_defs/varied.out +46 -0
- polyfile/magic_defs/varied.script +21 -0
- polyfile/magic_defs/vax +32 -0
- polyfile/magic_defs/vicar +17 -0
- polyfile/magic_defs/virtual +307 -0
- polyfile/magic_defs/virtutech +12 -0
- polyfile/magic_defs/visx +32 -0
- polyfile/magic_defs/vms +30 -0
- polyfile/magic_defs/vmware +6 -0
- polyfile/magic_defs/vorbis +155 -0
- polyfile/magic_defs/vxl +14 -0
- polyfile/magic_defs/warc +16 -0
- polyfile/magic_defs/weak +16 -0
- polyfile/magic_defs/web +18 -0
- polyfile/magic_defs/webassembly +17 -0
- polyfile/magic_defs/windows +1811 -0
- polyfile/magic_defs/wireless +7 -0
- polyfile/magic_defs/wordprocessors +630 -0
- polyfile/magic_defs/wsdl +23 -0
- polyfile/magic_defs/x68000 +25 -0
- polyfile/magic_defs/xdelta +13 -0
- polyfile/magic_defs/xenix +106 -0
- polyfile/magic_defs/xilinx +58 -0
- polyfile/magic_defs/xo65 +37 -0
- polyfile/magic_defs/xwindows +43 -0
- polyfile/magic_defs/yara +17 -0
- polyfile/magic_defs/zfs +96 -0
- polyfile/magic_defs/zilog +12 -0
- polyfile/magic_defs/zip +126 -0
- polyfile/magic_defs/zyxel +17 -0
- polyfile/nes.py +144 -0
- polyfile/nitf.py +15 -0
- polyfile/pdf.py +1264 -0
- polyfile/pickles.py +45 -0
- polyfile/polyfile.py +409 -0
- polyfile/profiling.py +115 -0
- polyfile/repl.py +624 -0
- polyfile/search.py +310 -0
- polyfile/serialization.py +323 -0
- polyfile/structmatcher.py +46 -0
- polyfile/structs.py +281 -0
- polyfile/templates/download.js +162 -0
- polyfile/templates/hexdump.css +268 -0
- polyfile/templates/hexdump.js +756 -0
- polyfile/templates/jquery-3.4.1.min.js +2 -0
- polyfile/templates/template.html +119 -0
- polyfile/wildcards.py +62 -0
- polyfile/zipmatcher.py +183 -0
- polyfile_weave-0.5.5.dist-info/METADATA +173 -0
- polyfile_weave-0.5.5.dist-info/RECORD +585 -0
- polyfile_weave-0.5.5.dist-info/WHEEL +5 -0
- polyfile_weave-0.5.5.dist-info/entry_points.txt +2 -0
- polyfile_weave-0.5.5.dist-info/licenses/LICENSE +202 -0
- polyfile_weave-0.5.5.dist-info/top_level.txt +2 -0
- polymerge/__init__.py +1 -0
- polymerge/__main__.py +296 -0
- polymerge/cfg.py +127 -0
- polymerge/polymerge.py +227 -0
- polymerge/polytracker.py +190 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
#------------------------------------------------------------------------------
|
|
3
|
+
# $File: xdelta,v 1.5 2011/08/08 09:01:05 christos Exp $
|
|
4
|
+
# file(1) magic(5) data for xdelta Josh MacDonald <jmacd@CS.Berkeley.EDU>
|
|
5
|
+
#
|
|
6
|
+
0 string %XDELTA% XDelta binary patch file 0.14
|
|
7
|
+
0 string %XDZ000% XDelta binary patch file 0.18
|
|
8
|
+
0 string %XDZ001% XDelta binary patch file 0.20
|
|
9
|
+
0 string %XDZ002% XDelta binary patch file 1.0
|
|
10
|
+
0 string %XDZ003% XDelta binary patch file 1.0.4
|
|
11
|
+
0 string %XDZ004% XDelta binary patch file 1.1
|
|
12
|
+
|
|
13
|
+
0 string \xD6\xC3\xC4\x00 VCDIFF binary diff
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
|
|
2
|
+
#------------------------------------------------------------------------------
|
|
3
|
+
# $File: xenix,v 1.15 2022/10/19 20:15:16 christos Exp $
|
|
4
|
+
# xenix: file(1) magic for Microsoft Xenix
|
|
5
|
+
#
|
|
6
|
+
# "Middle model" stuff, and "Xenix 8086 relocatable or 80286 small
|
|
7
|
+
# model" lifted from "magic.xenix", with comment "derived empirically;
|
|
8
|
+
# treat as folklore until proven"
|
|
9
|
+
#
|
|
10
|
+
# "small model", "large model", "huge model" stuff lifted from XXX
|
|
11
|
+
#
|
|
12
|
+
# XXX - "x.out" collides with PDP-11 archives
|
|
13
|
+
#
|
|
14
|
+
0 string core core file (Xenix)
|
|
15
|
+
# URL: http://www.polarhome.com/service/man/?qf=86rel&tf=2&of=Xenix
|
|
16
|
+
# http://fileformats.archiveteam.org/wiki/OMF
|
|
17
|
+
# Reference: http://www.azillionmonkeys.com/qed/Omfg.pdf
|
|
18
|
+
# Update: Joerg Jenderek
|
|
19
|
+
# recordtype~TranslatorHEADerRecord
|
|
20
|
+
0 byte 0x80
|
|
21
|
+
# GRR: line above is too general as it catches also Extensible storage engine DataBase,
|
|
22
|
+
# all lif files like forth.lif hpcc88.lif lex90b.lif ( See ./lif)
|
|
23
|
+
# and all compressed DEGAS low-res bitmaps like: MUNCHIE.PC1 PIDER1.PC1
|
|
24
|
+
# skip examples like GENA.SND Switch.Snd by looking for record length maximal 1024-3
|
|
25
|
+
>1 uleshort <1022
|
|
26
|
+
# skip examples like GAME.PICTURE Strange.Pic by looking for positive record length
|
|
27
|
+
>>1 uleshort >0
|
|
28
|
+
# skip examples like Xtable.Data FRACTAL.GEN SHR.VIEW by looking for positive string length
|
|
29
|
+
>>>3 ubyte >0
|
|
30
|
+
# skip examples like OMBRE.6 with "UUUUUU" name by looking for valid high second record type
|
|
31
|
+
>>>>(1.s+3) ubyte >0x6D
|
|
32
|
+
# skip few Atari DEGAS bitmap TPDEMO.PC2 RECIPE.PC2 with invalid "high" second record type FEh FFh
|
|
33
|
+
>>>>>(1.s+3) ubyte <0xF2 8086 relocatable (Microsoft)
|
|
34
|
+
#!:mime application/octet-stream
|
|
35
|
+
!:mime application/x-object
|
|
36
|
+
!:ext obj/o/a
|
|
37
|
+
# T-module name often source name like "hello.c" or "jmppm32.asm" in JMPPM32.OBJ or
|
|
38
|
+
# "kbhit" in KBHITS.OBJ or "CAUSEWAY_KERNAL" in CWAPI.OBJ
|
|
39
|
+
>>>>>>3 pstring x \b, "%s"
|
|
40
|
+
# data length probably lower 256 according to TrID obj_omf.trid.xml
|
|
41
|
+
>>>>>>1 uleshort x \b, 1st record data length %u
|
|
42
|
+
# checksum
|
|
43
|
+
#>>>>>>(3.b+4) ubyte x \b, checksum %#2.2x
|
|
44
|
+
# second recordtype: 96h~LNAMES 88h~COMENT 8CH~EXTDEF
|
|
45
|
+
# highest F1h~Library End Record
|
|
46
|
+
>>>>>>(1.s+3) ubyte x \b, 2nd record type %#x
|
|
47
|
+
>>>>>>(1.s+4) uleshort x \b, 2nd record data length %u
|
|
48
|
+
0 leshort 0xff65 x.out
|
|
49
|
+
>2 string __.SYMDEF randomized
|
|
50
|
+
>0 byte x archive
|
|
51
|
+
0 leshort 0x206 Microsoft a.out
|
|
52
|
+
>8 leshort 1 Middle model
|
|
53
|
+
>0x1e leshort &0x10 overlay
|
|
54
|
+
>0x1e leshort &0x2 separate
|
|
55
|
+
>0x1e leshort &0x4 pure
|
|
56
|
+
>0x1e leshort &0x800 segmented
|
|
57
|
+
>0x1e leshort &0x400 standalone
|
|
58
|
+
>0x1e leshort &0x8 fixed-stack
|
|
59
|
+
>0x1c byte &0x80 byte-swapped
|
|
60
|
+
>0x1c byte &0x40 word-swapped
|
|
61
|
+
>0x10 lelong >0 not-stripped
|
|
62
|
+
>0x1e leshort ^0xc000 pre-SysV
|
|
63
|
+
>0x1e leshort &0x4000 V2.3
|
|
64
|
+
>0x1e leshort &0x8000 V3.0
|
|
65
|
+
>0x1c byte &0x4 86
|
|
66
|
+
>0x1c byte &0xb 186
|
|
67
|
+
>0x1c byte &0x9 286
|
|
68
|
+
>0x1c byte &0xa 386
|
|
69
|
+
>0x1f byte <0x040 small model
|
|
70
|
+
>0x1f byte =0x048 large model
|
|
71
|
+
>0x1f byte =0x049 huge model
|
|
72
|
+
>0x1e leshort &0x1 executable
|
|
73
|
+
>0x1e leshort ^0x1 object file
|
|
74
|
+
>0x1e leshort &0x40 Large Text
|
|
75
|
+
>0x1e leshort &0x20 Large Data
|
|
76
|
+
>0x1e leshort &0x120 Huge Objects Enabled
|
|
77
|
+
>0x10 lelong >0 not stripped
|
|
78
|
+
|
|
79
|
+
0 leshort 0x140 old Microsoft 8086 x.out
|
|
80
|
+
>0x3 byte &0x4 separate
|
|
81
|
+
>0x3 byte &0x2 pure
|
|
82
|
+
>0 byte &0x1 executable
|
|
83
|
+
>0 byte ^0x1 relocatable
|
|
84
|
+
>0x14 lelong >0 not stripped
|
|
85
|
+
|
|
86
|
+
0 lelong 0x206 b.out
|
|
87
|
+
>0x1e leshort &0x10 overlay
|
|
88
|
+
>0x1e leshort &0x2 separate
|
|
89
|
+
>0x1e leshort &0x4 pure
|
|
90
|
+
>0x1e leshort &0x800 segmented
|
|
91
|
+
>0x1e leshort &0x400 standalone
|
|
92
|
+
>0x1e leshort &0x1 executable
|
|
93
|
+
>0x1e leshort ^0x1 object file
|
|
94
|
+
>0x1e leshort &0x4000 V2.3
|
|
95
|
+
>0x1e leshort &0x8000 V3.0
|
|
96
|
+
>0x1c byte &0x4 86
|
|
97
|
+
>0x1c byte &0xb 186
|
|
98
|
+
>0x1c byte &0x9 286
|
|
99
|
+
>0x1c byte &0x29 286
|
|
100
|
+
>0x1c byte &0xa 386
|
|
101
|
+
>0x1e leshort &0x4 Large Text
|
|
102
|
+
>0x1e leshort &0x2 Large Data
|
|
103
|
+
>0x1e leshort &0x102 Huge Objects Enabled
|
|
104
|
+
|
|
105
|
+
0 leshort 0x580 XENIX 8086 relocatable or 80286 small model
|
|
106
|
+
# GRR: line above is too general as it catches also all 8086 relocatable (Microsoft) with 1st record data length 5 C0M.OBJ C0T.OBJ C0S.OBJ
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
|
|
2
|
+
#------------------------------------------------------------------------------
|
|
3
|
+
# $File: xilinx,v 1.10 2022/12/18 14:59:32 christos Exp $
|
|
4
|
+
# This is Aaron's attempt at a MAGIC file for Xilinx .bit files.
|
|
5
|
+
# Xilinx-Magic@RevRagnarok.com
|
|
6
|
+
# Got the info from FPGA-FAQ 0026
|
|
7
|
+
#
|
|
8
|
+
# Rewritten to use pstring/H instead of hardcoded lengths by O. Freyermuth,
|
|
9
|
+
# fixes at least reading of bitfiles from Spartan 2, 3, 6.
|
|
10
|
+
# http://www.fpga-faq.com/FAQ_Pages/0026_Tell_me_about_bit_files.htm
|
|
11
|
+
#
|
|
12
|
+
# First there is the sync header and its length
|
|
13
|
+
0 beshort 0x0009
|
|
14
|
+
>2 belong =0x0ff00ff0
|
|
15
|
+
>>&0 belong =0x0ff00ff0
|
|
16
|
+
>>>&0 byte =0x00
|
|
17
|
+
>>>&1 beshort =0x0001
|
|
18
|
+
>>>&3 string a Xilinx BIT data
|
|
19
|
+
# Next is a Pascal-style string with the NCD name. We want to capture that.
|
|
20
|
+
>>>>&0 pstring/H x - from %s
|
|
21
|
+
# And then 'b'
|
|
22
|
+
>>>>>&1 string b
|
|
23
|
+
# Then the model / part number:
|
|
24
|
+
>>>>>>&0 pstring/H x - for %s
|
|
25
|
+
# Then 'c'
|
|
26
|
+
>>>>>>>&1 string c
|
|
27
|
+
# Then the build-date
|
|
28
|
+
>>>>>>>>&0 pstring/H x - built %s
|
|
29
|
+
# Then 'd'
|
|
30
|
+
>>>>>>>>>&1 string d
|
|
31
|
+
# Then the build-time
|
|
32
|
+
>>>>>>>>>>&0 pstring/H x \b(%s)
|
|
33
|
+
# Then 'e'
|
|
34
|
+
>>>>>>>>>>>&1 string e
|
|
35
|
+
# And length of data
|
|
36
|
+
>>>>>>>>>>>>&0 belong x - data length %#x
|
|
37
|
+
|
|
38
|
+
# Raw bitstream files
|
|
39
|
+
0 long 0xffffffff
|
|
40
|
+
>&0 belong 0xaa995566 Xilinx RAW bitstream (.BIN)
|
|
41
|
+
|
|
42
|
+
# AXLF (xclbin) files used by AMD/Xilinx accelerators.
|
|
43
|
+
# The file format is defined by XRT source tree:
|
|
44
|
+
# https://github.com/Xilinx/XRT/blob/master/src/runtime_src/core/include/xclbin.h
|
|
45
|
+
# Display file size, creation date, accelerator shell name, xclbin uuid and
|
|
46
|
+
# number of sections.
|
|
47
|
+
|
|
48
|
+
0 string xclbin2 AMD/Xilinx accelerator AXLF (xclbin) file
|
|
49
|
+
>0x130 lequad x \b, %lld bytes
|
|
50
|
+
>0x138 leqdate x \b, created %s
|
|
51
|
+
>0x160 string >0 \b, shell "%.64s"
|
|
52
|
+
>0x1a0 ubelong x \b, uuid %08x
|
|
53
|
+
>0x1a4 ubeshort x \b-%04x
|
|
54
|
+
>0x1a6 ubeshort x \b-%04x
|
|
55
|
+
>0x1a8 ubeshort x \b-%04x
|
|
56
|
+
>0x1aa ubelong x \b-%08x
|
|
57
|
+
>0x1ae ubeshort x \b%04x
|
|
58
|
+
>0x1c0 lelong x \b, %d sections
|
polyfile/magic_defs/xo65
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
#------------------------------------------------------------------------------
|
|
3
|
+
# $File: xo65,v 1.5 2022/07/17 15:36:20 christos Exp $
|
|
4
|
+
# https://cc65.github.io/doc/sim65.html
|
|
5
|
+
# xo65 object files
|
|
6
|
+
# From: "Ullrich von Bassewitz" <uz@cc65.org>
|
|
7
|
+
#
|
|
8
|
+
0 string \x55\x7A\x6E\x61 xo65 object,
|
|
9
|
+
>4 leshort x version %d,
|
|
10
|
+
>6 leshort&0x0001 =0x0001 with debug info
|
|
11
|
+
>6 leshort&0x0001 =0x0000 no debug info
|
|
12
|
+
|
|
13
|
+
# xo65 library files
|
|
14
|
+
0 string \x6E\x61\x55\x7A xo65 library,
|
|
15
|
+
>4 leshort x version %d
|
|
16
|
+
|
|
17
|
+
# o65 object files
|
|
18
|
+
0 string \x01\x00\x6F\x36\x35 o65
|
|
19
|
+
>6 leshort&0x1000 =0x0000 executable,
|
|
20
|
+
>6 leshort&0x1000 =0x1000 object,
|
|
21
|
+
>5 byte x version %d,
|
|
22
|
+
>6 leshort&0x8000 =0x8000 65816,
|
|
23
|
+
>6 leshort&0x8000 =0x0000 6502,
|
|
24
|
+
>6 leshort&0x2000 =0x2000 32 bit,
|
|
25
|
+
>6 leshort&0x2000 =0x0000 16 bit,
|
|
26
|
+
>6 leshort&0x4000 =0x4000 page reloc,
|
|
27
|
+
>6 leshort&0x4000 =0x0000 byte reloc,
|
|
28
|
+
>6 leshort&0x0003 =0x0000 alignment 1
|
|
29
|
+
>6 leshort&0x0003 =0x0001 alignment 2
|
|
30
|
+
>6 leshort&0x0003 =0x0002 alignment 4
|
|
31
|
+
>6 leshort&0x0003 =0x0003 alignment 256
|
|
32
|
+
|
|
33
|
+
# sim65 executable files
|
|
34
|
+
0 string \x73\x69\x6d\x36\x35 sim65 executable,
|
|
35
|
+
>5 byte x version %d,
|
|
36
|
+
>6 leshort&0x0000 =0x0000 6502
|
|
37
|
+
>6 leshort&0x0001 =0x0001 65C02
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
#------------------------------------------------------------------------------
|
|
3
|
+
# $File: xwindows,v 1.13 2022/03/24 15:48:58 christos Exp $
|
|
4
|
+
# xwindows: file(1) magic for various X/Window system file formats.
|
|
5
|
+
|
|
6
|
+
# Compiled X Keymap
|
|
7
|
+
# XKM (compiled X keymap) files (including version and byte ordering)
|
|
8
|
+
1 string mkx Compiled XKB Keymap: lsb,
|
|
9
|
+
>0 byte >0 version %d
|
|
10
|
+
>0 byte =0 obsolete
|
|
11
|
+
0 string xkm Compiled XKB Keymap: msb,
|
|
12
|
+
>3 byte >0 version %d
|
|
13
|
+
>3 byte =0 obsolete
|
|
14
|
+
|
|
15
|
+
# xfsdump archive
|
|
16
|
+
0 string xFSdump0 xfsdump archive
|
|
17
|
+
>8 belong x (version %d)
|
|
18
|
+
|
|
19
|
+
# Jaleo XFS files
|
|
20
|
+
0 long 395726 Jaleo XFS file
|
|
21
|
+
>4 long x - version %d
|
|
22
|
+
>8 long x - [%d -
|
|
23
|
+
>20 long x \b%dx
|
|
24
|
+
>24 long x \b%dx
|
|
25
|
+
>28 long 1008 \bYUV422]
|
|
26
|
+
>28 long 1000 \bRGB24]
|
|
27
|
+
|
|
28
|
+
# Xcursor data
|
|
29
|
+
# X11 mouse cursor format defined in libXcursor, see
|
|
30
|
+
# https://www.x.org/archive/X11R6.8.1/doc/Xcursor.3.html
|
|
31
|
+
# https://cgit.freedesktop.org/xorg/lib/libXcursor/tree/include/X11/Xcursor/Xcursor.h
|
|
32
|
+
0 string Xcur Xcursor data
|
|
33
|
+
!:mime image/x-xcursor
|
|
34
|
+
>10 leshort x version %d
|
|
35
|
+
>>8 leshort x \b.%d
|
|
36
|
+
|
|
37
|
+
# X bitmap https://en.wikipedia.org/wiki/X_BitMap
|
|
38
|
+
0 search/2048 #define\040
|
|
39
|
+
>&0 regex [a-zA-Z0-9]+_width\040 xbm image
|
|
40
|
+
>>&0 regex [0-9]+ (%sx
|
|
41
|
+
>>>&0 string \n#define\040
|
|
42
|
+
>>>>&0 regex [a-zA-Z0-9]+_height\040
|
|
43
|
+
>>>>>&0 regex [0-9]+ \b%s)
|
polyfile/magic_defs/yara
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
#------------------------------------------------------------------------------
|
|
4
|
+
# $File: yara,v 1.4 2021/04/26 15:56:00 christos Exp $
|
|
5
|
+
# yara: file(1) magic for https://virustotal.github.io/yara/
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
0 string YARA
|
|
9
|
+
>4 lelong >2047
|
|
10
|
+
>8 byte <20 YARA 3.x compiled rule set
|
|
11
|
+
# version
|
|
12
|
+
>>8 clear x
|
|
13
|
+
>>8 byte 6 created with version 3.3.0
|
|
14
|
+
>>8 byte 8 created with version 3.4.0
|
|
15
|
+
>>8 byte 11 created with version 3.5.0
|
|
16
|
+
>>8 default x
|
|
17
|
+
>>>8 byte x development version %#02x
|
polyfile/magic_defs/zfs
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
# zfs: file(1) magic for ZFS dumps
|
|
3
|
+
#
|
|
4
|
+
# From <rea-fbsd@codelabs.ru>
|
|
5
|
+
# ZFS dump header has the following structure (as per zfs_ioctl.h
|
|
6
|
+
# in FreeBSD with drr_type is set to DRR_BEGIN)
|
|
7
|
+
#
|
|
8
|
+
# enum {
|
|
9
|
+
# DRR_BEGIN, DRR_OBJECT, DRR_FREEOBJECTS,
|
|
10
|
+
# DRR_WRITE, DRR_FREE, DRR_END,
|
|
11
|
+
# } drr_type;
|
|
12
|
+
# uint32_t drr_pad;
|
|
13
|
+
# uint64_t drr_magic;
|
|
14
|
+
# uint64_t drr_version;
|
|
15
|
+
# uint64_t drr_creation_time;
|
|
16
|
+
# dmu_objset_type_t drr_type;
|
|
17
|
+
# uint32_t drr_pad;
|
|
18
|
+
# uint64_t drr_toguid;
|
|
19
|
+
# uint64_t drr_fromguid;
|
|
20
|
+
# char drr_toname[MAXNAMELEN];
|
|
21
|
+
#
|
|
22
|
+
# Backup magic is 0x00000002f5bacbac (quad word)
|
|
23
|
+
# The drr_type is defined as
|
|
24
|
+
# typedef enum dmu_objset_type {
|
|
25
|
+
# DMU_OST_NONE,
|
|
26
|
+
# DMU_OST_META,
|
|
27
|
+
# DMU_OST_ZFS,
|
|
28
|
+
# DMU_OST_ZVOL,
|
|
29
|
+
# DMU_OST_OTHER, /* For testing only! */
|
|
30
|
+
# DMU_OST_ANY, /* Be careful! */
|
|
31
|
+
# DMU_OST_NUMTYPES
|
|
32
|
+
# } dmu_objset_type_t;
|
|
33
|
+
#
|
|
34
|
+
# Almost all uint64_t fields are printed as the 32-bit ones (with high
|
|
35
|
+
# 32 bits zeroed), because there is no simple way to print them as the
|
|
36
|
+
# full 64-bit values.
|
|
37
|
+
|
|
38
|
+
# Big-endian values
|
|
39
|
+
8 string \000\000\000\002\365\272\313\254 ZFS snapshot (big-endian machine),
|
|
40
|
+
>20 belong x version %u,
|
|
41
|
+
>32 belong 0 type: NONE,
|
|
42
|
+
>32 belong 1 type: META,
|
|
43
|
+
>32 belong 2 type: ZFS,
|
|
44
|
+
>32 belong 3 type: ZVOL,
|
|
45
|
+
>32 belong 4 type: OTHER,
|
|
46
|
+
>32 belong 5 type: ANY,
|
|
47
|
+
>32 belong >5 type: UNKNOWN (%u),
|
|
48
|
+
>40 byte x destination GUID: %02X
|
|
49
|
+
>41 byte x %02X
|
|
50
|
+
>42 byte x %02X
|
|
51
|
+
>43 byte x %02X
|
|
52
|
+
>44 byte x %02X
|
|
53
|
+
>45 byte x %02X
|
|
54
|
+
>46 byte x %02X
|
|
55
|
+
>47 byte x %02X,
|
|
56
|
+
>48 ulong >0
|
|
57
|
+
>>52 ulong >0
|
|
58
|
+
>>>48 byte x source GUID: %02X
|
|
59
|
+
>>>49 byte x %02X
|
|
60
|
+
>>>50 byte x %02X
|
|
61
|
+
>>>51 byte x %02X
|
|
62
|
+
>>>52 byte x %02X
|
|
63
|
+
>>>53 byte x %02X
|
|
64
|
+
>>>54 byte x %02X
|
|
65
|
+
>>>55 byte x %02X,
|
|
66
|
+
>56 string >\0 name: '%s'
|
|
67
|
+
|
|
68
|
+
# Little-endian values
|
|
69
|
+
8 string \254\313\272\365\002\000\000\000 ZFS snapshot (little-endian machine),
|
|
70
|
+
>16 lelong x version %u,
|
|
71
|
+
>32 lelong 0 type: NONE,
|
|
72
|
+
>32 lelong 1 type: META,
|
|
73
|
+
>32 lelong 2 type: ZFS,
|
|
74
|
+
>32 lelong 3 type: ZVOL,
|
|
75
|
+
>32 lelong 4 type: OTHER,
|
|
76
|
+
>32 lelong 5 type: ANY,
|
|
77
|
+
>32 lelong >5 type: UNKNOWN (%u),
|
|
78
|
+
>47 byte x destination GUID: %02X
|
|
79
|
+
>46 byte x %02X
|
|
80
|
+
>45 byte x %02X
|
|
81
|
+
>44 byte x %02X
|
|
82
|
+
>43 byte x %02X
|
|
83
|
+
>42 byte x %02X
|
|
84
|
+
>41 byte x %02X
|
|
85
|
+
>40 byte x %02X,
|
|
86
|
+
>48 ulong >0
|
|
87
|
+
>>52 ulong >0
|
|
88
|
+
>>>55 byte x source GUID: %02X
|
|
89
|
+
>>>54 byte x %02X
|
|
90
|
+
>>>53 byte x %02X
|
|
91
|
+
>>>52 byte x %02X
|
|
92
|
+
>>>51 byte x %02X
|
|
93
|
+
>>>50 byte x %02X
|
|
94
|
+
>>>49 byte x %02X
|
|
95
|
+
>>>48 byte x %02X,
|
|
96
|
+
>56 string >\0 name: '%s'
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
#------------------------------------------------------------------------------
|
|
3
|
+
# $File: zilog,v 1.7 2009/09/19 16:28:13 christos Exp $
|
|
4
|
+
# zilog: file(1) magic for Zilog Z8000.
|
|
5
|
+
#
|
|
6
|
+
# Was it big-endian or little-endian? My Product Specification doesn't
|
|
7
|
+
# say.
|
|
8
|
+
#
|
|
9
|
+
0 long 0xe807 object file (z8000 a.out)
|
|
10
|
+
0 long 0xe808 pure object file (z8000 a.out)
|
|
11
|
+
0 long 0xe809 separate object file (z8000 a.out)
|
|
12
|
+
0 long 0xe805 overlay object file (z8000 a.out)
|
polyfile/magic_defs/zip
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
# $File: zip,v 1.8 2021/10/24 15:53:56 christos Exp $
|
|
3
|
+
# zip: file(1) magic for zip files; this is not use
|
|
4
|
+
# Note the version of magic in archive is currently stronger, this is
|
|
5
|
+
# just an example until negative offsets are supported better
|
|
6
|
+
# Note: All fields unless otherwise noted are unsigned!
|
|
7
|
+
|
|
8
|
+
# Zip Central Directory record
|
|
9
|
+
0 name zipcd
|
|
10
|
+
>0 string PK\001\002 Zip archive data
|
|
11
|
+
!:mime application/zip
|
|
12
|
+
# no "made by" in local file header with PK\3\4 magic
|
|
13
|
+
>>4 leshort x \b, made by
|
|
14
|
+
>>4 use zipversion
|
|
15
|
+
>>4 use ziphost
|
|
16
|
+
# inside ./archive 1.151 called "at least" zipversion "to extract"
|
|
17
|
+
>>6 leshort x \b, extract using at least
|
|
18
|
+
>>6 use zipversion
|
|
19
|
+
# This is DOS date like: ledate 21:00:48 19 Dec 2001 != DOS 00:00 1 Jan 2010 ~ 0000213C
|
|
20
|
+
>>12 ulelong x \b, last modified
|
|
21
|
+
>>14 lemsdosdate x \b, last modified %s
|
|
22
|
+
>>12 lemsdostime x %s
|
|
23
|
+
# uncompressed size of 1st entry; FFffFFff means real value stored in ZIP64 record
|
|
24
|
+
>>24 ulelong !0xFFffFFff \b, uncompressed size %u
|
|
25
|
+
# inside ./archive 1.151 called "compression method="zipcompression
|
|
26
|
+
>>10 leshort x \b, method=
|
|
27
|
+
>>10 use zipcompression
|
|
28
|
+
|
|
29
|
+
# URL: https://en.wikipedia.org/wiki/Zip_(file_format)
|
|
30
|
+
# reference: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT (Version: 6.3.9)
|
|
31
|
+
# Zip known compressions
|
|
32
|
+
0 name zipcompression
|
|
33
|
+
>0 leshort 0 \bstore
|
|
34
|
+
>0 leshort 1 \bShrinking
|
|
35
|
+
>0 leshort 6 \bImploding
|
|
36
|
+
>0 leshort 7 \bTokenizing
|
|
37
|
+
>0 leshort 8 \bdeflate
|
|
38
|
+
>0 leshort 9 \bdeflate64
|
|
39
|
+
>0 leshort 10 \bLibrary imploding
|
|
40
|
+
#>0 leshort 11 \bReserved by PKWARE
|
|
41
|
+
>0 leshort 12 \bbzip2
|
|
42
|
+
#>0 leshort 13 \bReserved by PKWARE
|
|
43
|
+
>0 leshort 14 \blzma
|
|
44
|
+
#>0 leshort 15 \bReserved by PKWARE
|
|
45
|
+
>0 leshort 16 \bCMPSC (IBM z/OS)
|
|
46
|
+
#>0 leshort 17 \bReserved by PKWARE
|
|
47
|
+
>0 leshort 18 \bIBM TERSE
|
|
48
|
+
>0 leshort 19 \bIBM LZ77 (z/Architecture)
|
|
49
|
+
>0 leshort 20 \bZstd (deprecated)
|
|
50
|
+
>0 leshort 93 \bZstd
|
|
51
|
+
>0 leshort 94 \bMP3
|
|
52
|
+
>0 leshort 95 \bxz
|
|
53
|
+
>0 leshort 96 \bJpeg
|
|
54
|
+
>0 leshort 97 \bWavPack
|
|
55
|
+
>0 leshort 98 \bPPMd
|
|
56
|
+
>0 leshort 99 \bAES Encrypted
|
|
57
|
+
>0 default x
|
|
58
|
+
>>0 leshort x \b[%#x]
|
|
59
|
+
|
|
60
|
+
# Zip known versions
|
|
61
|
+
0 name zipversion
|
|
62
|
+
# The lower byte indicates the ZIP version of this file. The value/10 indicates
|
|
63
|
+
# the major version number, and the value mod 10 is the minor version number.
|
|
64
|
+
>0 ubyte/10 x v%u
|
|
65
|
+
>0 ubyte%10 x \b.%u
|
|
66
|
+
# >0 leshort 0x09 v0.9
|
|
67
|
+
# >0 leshort 0x0a v1.0
|
|
68
|
+
# >0 leshort 0x0b v1.1
|
|
69
|
+
# >0 leshort 0x14 v2.0
|
|
70
|
+
# >0 leshort 0x15 v2.1
|
|
71
|
+
# >0 leshort 0x19 v2.5
|
|
72
|
+
# >0 leshort 0x1b v2.7
|
|
73
|
+
# >0 leshort 0x2d v4.5
|
|
74
|
+
# >0 leshort 0x2e v4.6
|
|
75
|
+
# >0 leshort 0x32 v5.0
|
|
76
|
+
# >0 leshort 0x33 v5.1
|
|
77
|
+
# >0 leshort 0x34 v5.2
|
|
78
|
+
# >0 leshort 0x3d v6.1
|
|
79
|
+
# >0 leshort 0x3e v6.2
|
|
80
|
+
# >0 leshort 0x3f v6.3
|
|
81
|
+
# >0 default x
|
|
82
|
+
# >>0 leshort x v?[%#x]
|
|
83
|
+
|
|
84
|
+
# display compatible host system name of ZIP archive
|
|
85
|
+
0 name ziphost
|
|
86
|
+
# The upper byte indicates the compatibility of the file attribute information.
|
|
87
|
+
# If the file is compatible with MS-DOS (v 2.04g) then this value will be zero.
|
|
88
|
+
#>1 ubyte 0 DOS
|
|
89
|
+
>1 ubyte 1 Amiga
|
|
90
|
+
>1 ubyte 2 OpenVMS
|
|
91
|
+
>1 ubyte 3 UNIX
|
|
92
|
+
>1 ubyte 4 VM/CMS
|
|
93
|
+
>1 ubyte 6 OS/2
|
|
94
|
+
>1 ubyte 7 Macintosh
|
|
95
|
+
>1 ubyte 11 MVS
|
|
96
|
+
>1 ubyte 13 Acorn Risc
|
|
97
|
+
>1 ubyte 16 BeOS
|
|
98
|
+
>1 ubyte 17 Tandem
|
|
99
|
+
# 9 untested
|
|
100
|
+
>1 ubyte 5 Atari ST
|
|
101
|
+
>1 ubyte 8 Z-System
|
|
102
|
+
>1 ubyte 9 CP/M
|
|
103
|
+
>1 ubyte 10 Windows NTFS
|
|
104
|
+
>1 ubyte 12 VSE
|
|
105
|
+
>1 ubyte 14 VFAT
|
|
106
|
+
>1 ubyte 15 alternate MVS
|
|
107
|
+
>1 ubyte 18 OS/400
|
|
108
|
+
>1 ubyte 19 OS X
|
|
109
|
+
# unused
|
|
110
|
+
#>1 ubyte >19 unused %#x
|
|
111
|
+
|
|
112
|
+
# Zip End Of Central Directory record
|
|
113
|
+
# GRR: wrong for ZIP with comment archive
|
|
114
|
+
-22 string PK\005\006
|
|
115
|
+
#>4 uleshort !0xFFff \b, %u disks
|
|
116
|
+
#>6 uleshort !0xFFff \b, central directory disk %u
|
|
117
|
+
#>8 uleshort !0xFFff \b, %u central directories on this disk
|
|
118
|
+
#>10 uleshort !0xFFff \b, %u central directories
|
|
119
|
+
#>12 ulelong !0xFFffFFff \b, %u central directory bytes
|
|
120
|
+
# offset of central directory
|
|
121
|
+
#>16 ulelong x \b, central directory offset %#x
|
|
122
|
+
>(16.l) use zipcd
|
|
123
|
+
# archive comment length n
|
|
124
|
+
#>>20 uleshort >0 \b, comment length %u
|
|
125
|
+
# archive comment
|
|
126
|
+
>>20 pstring/l >0 \b, %s
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
#------------------------------------------------------------------------------
|
|
3
|
+
# $File: zyxel,v 1.6 2009/09/19 16:28:13 christos Exp $
|
|
4
|
+
# zyxel: file(1) magic for ZyXEL modems
|
|
5
|
+
#
|
|
6
|
+
# From <rob@pe1chl.ampr.org>
|
|
7
|
+
# These are the /etc/magic entries to decode datafiles as used for the
|
|
8
|
+
# ZyXEL U-1496E DATA/FAX/VOICE modems. (This header conforms to a
|
|
9
|
+
# ZyXEL-defined standard)
|
|
10
|
+
|
|
11
|
+
0 string ZyXEL\002 ZyXEL voice data
|
|
12
|
+
>10 byte 0 - CELP encoding
|
|
13
|
+
>10 byte&0x0B 1 - ADPCM2 encoding
|
|
14
|
+
>10 byte&0x0B 2 - ADPCM3 encoding
|
|
15
|
+
>10 byte&0x0B 3 - ADPCM4 encoding
|
|
16
|
+
>10 byte&0x0B 8 - New ADPCM3 encoding
|
|
17
|
+
>10 byte&0x04 4 with resync
|
polyfile/nes.py
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import base64
|
|
2
|
+
from io import BytesIO
|
|
3
|
+
|
|
4
|
+
from PIL import Image, ImageDraw
|
|
5
|
+
|
|
6
|
+
from .polyfile import register_parser, InvalidMatch, Submatch
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def parse_ines_header(header, parent=None):
|
|
10
|
+
magic = header[:4]
|
|
11
|
+
if magic != b'NES\x1A':
|
|
12
|
+
raise InvalidMatch(f"Expected \"NES\\x1A\" magic at the beginning of the file, but found {magic!r}")
|
|
13
|
+
parent = Submatch(
|
|
14
|
+
name='iNESHeader',
|
|
15
|
+
match_obj=header,
|
|
16
|
+
relative_offset=0,
|
|
17
|
+
length=16,
|
|
18
|
+
parent=parent
|
|
19
|
+
)
|
|
20
|
+
yield parent
|
|
21
|
+
yield Submatch(
|
|
22
|
+
name='iNESMagic',
|
|
23
|
+
match_obj="NES",
|
|
24
|
+
relative_offset=0,
|
|
25
|
+
length=4,
|
|
26
|
+
parent=parent
|
|
27
|
+
)
|
|
28
|
+
prg_size = header[4]
|
|
29
|
+
yield Submatch(
|
|
30
|
+
name='PRGSize',
|
|
31
|
+
match_obj=prg_size,
|
|
32
|
+
relative_offset=4,
|
|
33
|
+
length=1,
|
|
34
|
+
parent=parent
|
|
35
|
+
)
|
|
36
|
+
chr_size = header[5]
|
|
37
|
+
yield Submatch(
|
|
38
|
+
name='CHRSize',
|
|
39
|
+
match_obj=chr_size,
|
|
40
|
+
relative_offset=5,
|
|
41
|
+
length=1,
|
|
42
|
+
parent=parent
|
|
43
|
+
)
|
|
44
|
+
for i in range(6,8):
|
|
45
|
+
yield Submatch(
|
|
46
|
+
name='Flags',
|
|
47
|
+
display_name=f'Flags{i}',
|
|
48
|
+
match_obj=header[i],
|
|
49
|
+
relative_offset=i,
|
|
50
|
+
length=1,
|
|
51
|
+
parent=parent
|
|
52
|
+
)
|
|
53
|
+
yield Submatch(
|
|
54
|
+
name='PRGRAMSize',
|
|
55
|
+
match_obj=header[8],
|
|
56
|
+
relative_offset=8,
|
|
57
|
+
length=1,
|
|
58
|
+
parent=parent
|
|
59
|
+
)
|
|
60
|
+
for i in range(9,11):
|
|
61
|
+
yield Submatch(
|
|
62
|
+
name='Flags',
|
|
63
|
+
display_name=f'Flags{i}',
|
|
64
|
+
match_obj=header[i],
|
|
65
|
+
relative_offset=i,
|
|
66
|
+
length=1,
|
|
67
|
+
parent=parent
|
|
68
|
+
)
|
|
69
|
+
yield Submatch(
|
|
70
|
+
name='UnusedPadding',
|
|
71
|
+
match_obj=header[11:],
|
|
72
|
+
relative_offset=11,
|
|
73
|
+
length=5,
|
|
74
|
+
parent=parent
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@register_parser("application/x-nes-rom")
|
|
79
|
+
def parse_ines(file_stream, parent):
|
|
80
|
+
header = file_stream.read(16)
|
|
81
|
+
yield from parse_ines_header(header, parent)
|
|
82
|
+
has_trainer = (header[6] & 0b100) != 0
|
|
83
|
+
if has_trainer:
|
|
84
|
+
yield Submatch(
|
|
85
|
+
name='Trainer',
|
|
86
|
+
match_obj=file_stream.read(512),
|
|
87
|
+
relative_offset=16,
|
|
88
|
+
length=512,
|
|
89
|
+
parent=parent
|
|
90
|
+
)
|
|
91
|
+
prg_size = header[4]
|
|
92
|
+
for i in range(prg_size):
|
|
93
|
+
offset = file_stream.tell()
|
|
94
|
+
file_stream.read(16384)
|
|
95
|
+
yield Submatch(
|
|
96
|
+
name='PRGBank',
|
|
97
|
+
display_name=f'PRGBank{i}',
|
|
98
|
+
match_obj='',
|
|
99
|
+
relative_offset=offset,
|
|
100
|
+
length=16384,
|
|
101
|
+
parent=parent
|
|
102
|
+
)
|
|
103
|
+
chr_size = header[5]
|
|
104
|
+
for i in range(chr_size):
|
|
105
|
+
offset = file_stream.tell()
|
|
106
|
+
chr_bytes = file_stream.read(8192)
|
|
107
|
+
chr_img = render_chr(chr_bytes)
|
|
108
|
+
with BytesIO() as img_data:
|
|
109
|
+
chr_img.save(img_data, "PNG")
|
|
110
|
+
yield Submatch(
|
|
111
|
+
name='CHRBank',
|
|
112
|
+
display_name=f'CHRBank{i}',
|
|
113
|
+
match_obj='',
|
|
114
|
+
relative_offset=offset,
|
|
115
|
+
length=8192,
|
|
116
|
+
parent=parent,
|
|
117
|
+
img_data=f"data:image/png;base64,{base64.b64encode(img_data.getvalue()).decode('utf-8')}"
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def chr_values(chr_bytes: bytes):
|
|
122
|
+
for i, offset in enumerate(range(0, len(chr_bytes), 16)):
|
|
123
|
+
base_x = (i % 16) * 8
|
|
124
|
+
base_y = (i // 16) * 8
|
|
125
|
+
for y in range(8):
|
|
126
|
+
for x in range(8):
|
|
127
|
+
shift = 7 - x
|
|
128
|
+
yield base_x + x,\
|
|
129
|
+
base_y + y,\
|
|
130
|
+
((((chr_bytes[offset + y + 8] >> shift) & 0b1)) << 1) | ((chr_bytes[offset + y] >> shift) & 0b1)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def render_chr(chr_bytes: bytes) -> Image:
|
|
134
|
+
img = Image.new(mode='L', size=(8*16, 8*32))
|
|
135
|
+
d = ImageDraw.Draw(img)
|
|
136
|
+
for x, y, pixel in chr_values(chr_bytes):
|
|
137
|
+
if pixel == 1:
|
|
138
|
+
pixel = 0xFF//3
|
|
139
|
+
elif pixel == 2:
|
|
140
|
+
pixel = 0xFF//3*2
|
|
141
|
+
elif pixel == 3:
|
|
142
|
+
pixel = 0xFF
|
|
143
|
+
d.point((x, y), pixel)
|
|
144
|
+
return img
|
polyfile/nitf.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from .fileutils import ExactNamedTempfile
|
|
4
|
+
from .magic import MagicMatcher, TestType
|
|
5
|
+
|
|
6
|
+
with ExactNamedTempfile(b"""# The default libmagic test for NITF does not associate a MIME type,
|
|
7
|
+
# and does not support NITF 02.10
|
|
8
|
+
0 string NITF NITF
|
|
9
|
+
>4 string 02.10 \\ version 2.10 (ISO/IEC IS 12087-5)
|
|
10
|
+
>25 string >\\0 dated %.14s
|
|
11
|
+
!:mime application/vnd.nitf
|
|
12
|
+
!:ext ntf
|
|
13
|
+
""", name="NITFMatcher") as t:
|
|
14
|
+
nitf_matcher = MagicMatcher.DEFAULT_INSTANCE.add(Path(t), test_type=TestType.BINARY)[0]
|
|
15
|
+
assert nitf_matcher.test_type == TestType.BINARY
|