cyberchef-py 0.1.0__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.
- cyberchef_py-0.1.0.dist-info/METADATA +274 -0
- cyberchef_py-0.1.0.dist-info/RECORD +592 -0
- cyberchef_py-0.1.0.dist-info/WHEEL +4 -0
- cyberchef_py-0.1.0.dist-info/licenses/LICENSE +201 -0
- cyberchef_py-0.1.0.dist-info/licenses/NOTICE +11 -0
- cyberchef_py-0.1.0.dist-info/licenses/THIRD_PARTY_LICENSES.md +64 -0
- pychef/__init__.py +165 -0
- pychef/compatibility.py +551 -0
- pychef/ctf.py +615 -0
- pychef/errors.py +22 -0
- pychef/operations/__init__.py +5 -0
- pychef/operations/_utils.py +72 -0
- pychef/operations/aes.py +411 -0
- pychef/operations/analysis_extra.py +90 -0
- pychef/operations/ascon.py +236 -0
- pychef/operations/bcrypt_parse.py +22 -0
- pychef/operations/bifid.py +75 -0
- pychef/operations/binary_formats.py +467 -0
- pychef/operations/blake3.py +204 -0
- pychef/operations/blowfish.py +288 -0
- pychef/operations/by_operation/__init__.py +515 -0
- pychef/operations/by_operation/a1z26_cipher_decode.py +19 -0
- pychef/operations/by_operation/a1z26_cipher_encode.py +19 -0
- pychef/operations/by_operation/add.py +19 -0
- pychef/operations/by_operation/add_line_numbers.py +19 -0
- pychef/operations/by_operation/add_text_to_image.py +19 -0
- pychef/operations/by_operation/adler_32_checksum.py +19 -0
- pychef/operations/by_operation/aes_decrypt.py +19 -0
- pychef/operations/by_operation/aes_encrypt.py +19 -0
- pychef/operations/by_operation/aes_key_unwrap.py +19 -0
- pychef/operations/by_operation/aes_key_wrap.py +19 -0
- pychef/operations/by_operation/affine_cipher_decode.py +19 -0
- pychef/operations/by_operation/affine_cipher_encode.py +19 -0
- pychef/operations/by_operation/alternating_caps.py +19 -0
- pychef/operations/by_operation/amf_decode.py +19 -0
- pychef/operations/by_operation/amf_encode.py +19 -0
- pychef/operations/by_operation/analyse_hash.py +19 -0
- pychef/operations/by_operation/analyse_uuid.py +19 -0
- pychef/operations/by_operation/and_operation.py +19 -0
- pychef/operations/by_operation/argon2.py +19 -0
- pychef/operations/by_operation/argon2_compare.py +19 -0
- pychef/operations/by_operation/ascon_decrypt.py +19 -0
- pychef/operations/by_operation/ascon_encrypt.py +19 -0
- pychef/operations/by_operation/ascon_hash.py +19 -0
- pychef/operations/by_operation/ascon_mac.py +19 -0
- pychef/operations/by_operation/atbash_cipher.py +19 -0
- pychef/operations/by_operation/automated_validation_test_op.py +19 -0
- pychef/operations/by_operation/avro_to_json.py +19 -0
- pychef/operations/by_operation/bacon_cipher_decode.py +19 -0
- pychef/operations/by_operation/bacon_cipher_encode.py +19 -0
- pychef/operations/by_operation/bcrypt.py +19 -0
- pychef/operations/by_operation/bcrypt_compare.py +19 -0
- pychef/operations/by_operation/bcrypt_parse.py +19 -0
- pychef/operations/by_operation/bifid_cipher_decode.py +19 -0
- pychef/operations/by_operation/bifid_cipher_encode.py +19 -0
- pychef/operations/by_operation/bit_shift_left.py +19 -0
- pychef/operations/by_operation/bit_shift_right.py +19 -0
- pychef/operations/by_operation/blake2b.py +19 -0
- pychef/operations/by_operation/blake2s.py +19 -0
- pychef/operations/by_operation/blake3.py +19 -0
- pychef/operations/by_operation/blowfish_decrypt.py +19 -0
- pychef/operations/by_operation/blowfish_encrypt.py +19 -0
- pychef/operations/by_operation/blur_image.py +19 -0
- pychef/operations/by_operation/bombe.py +19 -0
- pychef/operations/by_operation/bson_deserialise.py +19 -0
- pychef/operations/by_operation/bson_serialise.py +19 -0
- pychef/operations/by_operation/bzip2_compress.py +19 -0
- pychef/operations/by_operation/bzip2_decompress.py +19 -0
- pychef/operations/by_operation/caesar_box_cipher.py +19 -0
- pychef/operations/by_operation/caret_m_decode.py +19 -0
- pychef/operations/by_operation/cartesian_product.py +19 -0
- pychef/operations/by_operation/cbor_decode.py +19 -0
- pychef/operations/by_operation/cbor_encode.py +19 -0
- pychef/operations/by_operation/cetacean_cipher_decode.py +19 -0
- pychef/operations/by_operation/cetacean_cipher_encode.py +19 -0
- pychef/operations/by_operation/chacha.py +19 -0
- pychef/operations/by_operation/change_ip_format.py +19 -0
- pychef/operations/by_operation/chi_square.py +19 -0
- pychef/operations/by_operation/ciphersaber2_decrypt.py +19 -0
- pychef/operations/by_operation/ciphersaber2_encrypt.py +19 -0
- pychef/operations/by_operation/citrix_ctx1_decode.py +19 -0
- pychef/operations/by_operation/citrix_ctx1_encode.py +19 -0
- pychef/operations/by_operation/cmac.py +19 -0
- pychef/operations/by_operation/colossus.py +19 -0
- pychef/operations/by_operation/comment.py +19 -0
- pychef/operations/by_operation/compare_ctph_hashes.py +19 -0
- pychef/operations/by_operation/compare_ssdeep_hashes.py +19 -0
- pychef/operations/by_operation/conditional_jump.py +19 -0
- pychef/operations/by_operation/contain_image.py +19 -0
- pychef/operations/by_operation/convert_area.py +19 -0
- pychef/operations/by_operation/convert_co_ordinate_format.py +19 -0
- pychef/operations/by_operation/convert_data_units.py +19 -0
- pychef/operations/by_operation/convert_distance.py +19 -0
- pychef/operations/by_operation/convert_image_format.py +19 -0
- pychef/operations/by_operation/convert_leet_speak.py +19 -0
- pychef/operations/by_operation/convert_mass.py +19 -0
- pychef/operations/by_operation/convert_speed.py +19 -0
- pychef/operations/by_operation/convert_to_nato_alphabet.py +19 -0
- pychef/operations/by_operation/count_occurrences.py +19 -0
- pychef/operations/by_operation/cover_image.py +19 -0
- pychef/operations/by_operation/crc_checksum.py +19 -0
- pychef/operations/by_operation/crop_image.py +19 -0
- pychef/operations/by_operation/css_beautify.py +19 -0
- pychef/operations/by_operation/css_minify.py +19 -0
- pychef/operations/by_operation/css_selector.py +19 -0
- pychef/operations/by_operation/csv_to_json.py +19 -0
- pychef/operations/by_operation/ctph.py +19 -0
- pychef/operations/by_operation/datetime_delta.py +19 -0
- pychef/operations/by_operation/dechunk_http_response.py +19 -0
- pychef/operations/by_operation/decode_netbios_name.py +19 -0
- pychef/operations/by_operation/decode_text.py +19 -0
- pychef/operations/by_operation/defang_ip_addresses.py +19 -0
- pychef/operations/by_operation/defang_url.py +19 -0
- pychef/operations/by_operation/derive_evp_key.py +19 -0
- pychef/operations/by_operation/derive_hkdf_key.py +19 -0
- pychef/operations/by_operation/derive_pbkdf2_key.py +19 -0
- pychef/operations/by_operation/des_decrypt.py +19 -0
- pychef/operations/by_operation/des_encrypt.py +19 -0
- pychef/operations/by_operation/detect_file_type.py +19 -0
- pychef/operations/by_operation/diff.py +19 -0
- pychef/operations/by_operation/disassemble_arm.py +19 -0
- pychef/operations/by_operation/disassemble_x86.py +19 -0
- pychef/operations/by_operation/dither_image.py +19 -0
- pychef/operations/by_operation/divide.py +19 -0
- pychef/operations/by_operation/dns_over_https.py +19 -0
- pychef/operations/by_operation/drop_bytes.py +19 -0
- pychef/operations/by_operation/drop_nth_bytes.py +19 -0
- pychef/operations/by_operation/ecdsa_sign.py +19 -0
- pychef/operations/by_operation/ecdsa_signature_conversion.py +19 -0
- pychef/operations/by_operation/ecdsa_verify.py +19 -0
- pychef/operations/by_operation/elf_info.py +19 -0
- pychef/operations/by_operation/encode_netbios_name.py +19 -0
- pychef/operations/by_operation/encode_text.py +19 -0
- pychef/operations/by_operation/enigma.py +19 -0
- pychef/operations/by_operation/entropy.py +19 -0
- pychef/operations/by_operation/escape_smart_characters.py +19 -0
- pychef/operations/by_operation/escape_string.py +19 -0
- pychef/operations/by_operation/escape_unicode_characters.py +19 -0
- pychef/operations/by_operation/expand_alphabet_range.py +19 -0
- pychef/operations/by_operation/extended_gcd.py +19 -0
- pychef/operations/by_operation/extract_audio_metadata.py +19 -0
- pychef/operations/by_operation/extract_dates.py +19 -0
- pychef/operations/by_operation/extract_domains.py +19 -0
- pychef/operations/by_operation/extract_email_addresses.py +19 -0
- pychef/operations/by_operation/extract_exif.py +19 -0
- pychef/operations/by_operation/extract_file_paths.py +19 -0
- pychef/operations/by_operation/extract_files.py +19 -0
- pychef/operations/by_operation/extract_hashes.py +19 -0
- pychef/operations/by_operation/extract_id3.py +19 -0
- pychef/operations/by_operation/extract_ip_addresses.py +19 -0
- pychef/operations/by_operation/extract_lsb.py +19 -0
- pychef/operations/by_operation/extract_mac_addresses.py +19 -0
- pychef/operations/by_operation/extract_rgba.py +19 -0
- pychef/operations/by_operation/extract_urls.py +19 -0
- pychef/operations/by_operation/fang_url.py +19 -0
- pychef/operations/by_operation/fernet_decrypt.py +19 -0
- pychef/operations/by_operation/fernet_encrypt.py +19 -0
- pychef/operations/by_operation/file_tree.py +19 -0
- pychef/operations/by_operation/filter.py +19 -0
- pychef/operations/by_operation/find_replace.py +19 -0
- pychef/operations/by_operation/flask_session_decode.py +19 -0
- pychef/operations/by_operation/flask_session_sign.py +19 -0
- pychef/operations/by_operation/flask_session_verify.py +19 -0
- pychef/operations/by_operation/fletcher_16_checksum.py +19 -0
- pychef/operations/by_operation/fletcher_32_checksum.py +19 -0
- pychef/operations/by_operation/fletcher_64_checksum.py +19 -0
- pychef/operations/by_operation/fletcher_8_checksum.py +19 -0
- pychef/operations/by_operation/flip_image.py +19 -0
- pychef/operations/by_operation/fork.py +19 -0
- pychef/operations/by_operation/format_mac_addresses.py +19 -0
- pychef/operations/by_operation/frequency_distribution.py +19 -0
- pychef/operations/by_operation/from_base.py +19 -0
- pychef/operations/by_operation/from_base32.py +19 -0
- pychef/operations/by_operation/from_base45.py +19 -0
- pychef/operations/by_operation/from_base58.py +19 -0
- pychef/operations/by_operation/from_base62.py +19 -0
- pychef/operations/by_operation/from_base64.py +19 -0
- pychef/operations/by_operation/from_base85.py +19 -0
- pychef/operations/by_operation/from_base92.py +19 -0
- pychef/operations/by_operation/from_bcd.py +19 -0
- pychef/operations/by_operation/from_bech32.py +19 -0
- pychef/operations/by_operation/from_binary.py +19 -0
- pychef/operations/by_operation/from_braille.py +19 -0
- pychef/operations/by_operation/from_case_insensitive_regex.py +19 -0
- pychef/operations/by_operation/from_charcode.py +19 -0
- pychef/operations/by_operation/from_cobs.py +19 -0
- pychef/operations/by_operation/from_decimal.py +19 -0
- pychef/operations/by_operation/from_float.py +19 -0
- pychef/operations/by_operation/from_hex.py +19 -0
- pychef/operations/by_operation/from_hex_content.py +19 -0
- pychef/operations/by_operation/from_hexdump.py +19 -0
- pychef/operations/by_operation/from_html_entity.py +19 -0
- pychef/operations/by_operation/from_messagepack.py +19 -0
- pychef/operations/by_operation/from_modhex.py +19 -0
- pychef/operations/by_operation/from_morse_code.py +19 -0
- pychef/operations/by_operation/from_octal.py +19 -0
- pychef/operations/by_operation/from_punycode.py +19 -0
- pychef/operations/by_operation/from_quoted_printable.py +19 -0
- pychef/operations/by_operation/from_unix_timestamp.py +19 -0
- pychef/operations/by_operation/fuzzy_match.py +19 -0
- pychef/operations/by_operation/generate_all_checksums.py +19 -0
- pychef/operations/by_operation/generate_all_hashes.py +19 -0
- pychef/operations/by_operation/generate_de_bruijn_sequence.py +19 -0
- pychef/operations/by_operation/generate_ecdsa_key_pair.py +19 -0
- pychef/operations/by_operation/generate_hotp.py +19 -0
- pychef/operations/by_operation/generate_image.py +19 -0
- pychef/operations/by_operation/generate_lorem_ipsum.py +19 -0
- pychef/operations/by_operation/generate_pgp_key_pair.py +19 -0
- pychef/operations/by_operation/generate_qr_code.py +19 -0
- pychef/operations/by_operation/generate_rsa_key_pair.py +19 -0
- pychef/operations/by_operation/generate_totp.py +19 -0
- pychef/operations/by_operation/generate_uuid.py +19 -0
- pychef/operations/by_operation/generic_code_beautify.py +19 -0
- pychef/operations/by_operation/get_all_casings.py +19 -0
- pychef/operations/by_operation/get_time.py +19 -0
- pychef/operations/by_operation/gost_decrypt.py +19 -0
- pychef/operations/by_operation/gost_encrypt.py +19 -0
- pychef/operations/by_operation/gost_hash.py +19 -0
- pychef/operations/by_operation/gost_key_unwrap.py +19 -0
- pychef/operations/by_operation/gost_key_wrap.py +19 -0
- pychef/operations/by_operation/gost_sign.py +19 -0
- pychef/operations/by_operation/gost_verify.py +19 -0
- pychef/operations/by_operation/group_ip_addresses.py +19 -0
- pychef/operations/by_operation/gunzip.py +19 -0
- pychef/operations/by_operation/gzip.py +19 -0
- pychef/operations/by_operation/hamming_distance.py +19 -0
- pychef/operations/by_operation/has_160.py +19 -0
- pychef/operations/by_operation/hassh_client_fingerprint.py +19 -0
- pychef/operations/by_operation/hassh_server_fingerprint.py +19 -0
- pychef/operations/by_operation/haversine_distance.py +19 -0
- pychef/operations/by_operation/head.py +19 -0
- pychef/operations/by_operation/heatmap_chart.py +19 -0
- pychef/operations/by_operation/hex_density_chart.py +19 -0
- pychef/operations/by_operation/hex_to_object_identifier.py +19 -0
- pychef/operations/by_operation/hex_to_pem.py +19 -0
- pychef/operations/by_operation/hmac.py +19 -0
- pychef/operations/by_operation/html_to_text.py +19 -0
- pychef/operations/by_operation/http_request.py +19 -0
- pychef/operations/by_operation/image_brightness_contrast.py +19 -0
- pychef/operations/by_operation/image_filter.py +19 -0
- pychef/operations/by_operation/image_hue_saturation_lightness.py +19 -0
- pychef/operations/by_operation/image_opacity.py +19 -0
- pychef/operations/by_operation/index_of_coincidence.py +19 -0
- pychef/operations/by_operation/invert_image.py +19 -0
- pychef/operations/by_operation/ipv6_transition_addresses.py +19 -0
- pychef/operations/by_operation/ja3_fingerprint.py +19 -0
- pychef/operations/by_operation/ja3s_fingerprint.py +19 -0
- pychef/operations/by_operation/ja4_fingerprint.py +19 -0
- pychef/operations/by_operation/ja4server_fingerprint.py +19 -0
- pychef/operations/by_operation/javascript_beautify.py +19 -0
- pychef/operations/by_operation/javascript_minify.py +19 -0
- pychef/operations/by_operation/javascript_parser.py +19 -0
- pychef/operations/by_operation/jpath_expression.py +19 -0
- pychef/operations/by_operation/jq.py +19 -0
- pychef/operations/by_operation/json_beautify.py +19 -0
- pychef/operations/by_operation/json_minify.py +19 -0
- pychef/operations/by_operation/json_to_csv.py +19 -0
- pychef/operations/by_operation/json_to_yaml.py +19 -0
- pychef/operations/by_operation/jsonata_query.py +19 -0
- pychef/operations/by_operation/jump.py +19 -0
- pychef/operations/by_operation/jwk_to_pem.py +19 -0
- pychef/operations/by_operation/jwt_decode.py +19 -0
- pychef/operations/by_operation/jwt_sign.py +19 -0
- pychef/operations/by_operation/jwt_verify.py +19 -0
- pychef/operations/by_operation/keccak.py +19 -0
- pychef/operations/by_operation/label.py +19 -0
- pychef/operations/by_operation/levenshtein_distance.py +19 -0
- pychef/operations/by_operation/lm_hash.py +19 -0
- pychef/operations/by_operation/lorenz.py +19 -0
- pychef/operations/by_operation/ls47_decrypt.py +19 -0
- pychef/operations/by_operation/ls47_encrypt.py +19 -0
- pychef/operations/by_operation/luhn_checksum.py +19 -0
- pychef/operations/by_operation/lz4_compress.py +19 -0
- pychef/operations/by_operation/lz4_decompress.py +19 -0
- pychef/operations/by_operation/lzma_compress.py +19 -0
- pychef/operations/by_operation/lzma_decompress.py +19 -0
- pychef/operations/by_operation/lznt1_decompress.py +19 -0
- pychef/operations/by_operation/lzstring_compress.py +19 -0
- pychef/operations/by_operation/lzstring_decompress.py +19 -0
- pychef/operations/by_operation/magic.py +19 -0
- pychef/operations/by_operation/md2.py +19 -0
- pychef/operations/by_operation/md4.py +19 -0
- pychef/operations/by_operation/md5.py +19 -0
- pychef/operations/by_operation/md6.py +19 -0
- pychef/operations/by_operation/mean.py +19 -0
- pychef/operations/by_operation/median.py +19 -0
- pychef/operations/by_operation/merge.py +19 -0
- pychef/operations/by_operation/microsoft_script_decoder.py +19 -0
- pychef/operations/by_operation/mime_decoding.py +19 -0
- pychef/operations/by_operation/mod.py +19 -0
- pychef/operations/by_operation/modular_exponentiation.py +19 -0
- pychef/operations/by_operation/modular_inverse.py +19 -0
- pychef/operations/by_operation/multiple_bombe.py +19 -0
- pychef/operations/by_operation/multiply.py +19 -0
- pychef/operations/by_operation/murmurhash3.py +19 -0
- pychef/operations/by_operation/normalise_image.py +19 -0
- pychef/operations/by_operation/normalise_unicode.py +19 -0
- pychef/operations/by_operation/not_operation.py +19 -0
- pychef/operations/by_operation/nt_hash.py +19 -0
- pychef/operations/by_operation/numberwang.py +19 -0
- pychef/operations/by_operation/object_identifier_to_hex.py +19 -0
- pychef/operations/by_operation/offset_checker.py +19 -0
- pychef/operations/by_operation/optical_character_recognition.py +19 -0
- pychef/operations/by_operation/or_operation.py +19 -0
- pychef/operations/by_operation/p_list_viewer.py +19 -0
- pychef/operations/by_operation/pad_lines.py +19 -0
- pychef/operations/by_operation/parity_bit.py +19 -0
- pychef/operations/by_operation/parse_asn_1_hex_string.py +19 -0
- pychef/operations/by_operation/parse_colour_code.py +19 -0
- pychef/operations/by_operation/parse_csr.py +19 -0
- pychef/operations/by_operation/parse_datetime.py +19 -0
- pychef/operations/by_operation/parse_ethernet_frame.py +19 -0
- pychef/operations/by_operation/parse_ip_range.py +19 -0
- pychef/operations/by_operation/parse_ipv4_header.py +19 -0
- pychef/operations/by_operation/parse_ipv6_address.py +19 -0
- pychef/operations/by_operation/parse_objectid_timestamp.py +19 -0
- pychef/operations/by_operation/parse_qr_code.py +19 -0
- pychef/operations/by_operation/parse_ssh_host_key.py +19 -0
- pychef/operations/by_operation/parse_tcp.py +19 -0
- pychef/operations/by_operation/parse_tls_record.py +19 -0
- pychef/operations/by_operation/parse_tlv.py +19 -0
- pychef/operations/by_operation/parse_udp.py +19 -0
- pychef/operations/by_operation/parse_unix_file_permissions.py +19 -0
- pychef/operations/by_operation/parse_uri.py +19 -0
- pychef/operations/by_operation/parse_user_agent.py +19 -0
- pychef/operations/by_operation/parse_x_509_certificate.py +19 -0
- pychef/operations/by_operation/parse_x_509_crl.py +19 -0
- pychef/operations/by_operation/pem_to_hex.py +19 -0
- pychef/operations/by_operation/pem_to_jwk.py +19 -0
- pychef/operations/by_operation/pgp_decrypt.py +19 -0
- pychef/operations/by_operation/pgp_decrypt_and_verify.py +19 -0
- pychef/operations/by_operation/pgp_encrypt.py +19 -0
- pychef/operations/by_operation/pgp_encrypt_and_sign.py +19 -0
- pychef/operations/by_operation/pgp_sign.py +19 -0
- pychef/operations/by_operation/pgp_verify.py +19 -0
- pychef/operations/by_operation/php_deserialize.py +19 -0
- pychef/operations/by_operation/php_serialize.py +19 -0
- pychef/operations/by_operation/play_media.py +19 -0
- pychef/operations/by_operation/power_set.py +19 -0
- pychef/operations/by_operation/present_decrypt.py +19 -0
- pychef/operations/by_operation/present_encrypt.py +19 -0
- pychef/operations/by_operation/protobuf_decode.py +19 -0
- pychef/operations/by_operation/protobuf_encode.py +19 -0
- pychef/operations/by_operation/pseudo_random_integer_generator.py +19 -0
- pychef/operations/by_operation/pseudo_random_number_generator.py +19 -0
- pychef/operations/by_operation/pseudo_random_prime_generator.py +19 -0
- pychef/operations/by_operation/public_key_from_certificate.py +19 -0
- pychef/operations/by_operation/public_key_from_private_key.py +19 -0
- pychef/operations/by_operation/rabbit.py +19 -0
- pychef/operations/by_operation/rail_fence_cipher_decode.py +19 -0
- pychef/operations/by_operation/rail_fence_cipher_encode.py +19 -0
- pychef/operations/by_operation/rake.py +19 -0
- pychef/operations/by_operation/randomize_colour_palette.py +19 -0
- pychef/operations/by_operation/raw_deflate.py +19 -0
- pychef/operations/by_operation/raw_inflate.py +19 -0
- pychef/operations/by_operation/rc2_decrypt.py +19 -0
- pychef/operations/by_operation/rc2_encrypt.py +19 -0
- pychef/operations/by_operation/rc4.py +19 -0
- pychef/operations/by_operation/rc4_drop.py +19 -0
- pychef/operations/by_operation/rc6_decrypt.py +19 -0
- pychef/operations/by_operation/rc6_encrypt.py +19 -0
- pychef/operations/by_operation/register.py +19 -0
- pychef/operations/by_operation/regular_expression.py +19 -0
- pychef/operations/by_operation/remove_ansi_escape_codes.py +19 -0
- pychef/operations/by_operation/remove_diacritics.py +19 -0
- pychef/operations/by_operation/remove_exif.py +19 -0
- pychef/operations/by_operation/remove_line_numbers.py +19 -0
- pychef/operations/by_operation/remove_null_bytes.py +19 -0
- pychef/operations/by_operation/remove_whitespace.py +19 -0
- pychef/operations/by_operation/render_image.py +19 -0
- pychef/operations/by_operation/render_markdown.py +19 -0
- pychef/operations/by_operation/render_pdf.py +19 -0
- pychef/operations/by_operation/resize_image.py +19 -0
- pychef/operations/by_operation/return_operation.py +19 -0
- pychef/operations/by_operation/reverse.py +19 -0
- pychef/operations/by_operation/ripemd.py +19 -0
- pychef/operations/by_operation/rison_decode.py +19 -0
- pychef/operations/by_operation/rison_encode.py +19 -0
- pychef/operations/by_operation/ror13.py +19 -0
- pychef/operations/by_operation/rot13.py +19 -0
- pychef/operations/by_operation/rot13_brute_force.py +19 -0
- pychef/operations/by_operation/rot47.py +19 -0
- pychef/operations/by_operation/rot47_brute_force.py +19 -0
- pychef/operations/by_operation/rot8000.py +19 -0
- pychef/operations/by_operation/rotate_image.py +19 -0
- pychef/operations/by_operation/rotate_left.py +19 -0
- pychef/operations/by_operation/rotate_right.py +19 -0
- pychef/operations/by_operation/rsa_decrypt.py +19 -0
- pychef/operations/by_operation/rsa_encrypt.py +19 -0
- pychef/operations/by_operation/rsa_sign.py +19 -0
- pychef/operations/by_operation/rsa_verify.py +19 -0
- pychef/operations/by_operation/salsa20.py +19 -0
- pychef/operations/by_operation/scan_for_embedded_files.py +19 -0
- pychef/operations/by_operation/scatter_chart.py +19 -0
- pychef/operations/by_operation/scrypt.py +19 -0
- pychef/operations/by_operation/series_chart.py +19 -0
- pychef/operations/by_operation/set_difference.py +19 -0
- pychef/operations/by_operation/set_intersection.py +19 -0
- pychef/operations/by_operation/set_union.py +19 -0
- pychef/operations/by_operation/sha0.py +19 -0
- pychef/operations/by_operation/sha1.py +19 -0
- pychef/operations/by_operation/sha2.py +19 -0
- pychef/operations/by_operation/sha3.py +19 -0
- pychef/operations/by_operation/shake.py +19 -0
- pychef/operations/by_operation/sharpen_image.py +19 -0
- pychef/operations/by_operation/show_base64_offsets.py +19 -0
- pychef/operations/by_operation/show_on_map.py +19 -0
- pychef/operations/by_operation/shuffle.py +19 -0
- pychef/operations/by_operation/sigaba.py +19 -0
- pychef/operations/by_operation/sleep.py +19 -0
- pychef/operations/by_operation/sm2_decrypt.py +19 -0
- pychef/operations/by_operation/sm2_encrypt.py +19 -0
- pychef/operations/by_operation/sm3.py +19 -0
- pychef/operations/by_operation/sm4_decrypt.py +19 -0
- pychef/operations/by_operation/sm4_encrypt.py +19 -0
- pychef/operations/by_operation/snefru.py +19 -0
- pychef/operations/by_operation/sort.py +19 -0
- pychef/operations/by_operation/split.py +19 -0
- pychef/operations/by_operation/split_colour_channels.py +19 -0
- pychef/operations/by_operation/sql_beautify.py +19 -0
- pychef/operations/by_operation/sql_minify.py +19 -0
- pychef/operations/by_operation/ssdeep.py +19 -0
- pychef/operations/by_operation/standard_deviation.py +19 -0
- pychef/operations/by_operation/streebog.py +19 -0
- pychef/operations/by_operation/strings.py +19 -0
- pychef/operations/by_operation/strip_html_tags.py +19 -0
- pychef/operations/by_operation/strip_http_headers.py +19 -0
- pychef/operations/by_operation/strip_ipv4_header.py +19 -0
- pychef/operations/by_operation/strip_tcp_header.py +19 -0
- pychef/operations/by_operation/strip_udp_header.py +19 -0
- pychef/operations/by_operation/sub.py +19 -0
- pychef/operations/by_operation/subsection.py +19 -0
- pychef/operations/by_operation/substitute.py +19 -0
- pychef/operations/by_operation/subtract.py +19 -0
- pychef/operations/by_operation/sum.py +19 -0
- pychef/operations/by_operation/swap_case.py +19 -0
- pychef/operations/by_operation/swap_endianness.py +19 -0
- pychef/operations/by_operation/symmetric_difference.py +19 -0
- pychef/operations/by_operation/syntax_highlighter.py +19 -0
- pychef/operations/by_operation/tail.py +19 -0
- pychef/operations/by_operation/take_bytes.py +19 -0
- pychef/operations/by_operation/take_nth_bytes.py +19 -0
- pychef/operations/by_operation/tar.py +19 -0
- pychef/operations/by_operation/tcp_ip_checksum.py +19 -0
- pychef/operations/by_operation/tea_decrypt.py +19 -0
- pychef/operations/by_operation/tea_encrypt.py +19 -0
- pychef/operations/by_operation/template.py +19 -0
- pychef/operations/by_operation/text_encoding_brute_force.py +19 -0
- pychef/operations/by_operation/text_integer_conversion.py +19 -0
- pychef/operations/by_operation/to_base.py +19 -0
- pychef/operations/by_operation/to_base32.py +19 -0
- pychef/operations/by_operation/to_base45.py +19 -0
- pychef/operations/by_operation/to_base58.py +19 -0
- pychef/operations/by_operation/to_base62.py +19 -0
- pychef/operations/by_operation/to_base64.py +19 -0
- pychef/operations/by_operation/to_base85.py +19 -0
- pychef/operations/by_operation/to_base92.py +19 -0
- pychef/operations/by_operation/to_bcd.py +19 -0
- pychef/operations/by_operation/to_bech32.py +19 -0
- pychef/operations/by_operation/to_binary.py +19 -0
- pychef/operations/by_operation/to_braille.py +19 -0
- pychef/operations/by_operation/to_camel_case.py +19 -0
- pychef/operations/by_operation/to_case_insensitive_regex.py +19 -0
- pychef/operations/by_operation/to_charcode.py +19 -0
- pychef/operations/by_operation/to_cobs.py +19 -0
- pychef/operations/by_operation/to_decimal.py +19 -0
- pychef/operations/by_operation/to_float.py +19 -0
- pychef/operations/by_operation/to_hex.py +19 -0
- pychef/operations/by_operation/to_hex_content.py +19 -0
- pychef/operations/by_operation/to_hexdump.py +19 -0
- pychef/operations/by_operation/to_html_entity.py +19 -0
- pychef/operations/by_operation/to_kebab_case.py +19 -0
- pychef/operations/by_operation/to_lower_case.py +19 -0
- pychef/operations/by_operation/to_messagepack.py +19 -0
- pychef/operations/by_operation/to_modhex.py +19 -0
- pychef/operations/by_operation/to_morse_code.py +19 -0
- pychef/operations/by_operation/to_octal.py +19 -0
- pychef/operations/by_operation/to_punycode.py +19 -0
- pychef/operations/by_operation/to_quoted_printable.py +19 -0
- pychef/operations/by_operation/to_snake_case.py +19 -0
- pychef/operations/by_operation/to_table.py +19 -0
- pychef/operations/by_operation/to_unix_timestamp.py +19 -0
- pychef/operations/by_operation/to_upper_case.py +19 -0
- pychef/operations/by_operation/translate_datetime_format.py +19 -0
- pychef/operations/by_operation/triple_des_decrypt.py +19 -0
- pychef/operations/by_operation/triple_des_encrypt.py +19 -0
- pychef/operations/by_operation/twofish_decrypt.py +19 -0
- pychef/operations/by_operation/twofish_encrypt.py +19 -0
- pychef/operations/by_operation/typex.py +19 -0
- pychef/operations/by_operation/unescape_string.py +19 -0
- pychef/operations/by_operation/unescape_unicode_characters.py +19 -0
- pychef/operations/by_operation/unicode_text_format.py +19 -0
- pychef/operations/by_operation/unique.py +19 -0
- pychef/operations/by_operation/unix_timestamp_to_windows_filetime.py +19 -0
- pychef/operations/by_operation/untar.py +19 -0
- pychef/operations/by_operation/unzip.py +19 -0
- pychef/operations/by_operation/url_decode.py +19 -0
- pychef/operations/by_operation/url_encode.py +19 -0
- pychef/operations/by_operation/varint_decode.py +19 -0
- pychef/operations/by_operation/varint_encode.py +19 -0
- pychef/operations/by_operation/view_bit_plane.py +19 -0
- pychef/operations/by_operation/vigen_re_decode.py +19 -0
- pychef/operations/by_operation/vigen_re_encode.py +19 -0
- pychef/operations/by_operation/whirlpool.py +19 -0
- pychef/operations/by_operation/windows_filetime_to_unix_timestamp.py +19 -0
- pychef/operations/by_operation/wrap.py +19 -0
- pychef/operations/by_operation/xkcd_random_number.py +19 -0
- pychef/operations/by_operation/xml_beautify.py +19 -0
- pychef/operations/by_operation/xml_minify.py +19 -0
- pychef/operations/by_operation/xor.py +19 -0
- pychef/operations/by_operation/xor_brute_force.py +19 -0
- pychef/operations/by_operation/xor_checksum.py +19 -0
- pychef/operations/by_operation/xpath_expression.py +19 -0
- pychef/operations/by_operation/xsalsa20.py +19 -0
- pychef/operations/by_operation/xtea_decrypt.py +19 -0
- pychef/operations/by_operation/xtea_encrypt.py +19 -0
- pychef/operations/by_operation/xxtea_decrypt.py +19 -0
- pychef/operations/by_operation/xxtea_encrypt.py +19 -0
- pychef/operations/by_operation/yaml_to_json.py +19 -0
- pychef/operations/by_operation/yara_rules.py +19 -0
- pychef/operations/by_operation/zip.py +19 -0
- pychef/operations/by_operation/zlib_deflate.py +19 -0
- pychef/operations/by_operation/zlib_inflate.py +19 -0
- pychef/operations/ciphers.py +501 -0
- pychef/operations/cmac.py +74 -0
- pychef/operations/code_queries.py +855 -0
- pychef/operations/compression.py +167 -0
- pychef/operations/crc_models.py +179 -0
- pychef/operations/crypto_extra.py +599 -0
- pychef/operations/datetime_ops.py +313 -0
- pychef/operations/des.py +1063 -0
- pychef/operations/disassembly.py +453 -0
- pychef/operations/ecdsa_conversion.py +157 -0
- pychef/operations/elf_info.py +377 -0
- pychef/operations/encoding.py +440 -0
- pychef/operations/encoding_extra.py +255 -0
- pychef/operations/fernet.py +77 -0
- pychef/operations/fingerprints.py +363 -0
- pychef/operations/flow_more.py +92 -0
- pychef/operations/formats.py +188 -0
- pychef/operations/formats_extra.py +310 -0
- pychef/operations/gost_core.py +866 -0
- pychef/operations/has160.py +85 -0
- pychef/operations/hashing.py +350 -0
- pychef/operations/image_ops.py +1104 -0
- pychef/operations/jpeg_decoder.py +315 -0
- pychef/operations/jpeg_encoder.py +373 -0
- pychef/operations/keccak.py +101 -0
- pychef/operations/legacy_crypto.py +618 -0
- pychef/operations/ls47.py +105 -0
- pychef/operations/lz_codecs.py +343 -0
- pychef/operations/maths.py +355 -0
- pychef/operations/md6_core.py +212 -0
- pychef/operations/microsoft_script.py +116 -0
- pychef/operations/misc.py +379 -0
- pychef/operations/modern_ciphers.py +541 -0
- pychef/operations/network.py +436 -0
- pychef/operations/ocr.py +202 -0
- pychef/operations/password_hashes.py +408 -0
- pychef/operations/pgp.py +524 -0
- pychef/operations/presentation.py +413 -0
- pychef/operations/protocols.py +528 -0
- pychef/operations/public_key.py +848 -0
- pychef/operations/rabbit.py +143 -0
- pychef/operations/radix_extra.py +220 -0
- pychef/operations/rake.py +66 -0
- pychef/operations/random_prime.py +58 -0
- pychef/operations/rc2.py +143 -0
- pychef/operations/rc6.py +293 -0
- pychef/operations/remaining_formats.py +802 -0
- pychef/operations/ripemd_core.py +486 -0
- pychef/operations/rotor_machines.py +368 -0
- pychef/operations/sha_custom.py +367 -0
- pychef/operations/sm2.py +179 -0
- pychef/operations/sm4.py +186 -0
- pychef/operations/snefru_core.py +314 -0
- pychef/operations/stream_ciphers.py +192 -0
- pychef/operations/streebog_core.py +358 -0
- pychef/operations/text.py +562 -0
- pychef/operations/text_encoding.py +102 -0
- pychef/operations/text_encoding_brute_force.py +234 -0
- pychef/operations/twofish_core.py +225 -0
- pychef/operations/utility_extra.py +426 -0
- pychef/operations/web_tokens.py +159 -0
- pychef/operations/whirlpool_core.py +137 -0
- pychef/operations/yara.py +393 -0
- pychef/packets.py +974 -0
- pychef/pipeline.py +380 -0
- pychef/py.typed +1 -0
- pychef/recipe.py +291 -0
- pychef/registry.py +92 -0
- pychef/types.py +46 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cyberchef-py
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Unofficial pure-Python CyberChef-compatible recipes, pipelines, and CTF tools
|
|
5
|
+
Project-URL: Homepage, https://github.com/MichaelWeissDEV/pychef
|
|
6
|
+
Project-URL: Source, https://github.com/MichaelWeissDEV/pychef
|
|
7
|
+
Project-URL: Issues, https://github.com/MichaelWeissDEV/pychef/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/MichaelWeissDEV/pychef/blob/main/CHANGELOG.md
|
|
9
|
+
Project-URL: Upstream, https://github.com/gchq/CyberChef
|
|
10
|
+
Author: Michael Weiss
|
|
11
|
+
License-Expression: Apache-2.0
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
License-File: NOTICE
|
|
14
|
+
License-File: THIRD_PARTY_LICENSES.md
|
|
15
|
+
Keywords: cryptography,ctf,cyberchef,data-transformation,encoding,pcap
|
|
16
|
+
Classifier: Development Status :: 3 - Alpha
|
|
17
|
+
Classifier: Intended Audience :: Developers
|
|
18
|
+
Classifier: Intended Audience :: Information Technology
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
26
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
27
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
28
|
+
Classifier: Topic :: Security :: Cryptography
|
|
29
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
30
|
+
Classifier: Typing :: Typed
|
|
31
|
+
Requires-Python: >=3.10
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# PyChef
|
|
35
|
+
|
|
36
|
+
PyChef is an unofficial, dependency-free, pure-Python implementation of CyberChef's recipe
|
|
37
|
+
model and data-transformation operations. It is intended for scripts, tests,
|
|
38
|
+
services, and offline tooling that must not require Node.js or JavaScript at
|
|
39
|
+
runtime.
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
The PyPI distribution is named `cyberchef-py`; the Python import is `pychef`.
|
|
44
|
+
|
|
45
|
+
```console
|
|
46
|
+
python -m pip install cyberchef-py
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
With uv:
|
|
50
|
+
|
|
51
|
+
```console
|
|
52
|
+
uv add cyberchef-py
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Python 3.10 or newer is required. The published package has no runtime
|
|
56
|
+
dependencies.
|
|
57
|
+
|
|
58
|
+
Run the complete local example from a repository checkout:
|
|
59
|
+
|
|
60
|
+
```console
|
|
61
|
+
uv sync --locked
|
|
62
|
+
uv run python examples/quickstart.py
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Quick start
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from pychef import bake
|
|
69
|
+
|
|
70
|
+
result = bake(
|
|
71
|
+
"Hello, World!",
|
|
72
|
+
[
|
|
73
|
+
{"op": "To Base64", "args": ["A-Za-z0-9+/="]},
|
|
74
|
+
{"op": "Reverse", "args": ["Character"]},
|
|
75
|
+
],
|
|
76
|
+
)
|
|
77
|
+
assert result == b"==QIkxmcvdFIs8GbsVGS"
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Binary operations preserve `bytes`; text operations return `str`. Set
|
|
81
|
+
`return_type="bytes"` or `return_type="str"` to request a final conversion.
|
|
82
|
+
Recipes accept the same `{"op": ..., "args": [...]}` shape used by CyberChef,
|
|
83
|
+
as well as operation-name strings for argument-free steps.
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from pychef import Chef, Recipe
|
|
87
|
+
|
|
88
|
+
recipe = Recipe(["Gunzip", {"op": "Decode text", "args": ["UTF-8 (65001)"]}])
|
|
89
|
+
result = Chef().bake(compressed_data, recipe)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Fluent pipelines
|
|
93
|
+
|
|
94
|
+
`Pipeline` builds immutable, reusable transformations. Use `.then()` for any
|
|
95
|
+
registered CyberChef operation or the typed convenience methods for common CTF
|
|
96
|
+
workflows. Pipelines compose with `|`; a value can also be piped into one.
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from pychef import Pipeline
|
|
100
|
+
|
|
101
|
+
decode = Pipeline().from_hex().xor(b"\x42").decode()
|
|
102
|
+
assert decode("0a272e2e2d") == "Hello"
|
|
103
|
+
assert "0a272e2e2d" | decode == "Hello"
|
|
104
|
+
|
|
105
|
+
base64_decode = Pipeline().from_base64()
|
|
106
|
+
combined = decode | Pipeline().to_base64()
|
|
107
|
+
results = combined.transform_many(["0a272e2e2d", "152d302e26"])
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Branches receive the same current value. Their outputs can be concatenated as
|
|
111
|
+
long as all branches return the same type as the separator:
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
hash_line = Pipeline().concat(
|
|
115
|
+
Pipeline().digest("md5"),
|
|
116
|
+
Pipeline().digest("sha256"),
|
|
117
|
+
separator=":",
|
|
118
|
+
)
|
|
119
|
+
print(hash_line(b"flag"))
|
|
120
|
+
|
|
121
|
+
trace = decode.trace("0a272e2e2d")
|
|
122
|
+
print([(step.name, step.output) for step in trace])
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Python callables and structured data are valid stages too. `.select()` walks
|
|
126
|
+
nested dictionary keys and sequence indexes. A pipeline that only contains
|
|
127
|
+
CyberChef operations can be recovered as `.recipe`.
|
|
128
|
+
|
|
129
|
+
## CTF and binary helpers
|
|
130
|
+
|
|
131
|
+
The top-level API includes pwntools-style integer packing, explicit endian
|
|
132
|
+
variants, byte XOR, de Bruijn patterns, dumps, hashing, and flattening:
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
from pychef import cyclic, cyclic_find, flat, p32, p32be, sha256, u64
|
|
136
|
+
|
|
137
|
+
payload = flat(b"A" * 40, p32(0xDEADBEEF), p32be(0x1337))
|
|
138
|
+
address = u64(leaked_bytes)
|
|
139
|
+
offset = cyclic_find(crashed_value)
|
|
140
|
+
fingerprint = sha256(payload)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
`p8`, `p16`, `p32`, and `p64` use little endian by default; `p16le`/`p16be`,
|
|
144
|
+
`p32le`/`p32be`, `p64le`/`p64be`, and matching `u*` functions are explicit.
|
|
145
|
+
`pack()` and `unpack()` support arbitrary byte-aligned widths and signed
|
|
146
|
+
integers. `swap_endian()` reverses each fixed-width word.
|
|
147
|
+
|
|
148
|
+
AES helpers accept CBC, ECB, CFB, OFB, CTR, and authenticated GCM. Non-ECB
|
|
149
|
+
modes require an explicit IV/nonce. GCM appends its 16-byte tag by default;
|
|
150
|
+
detached tags are available through `aes_gcm_encrypt()`:
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
from pychef import Pipeline, aes_decrypt, aes_encrypt, aes_gcm_encrypt
|
|
154
|
+
|
|
155
|
+
ciphertext = aes_encrypt(data, key, mode="CBC", iv=iv, padding="pkcs7")
|
|
156
|
+
assert aes_decrypt(ciphertext, key, mode="CBC", iv=iv) == data
|
|
157
|
+
|
|
158
|
+
ciphertext, tag = aes_gcm_encrypt(data, key, iv=nonce, aad=b"header")
|
|
159
|
+
round_trip = (
|
|
160
|
+
Pipeline()
|
|
161
|
+
.aes_encrypt(key, mode="GCM", iv=nonce, aad=b"header")
|
|
162
|
+
.aes_decrypt(key, mode="GCM", iv=nonce, aad=b"header")
|
|
163
|
+
)
|
|
164
|
+
assert round_trip(data) == data
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Keys, IVs, and tags are raw bytes by default. Pass `key_format="hex"`,
|
|
168
|
+
`iv_format="hex"`, or `tag_format="hex"` for textual hexadecimal material.
|
|
169
|
+
|
|
170
|
+
## Packets and capture files
|
|
171
|
+
|
|
172
|
+
`parse_capture()` auto-detects classic PCAP and PCAPNG and returns ordinary
|
|
173
|
+
Python dictionaries. Ethernet/VLAN, Linux cooked captures, loopback/raw IP,
|
|
174
|
+
ARP, IPv4, IPv6 extension headers, ICMP, TCP options, UDP, DNS, and recognizable
|
|
175
|
+
HTTP/TLS records are decoded recursively. Unsupported link or application data
|
|
176
|
+
remains available as bytes.
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
from pychef import Pipeline, parse_capture, read_capture
|
|
180
|
+
|
|
181
|
+
capture = read_capture("challenge.pcap")
|
|
182
|
+
first_packet = capture["packets"][0]["decoded"]
|
|
183
|
+
|
|
184
|
+
source = (Pipeline().parse_capture().select("packets", 0, "decoded", "network", "source"))(
|
|
185
|
+
pcap_bytes
|
|
186
|
+
)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Parsers enforce packet-count, packet-size, and file-size limits. `json_safe()`
|
|
190
|
+
or `packet_json()` converts retained byte strings to `{hex, length}` objects for
|
|
191
|
+
JSON output without losing their sizes.
|
|
192
|
+
|
|
193
|
+
## Compatibility status
|
|
194
|
+
|
|
195
|
+
The pinned reference is CyberChef 11.3.0 at commit
|
|
196
|
+
`c56dd23358e948aff9f3f98913818e544227da13`.
|
|
197
|
+
|
|
198
|
+
This alpha release registers all 502 upstream operation names (100% name
|
|
199
|
+
coverage). Every registered operation has its own public Python module below
|
|
200
|
+
`pychef.operations.by_operation`; a structural test prevents operations from
|
|
201
|
+
being registered through a shared catch-all module. Shared algorithm cores are
|
|
202
|
+
kept separate where several operations use the same primitive. The exhaustive
|
|
203
|
+
name-by-name matrix is in [COMPATIBILITY.md](COMPATIBILITY.md).
|
|
204
|
+
|
|
205
|
+
Compatibility can also be inspected in Python:
|
|
206
|
+
|
|
207
|
+
```python
|
|
208
|
+
from pychef import compatibility_report
|
|
209
|
+
|
|
210
|
+
report = compatibility_report()
|
|
211
|
+
print(len(report.implemented), len(report.missing), report.complete)
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
“Implemented” in the inventory means that an operation is callable. Exact
|
|
215
|
+
option-level parity is established incrementally through official CyberChef
|
|
216
|
+
vectors ported to pytest. The current suite covers deterministic encodings,
|
|
217
|
+
compression, hashes, classical and modern ciphers, binary serialization,
|
|
218
|
+
recipe flow control, public-key operations, raster images, media metadata,
|
|
219
|
+
charts, coordinates, network requests, Argon2/Bcrypt, SM2, PGP workflows,
|
|
220
|
+
machine-code inspection, JSON query languages, OCR, and YARA rules.
|
|
221
|
+
|
|
222
|
+
Name coverage is deliberately separate from reference parity. Some callable
|
|
223
|
+
operations are dependency-free compatibility fallbacks or support a documented
|
|
224
|
+
format subset. Remaining broad parity boundaries include decoding arbitrary QR
|
|
225
|
+
symbols; palette/interlaced PNG, progressive/CMYK JPEG, and compressed TIFF;
|
|
226
|
+
complete Typex/SIGABA/Lorenz machine presets; full JavaScript/Jq/Jsonata and
|
|
227
|
+
YARA grammars; general-purpose OCR; complete instruction decoding; AMF3
|
|
228
|
+
externalizable values; and interoperable OpenPGP packets. The MD6, Snefru,
|
|
229
|
+
Streebog, Whirlpool, RIPEMD, Twofish, GOST, CTPH, SSDEEP, CRC, JPEG baseline,
|
|
230
|
+
GIF first-frame, and uncompressed TIFF paths now have real Python
|
|
231
|
+
implementations and official vectors rather than compatibility placeholders.
|
|
232
|
+
|
|
233
|
+
## Security and performance
|
|
234
|
+
|
|
235
|
+
- There are no runtime dependencies and no subprocess or JavaScript bridge.
|
|
236
|
+
- The package does not perform network access on import. Only explicit
|
|
237
|
+
`HTTP request` and `DNS over HTTPS` operations access the network; they reject
|
|
238
|
+
credentials in URLs and local/private/reserved destinations.
|
|
239
|
+
- JWT verification only accepts supported HMAC algorithms and rejects unsigned
|
|
240
|
+
or asymmetric-algorithm confusion.
|
|
241
|
+
- Random generators use Python's `secrets` module.
|
|
242
|
+
- Parsers validate lengths and fail through `OperationError` instead of silently
|
|
243
|
+
returning corrupt data.
|
|
244
|
+
- PCAP/PCAPNG readers cap file, packet, and packet-count sizes and retain a
|
|
245
|
+
per-packet decode error instead of discarding the captured bytes.
|
|
246
|
+
- A `Recipe` can be constructed once and reused to avoid repeat parsing.
|
|
247
|
+
- A `Pipeline` is immutable and can likewise be constructed once and reused.
|
|
248
|
+
|
|
249
|
+
Pure-Python cryptographic implementations are provided for compatibility and
|
|
250
|
+
testing; use a professionally audited cryptographic package for production key
|
|
251
|
+
protection or protocol security.
|
|
252
|
+
|
|
253
|
+
## Development
|
|
254
|
+
|
|
255
|
+
Python 3.10 or newer and [uv](https://docs.astral.sh/uv/) are required for
|
|
256
|
+
development only:
|
|
257
|
+
|
|
258
|
+
```console
|
|
259
|
+
uv sync --dev
|
|
260
|
+
uv run pytest
|
|
261
|
+
uv run ruff check .
|
|
262
|
+
uv run ruff format --check .
|
|
263
|
+
uv run ty check
|
|
264
|
+
uv build
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Pytest enforces branch coverage of at least 75%; the current suite contains
|
|
268
|
+
more than 850 tests and reports 84% branch coverage. Ruff handles
|
|
269
|
+
formatting and linting, and `ty` checks the typed public API. The published
|
|
270
|
+
wheel has no runtime dependencies.
|
|
271
|
+
|
|
272
|
+
PyChef is an independent Python port. CyberChef is Crown copyright 2016, GCHQ,
|
|
273
|
+
and is licensed under Apache License 2.0. See [NOTICE](NOTICE),
|
|
274
|
+
[THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md), and [LICENSE](LICENSE).
|