txt2stix 1.0.4__tar.gz → 1.0.6__tar.gz
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.
- {txt2stix-1.0.4 → txt2stix-1.0.6}/.github/workflows/run-tests.yml +13 -10
- {txt2stix-1.0.4 → txt2stix-1.0.6}/PKG-INFO +26 -1
- {txt2stix-1.0.4 → txt2stix-1.0.6}/README.md +25 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/pyproject.toml +1 -1
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/test_main.py +9 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/base.py +10 -0
- txt2stix-1.0.6/txt2stix/credential_checker.py +97 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/retriever.py +5 -5
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/txt2stix.py +7 -1
- {txt2stix-1.0.4 → txt2stix-1.0.6}/.env.example +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/.env.markdown +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/.github/workflows/create-release.yml +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/.gitignore +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/LICENSE +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/docs/README.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/docs/stix-mapping.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/docs/txt2stix.png +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/extractions/ai/config.yaml +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/extractions/lookup/config.yaml +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/extractions/pattern/config.yaml +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/helpers/mimetype_filename_extension_list.csv +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/helpers/stix_relationship_types.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/helpers/tlds.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/helpers/windows_registry_key_prefix.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/_README.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/_generate_lookups.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/attack_pattern.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/campaign.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/country_iso3166_alpha2.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/course_of_action.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/disarm_id_v1_5.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/disarm_name_v1_5.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/extensions.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/identity.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/infrastructure.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/intrusion_set.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/malware.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_atlas_id_v4_5_2.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_atlas_name_v4_5_2.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_enterprise_aliases_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_enterprise_id_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_enterprise_name_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_ics_aliases_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_ics_id_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_ics_name_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_mobile_aliases_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_mobile_id_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_mobile_name_v16_0.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_capec_id_v3_9.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_capec_name_v3_9.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_cwe_id_v4_15.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_cwe_name_v4_15.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/threat_actor.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/tld.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/tool.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/includes/tests/test_cases.yaml +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/requirements.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/README.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/ai_country.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/ai_mitre_attack_enterprise.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/ai_mitre_attack_ics.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/ai_mitre_attack_mobile.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/ai_mitre_capec.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/ai_mitre_cwe.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/all_cases.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_autonomous_system_number.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_all.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_amex.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_diners.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_discover.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_jcb.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_mastercard.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_union_pay.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_visa.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_country_alpha2.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cpe_uri.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_btc_transaction.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_btc_wallet.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_eth_transaction.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_eth_wallet.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_xmr_transaction.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_xmr_wallet.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cve_id.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_directory_unix.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_directory_unix_file.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_directory_windows.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_directory_windows_with_file.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_disarm.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_disarm_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_domain_name_only.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_domain_name_subdomain.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_email_address.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_file_hash_md5.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_file_hash_sha_1.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_file_hash_sha_224.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_file_hash_sha_256.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_file_hash_sha_384.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_file_hash_sha_512.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_file_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_host_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_host_name_file.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_host_name_path.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_host_name_subdomain.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_host_name_url.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_iban_number.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_ipv4_address_cidr.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_ipv4_address_only.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_ipv4_address_port.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_ipv6_address_cidr.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_ipv6_address_only.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_ipv6_address_port.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mac_address.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_atlas.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_atlas_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_enterprise.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_enterprise_aliases.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_enterprise_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_ics.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_ics_aliases.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_ics_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_mobile.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_mobile_aliases.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_mobile_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_capec.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_capec_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_cwe.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_cwe_name.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_phone_number.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_url.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_url_file.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_url_path.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_user_agent.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_windows_registry_key.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_attack_pattern.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_campaign.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_course_of_action.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_identity.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_infrastructure.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_intrusion_set.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_malware.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_threat_actor.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/lookup_tool.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/attack_flow_demo.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/attack_navigator_demo.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/basic_relationship.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/char_length_too_long.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/descriptive_for_ai_relationships_1.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/disarm_demo.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/embedded_img_ignore.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/embedded_link_ignore.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/ip1.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/ip2.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/known_whitelist_match.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/mitre_attack_enterprise_ai_demo.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/mitre_attack_enterprise_lookup_demo.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/mixed_extractions.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/not_security_content.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/test_ai_hash_error_with_stix2_lib.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/test_aliases.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/test_extraction_boundary.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/manually_generated_reports/test_extraction_escapes.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/APT28-Center-of-Storm-2017.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/Bitdefender-Labs-Report-X-creat6958-en-EN.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/FireEyeAPT39.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/France_CERT_APT31_Pakdoor_TLPWHITE.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/Group-IB_Ransomware_Uncovered_whitepaper_eng.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/JOINT_CSA_HUNTING_RU_INTEL_SNAKE_MALWARE_20230509.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/TA22-0126-QAKBOT-analysis-TLP-GREEN.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/dinners_card.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/mandiant-apt1.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/real_intel_reports/mykings_report_final.txt +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/manual-tests/cases-ai-relationships.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/manual-tests/cases-extraction-type-ai.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/manual-tests/cases-extraction-type-lookup.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/manual-tests/cases-extraction-type-pattern.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/manual-tests/cases-standard-tests.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/scripts/generate_simple_extraction_test_cases_txt_files.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/test_attack_flow.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/test_bundler.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/test_extractors.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/test_indicator.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/test_lookups.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/test_run_txt2stix.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/test_utils.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/tests/src/utils.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/anthropic.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/deepseek.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/gemini.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/openai.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/openrouter.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/prompts.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/ai_extractor/utils.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/attack_flow.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/bundler.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/common.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/extractions.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/indicator.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/lookups.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/base_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/README.md +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/amex_card_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/diners_card_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/discover_card_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/jcb_card_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/master_card_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/union_card_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/card/visa_card_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/crypto/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/crypto/btc_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/directory/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/directory/unix_directory_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/directory/unix_file_path_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/directory/windows_directory_path_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/directory/windows_file_path_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/domain/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/domain/domain_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/domain/hostname_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/domain/sub_domain_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/hashes/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/hashes/md5_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/hashes/sha1_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/hashes/sha224_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/hashes/sha2_256_exactor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/hashes/sha2_512_exactor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/hashes/sha3_256_exactor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/hashes/sha3_512_exactor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/helper.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/ip/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/ip/ipv4_cidr_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/ip/ipv4_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/ip/ipv4_port_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/ip/ipv6_cidr_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/ip/ipv6_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/ip/ipv6_port_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/asn_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/cpe_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/cve_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/email_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/filename_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/iban_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/mac_address_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/phonenumber_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/user_agent_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/others/windows_registry_key_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/url/__init__.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/url/url_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/url/url_file_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/pattern/extractors/url/url_path_extractor.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/stix.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix/utils.py +0 -0
- {txt2stix-1.0.4 → txt2stix-1.0.6}/txt2stix.py +0 -0
@@ -1,15 +1,19 @@
|
|
1
1
|
name: Run Tests
|
2
2
|
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
|
3
6
|
on:
|
4
7
|
push:
|
5
8
|
branches:
|
6
9
|
- main
|
7
10
|
pull_request:
|
8
|
-
|
9
|
-
|
11
|
+
types:
|
12
|
+
- opened
|
13
|
+
- synchronize
|
10
14
|
|
11
15
|
jobs:
|
12
|
-
|
16
|
+
test-pipeline:
|
13
17
|
runs-on: ubuntu-latest
|
14
18
|
environment: txt2stix_tests
|
15
19
|
|
@@ -24,8 +28,8 @@ jobs:
|
|
24
28
|
with:
|
25
29
|
python-version: "3.11"
|
26
30
|
|
27
|
-
|
28
|
-
|
31
|
+
- name: Setup environment
|
32
|
+
id: setup_environment
|
29
33
|
run: |
|
30
34
|
echo > .env
|
31
35
|
echo "CTIBUTLER_BASE_URL=${{ secrets.CTIBUTLER_BASE_URL }}" >> .env
|
@@ -34,31 +38,30 @@ jobs:
|
|
34
38
|
echo "VULMATCH_API_KEY=${{ secrets.VULMATCH_API_KEY }}" >> .env
|
35
39
|
echo "TEST_AI_MODEL=${{ secrets.TEST_AI_MODEL }}" >> .env
|
36
40
|
echo "INPUT_TOKEN_LIMIT=1000" >> .env
|
37
|
-
|
38
41
|
echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY}}" >> .env
|
39
42
|
echo "ANTHROPIC_API_KEY=${{ secrets.ANTHROPIC_API_KEY}}" >> .env
|
40
43
|
echo "GOOGLE_API_KEY=${{ secrets.GOOGLE_API_KEY}}" >> .env
|
41
44
|
echo "OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY}}" >> .env
|
42
|
-
|
43
45
|
echo "BIN_LIST_API_KEY=${{ secrets.BIN_LIST_API_KEY }}" >> .env
|
44
46
|
|
45
|
-
- name:
|
46
|
-
id:
|
47
|
+
- name: Unit tests
|
48
|
+
id: unit_tests
|
47
49
|
run: |
|
48
50
|
set -a;
|
49
51
|
source .env;
|
50
52
|
set +a;
|
51
53
|
pip install -e .[tests]
|
52
|
-
|
53
54
|
pytest --cov --cov-branch --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
|
54
55
|
|
55
56
|
- name: Upload coverage reports to Codecov
|
57
|
+
id: upload_unit_test_coverage
|
56
58
|
if: ${{ !cancelled() }}
|
57
59
|
uses: codecov/codecov-action@v5
|
58
60
|
with:
|
59
61
|
token: ${{ secrets.CODECOV_TOKEN }}
|
60
62
|
|
61
63
|
- name: Upload test results to Codecov
|
64
|
+
id: upload_unit_test_results
|
62
65
|
if: ${{ !cancelled() }}
|
63
66
|
uses: codecov/test-results-action@v1
|
64
67
|
with:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: txt2stix
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.6
|
4
4
|
Summary: txt2stix is a Python script that is designed to identify and extract IoCs and TTPs from text files, identify the relationships between them, convert them to STIX 2.1 objects, and output as a STIX 2.1 bundle.
|
5
5
|
Project-URL: Homepage, https://github.com/muchdogesec/txt2stix
|
6
6
|
Project-URL: Issues, https://github.com/muchdogesec/txt2stix/issues
|
@@ -111,6 +111,31 @@ cp .env.example .env
|
|
111
111
|
|
112
112
|
To see more information about how to set the variables, and what they do, read the `.env.markdown` file.
|
113
113
|
|
114
|
+
Then test your configoration
|
115
|
+
|
116
|
+
```shell
|
117
|
+
python3 txt2stix.py \
|
118
|
+
--check-credentials
|
119
|
+
```
|
120
|
+
|
121
|
+
It will return a response to show what API keys are working
|
122
|
+
|
123
|
+
```txt
|
124
|
+
============= Service Statuses ===============
|
125
|
+
ctibutler : authorized ✔
|
126
|
+
vulmatch : authorized ✔
|
127
|
+
binlist : authorized ✔
|
128
|
+
|
129
|
+
LLMS:
|
130
|
+
openai : authorized ✔
|
131
|
+
deepseek : unsupported –
|
132
|
+
gemini : unsupported –
|
133
|
+
openrouter : unsupported –
|
134
|
+
anthropic : unsupported –
|
135
|
+
```
|
136
|
+
|
137
|
+
Not all services need to be configured, if you have no intention of using them.
|
138
|
+
|
114
139
|
### Usage
|
115
140
|
|
116
141
|
```shell
|
@@ -67,6 +67,31 @@ cp .env.example .env
|
|
67
67
|
|
68
68
|
To see more information about how to set the variables, and what they do, read the `.env.markdown` file.
|
69
69
|
|
70
|
+
Then test your configoration
|
71
|
+
|
72
|
+
```shell
|
73
|
+
python3 txt2stix.py \
|
74
|
+
--check-credentials
|
75
|
+
```
|
76
|
+
|
77
|
+
It will return a response to show what API keys are working
|
78
|
+
|
79
|
+
```txt
|
80
|
+
============= Service Statuses ===============
|
81
|
+
ctibutler : authorized ✔
|
82
|
+
vulmatch : authorized ✔
|
83
|
+
binlist : authorized ✔
|
84
|
+
|
85
|
+
LLMS:
|
86
|
+
openai : authorized ✔
|
87
|
+
deepseek : unsupported –
|
88
|
+
gemini : unsupported –
|
89
|
+
openrouter : unsupported –
|
90
|
+
anthropic : unsupported –
|
91
|
+
```
|
92
|
+
|
93
|
+
Not all services need to be configured, if you have no intention of using them.
|
94
|
+
|
70
95
|
### Usage
|
71
96
|
|
72
97
|
```shell
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "txt2stix"
|
7
|
-
version = "1.0.
|
7
|
+
version = "1.0.6"
|
8
8
|
authors = [{ name = "dogesec" }]
|
9
9
|
maintainers = [{ name = "dogesec" }]
|
10
10
|
description = "txt2stix is a Python script that is designed to identify and extract IoCs and TTPs from text files, identify the relationships between them, convert them to STIX 2.1 objects, and output as a STIX 2.1 bundle."
|
@@ -349,3 +349,12 @@ def test_extract_relationships_with_ai():
|
|
349
349
|
|
350
350
|
mock_ai_session.extract_relationships.side_effect = Exception
|
351
351
|
assert extract_relationships_with_ai(mock_bundler, text, all_extracts, mock_ai_session) == None
|
352
|
+
|
353
|
+
|
354
|
+
def test_check_credentials(monkeypatch):
|
355
|
+
monkeypatch.setattr(sys, 'argv', [
|
356
|
+
"program",
|
357
|
+
"--check_credentials"
|
358
|
+
])
|
359
|
+
with pytest.raises(SystemExit):
|
360
|
+
parse_args()
|
@@ -90,3 +90,13 @@ class BaseAIExtractor():
|
|
90
90
|
|
91
91
|
def __hash__(self):
|
92
92
|
return hash(self.extractor_name)
|
93
|
+
|
94
|
+
def check_credential(self):
|
95
|
+
try:
|
96
|
+
return "authorized" if self._check_credential() else "unauthorized"
|
97
|
+
except:
|
98
|
+
return "unknown"
|
99
|
+
|
100
|
+
def _check_credential(self):
|
101
|
+
self.llm.complete("say 'hi'")
|
102
|
+
return True
|
@@ -0,0 +1,97 @@
|
|
1
|
+
import argparse
|
2
|
+
import os
|
3
|
+
import random
|
4
|
+
from urllib.parse import urljoin
|
5
|
+
import requests
|
6
|
+
from stix2extensions.tools import creditcard2stix
|
7
|
+
from txt2stix.retriever import STIXObjectRetriever
|
8
|
+
|
9
|
+
|
10
|
+
def check_binlist():
|
11
|
+
card = str(random.randrange(432101, 456789))
|
12
|
+
api_key = os.getenv("BIN_LIST_API_KEY", "")
|
13
|
+
return "authorized" if creditcard2stix.get_bin_data(card, api_key) else "unauthorized"
|
14
|
+
|
15
|
+
|
16
|
+
def check_llms():
|
17
|
+
from txt2stix.txt2stix import parse_model
|
18
|
+
|
19
|
+
auth_info = dict()
|
20
|
+
for model_name in ["openai", "deepseek", "gemini", "openrouter", "anthropic"]:
|
21
|
+
try:
|
22
|
+
model = parse_model(model_name)
|
23
|
+
auth_info[model_name] = model.check_credential()
|
24
|
+
except argparse.ArgumentTypeError:
|
25
|
+
auth_info[model_name] = "unsupported"
|
26
|
+
except:
|
27
|
+
auth_info[model_name] = "unauthorized"
|
28
|
+
return auth_info
|
29
|
+
|
30
|
+
|
31
|
+
def check_ctibutler_vulmatch(service):
|
32
|
+
retriever = STIXObjectRetriever(service)
|
33
|
+
path = dict(
|
34
|
+
ctibutler="v1/location/versions/available/",
|
35
|
+
vulmatch="v1/cve/objects/vulnerability--f552f6f4-39da-48dc-8717-323772c99588/",
|
36
|
+
)[service]
|
37
|
+
try:
|
38
|
+
resp = retriever.session.get(urljoin(retriever.api_root, path))
|
39
|
+
match resp.status_code:
|
40
|
+
case 401 | 403:
|
41
|
+
return "unauthorized"
|
42
|
+
case 200:
|
43
|
+
return "authorized"
|
44
|
+
case _:
|
45
|
+
return "unknown"
|
46
|
+
except:
|
47
|
+
return "offline"
|
48
|
+
|
49
|
+
def check_btcscan():
|
50
|
+
url = "https://btcscan.org/api/blocks/tip/height"
|
51
|
+
try:
|
52
|
+
resp = requests.get(url)
|
53
|
+
match resp.status_code:
|
54
|
+
case 401 | 403:
|
55
|
+
return "unauthorized"
|
56
|
+
case 200:
|
57
|
+
return "authorized"
|
58
|
+
case _:
|
59
|
+
return "unknown"
|
60
|
+
except:
|
61
|
+
return "offline"
|
62
|
+
|
63
|
+
def check_statuses(test_llms=False):
|
64
|
+
statuses = dict(
|
65
|
+
ctibutler=check_ctibutler_vulmatch("ctibutler"),
|
66
|
+
vulmatch=check_ctibutler_vulmatch("vulmatch"),
|
67
|
+
binlist=check_binlist(),
|
68
|
+
btcscan=check_btcscan(),
|
69
|
+
)
|
70
|
+
if test_llms:
|
71
|
+
statuses.update(llms=check_llms())
|
72
|
+
return statuses
|
73
|
+
|
74
|
+
|
75
|
+
def format_statuses(status_dict):
|
76
|
+
def get_marker(status):
|
77
|
+
"""Return a checkmark, cross, or dash based on status."""
|
78
|
+
match status.lower():
|
79
|
+
case "authorized":
|
80
|
+
return "✔"
|
81
|
+
case "unauthorized":
|
82
|
+
return "✖"
|
83
|
+
case "unknown" | "offline" | "unsupported":
|
84
|
+
return "–"
|
85
|
+
case _:
|
86
|
+
return "?"
|
87
|
+
|
88
|
+
print("============= Service Statuses ===============")
|
89
|
+
for key, value in status_dict.items():
|
90
|
+
if key == "llms" and isinstance(value, dict):
|
91
|
+
print(f"\n {key.upper()}:")
|
92
|
+
for llm_name, llm_status in value.items():
|
93
|
+
marker = get_marker(llm_status)
|
94
|
+
print(f" {llm_name:<12}: {llm_status:<15} {marker}")
|
95
|
+
else:
|
96
|
+
marker = get_marker(value)
|
97
|
+
print(f" {key:<12}: {value:<15} {marker}")
|
@@ -17,6 +17,10 @@ class STIXObjectRetriever:
|
|
17
17
|
self.api_key = os.environ.get('VULMATCH_API_KEY')
|
18
18
|
else:
|
19
19
|
raise NotImplementedError("The type `%s` is not supported", host)
|
20
|
+
self.session = requests.Session()
|
21
|
+
self.session.headers.update({
|
22
|
+
"API-KEY": self.api_key,
|
23
|
+
})
|
20
24
|
|
21
25
|
def get_attack_object(self, matrix, attack_id):
|
22
26
|
endpoint = urljoin(self.api_root, f"v1/attack-{matrix}/objects/{attack_id}/")
|
@@ -48,14 +52,10 @@ class STIXObjectRetriever:
|
|
48
52
|
return self._retrieve_objects(urljoin(self.api_root, f"v1/{type}/objects/?alias={alias}"))
|
49
53
|
|
50
54
|
def _retrieve_objects(self, endpoint, key='objects'):
|
51
|
-
s = requests.Session()
|
52
|
-
s.headers.update({
|
53
|
-
"API-KEY": self.api_key,
|
54
|
-
})
|
55
55
|
data = []
|
56
56
|
page = 1
|
57
57
|
while True:
|
58
|
-
resp =
|
58
|
+
resp = self.session.get(endpoint, params=dict(page=page, page_size=50))
|
59
59
|
resp.raise_for_status()
|
60
60
|
d = resp.json()
|
61
61
|
if len(d[key]) == 0:
|
@@ -13,7 +13,7 @@ import sys, os
|
|
13
13
|
from pydantic import BaseModel
|
14
14
|
|
15
15
|
from txt2stix.ai_extractor.utils import DescribesIncident
|
16
|
-
from txt2stix import attack_flow
|
16
|
+
from txt2stix import attack_flow, credential_checker
|
17
17
|
|
18
18
|
|
19
19
|
from .utils import RELATIONSHIP_TYPES, Txt2StixData, remove_links
|
@@ -135,6 +135,12 @@ def parse_args():
|
|
135
135
|
all_extractors = extractions.parse_extraction_config(INCLUDES_PATH)
|
136
136
|
|
137
137
|
parser = argparse.ArgumentParser(description="File Conversion Tool")
|
138
|
+
parser.add_argument('--check_credentials', "--check-credentials", action="store_true", help="Print the validity of the credentials and exit")
|
139
|
+
args, _ = parser.parse_known_args()
|
140
|
+
if args.check_credentials:
|
141
|
+
statuses = credential_checker.check_statuses(test_llms=True)
|
142
|
+
credential_checker.format_statuses(statuses)
|
143
|
+
sys.exit(0)
|
138
144
|
|
139
145
|
inf_arg = parser.add_argument(
|
140
146
|
"--input_file",
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/includes/lookups/mitre_attack_enterprise_aliases_v16_0.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/ai_mitre_attack_enterprise.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_autonomous_system_number.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_discover.txt
RENAMED
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_mastercard.txt
RENAMED
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_bank_card_union_pay.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_btc_wallet.txt
RENAMED
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_eth_wallet.txt
RENAMED
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_cryptocurrency_xmr_wallet.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_directory_unix_file.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_domain_name_subdomain.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_host_name_subdomain.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_enterprise.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_ics_aliases.txt
RENAMED
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_ics_name.txt
RENAMED
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_mobile.txt
RENAMED
File without changes
|
File without changes
|
{txt2stix-1.0.4 → txt2stix-1.0.6}/tests/data/extraction_types/generic_mitre_attack_mobile_name.txt
RENAMED
File without changes
|
File without changes
|