txt2stix 1.1.7__tar.gz → 1.1.8__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.
Files changed (262) hide show
  1. {txt2stix-1.1.7 → txt2stix-1.1.8}/PKG-INFO +2 -1
  2. {txt2stix-1.1.7 → txt2stix-1.1.8}/pyproject.toml +2 -1
  3. {txt2stix-1.1.7 → txt2stix-1.1.8}/requirements.txt +63 -5
  4. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_retriever.py +9 -5
  5. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/utils.py +4 -1
  6. {txt2stix-1.1.7 → txt2stix-1.1.8}/.env.example +0 -0
  7. {txt2stix-1.1.7 → txt2stix-1.1.8}/.env.markdown +0 -0
  8. {txt2stix-1.1.7 → txt2stix-1.1.8}/.github/workflows/create-release.yml +0 -0
  9. {txt2stix-1.1.7 → txt2stix-1.1.8}/.github/workflows/run-tests.yml +0 -0
  10. {txt2stix-1.1.7 → txt2stix-1.1.8}/.gitignore +0 -0
  11. {txt2stix-1.1.7 → txt2stix-1.1.8}/LICENSE +0 -0
  12. {txt2stix-1.1.7 → txt2stix-1.1.8}/README.md +0 -0
  13. {txt2stix-1.1.7 → txt2stix-1.1.8}/docs/README.md +0 -0
  14. {txt2stix-1.1.7 → txt2stix-1.1.8}/docs/stix-mapping.md +0 -0
  15. {txt2stix-1.1.7 → txt2stix-1.1.8}/docs/txt2stix.png +0 -0
  16. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/__init__.py +0 -0
  17. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/extractions/ai/config.yaml +0 -0
  18. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/extractions/lookup/config.yaml +0 -0
  19. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/extractions/pattern/config.yaml +0 -0
  20. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/helpers/mimetype_filename_extension_list.csv +0 -0
  21. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/helpers/stix_relationship_types.txt +0 -0
  22. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/helpers/tlds.txt +0 -0
  23. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/helpers/windows_registry_key_prefix.txt +0 -0
  24. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/_README.md +0 -0
  25. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/_generate_lookups.py +0 -0
  26. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/attack_pattern.txt +0 -0
  27. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/campaign.txt +0 -0
  28. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/country_iso3166_alpha2.txt +0 -0
  29. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/course_of_action.txt +0 -0
  30. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/disarm_id_v1_5.txt +0 -0
  31. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/disarm_name_v1_5.txt +0 -0
  32. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/extensions.txt +0 -0
  33. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/identity.txt +0 -0
  34. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/infrastructure.txt +0 -0
  35. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/intrusion_set.txt +0 -0
  36. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/malware.txt +0 -0
  37. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_atlas_id_v4_5_2.txt +0 -0
  38. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_atlas_name_v4_5_2.txt +0 -0
  39. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_enterprise_aliases_v16_0.txt +0 -0
  40. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_enterprise_id_v16_0.txt +0 -0
  41. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_enterprise_name_v16_0.txt +0 -0
  42. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_ics_aliases_v16_0.txt +0 -0
  43. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_ics_id_v16_0.txt +0 -0
  44. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_ics_name_v16_0.txt +0 -0
  45. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_mobile_aliases_v16_0.txt +0 -0
  46. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_mobile_id_v16_0.txt +0 -0
  47. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_attack_mobile_name_v16_0.txt +0 -0
  48. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_capec_id_v3_9.txt +0 -0
  49. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_capec_name_v3_9.txt +0 -0
  50. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_cwe_id_v4_15.txt +0 -0
  51. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/mitre_cwe_name_v4_15.txt +0 -0
  52. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/threat_actor.txt +0 -0
  53. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/tld.txt +0 -0
  54. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/lookups/tool.txt +0 -0
  55. {txt2stix-1.1.7 → txt2stix-1.1.8}/includes/tests/test_cases.yaml +0 -0
  56. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/README.md +0 -0
  57. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/ai_country.txt +0 -0
  58. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/ai_mitre_attack_enterprise.txt +0 -0
  59. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/ai_mitre_attack_ics.txt +0 -0
  60. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/ai_mitre_attack_mobile.txt +0 -0
  61. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/ai_mitre_capec.txt +0 -0
  62. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/ai_mitre_cwe.txt +0 -0
  63. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/all_cases.txt +0 -0
  64. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_autonomous_system_number.txt +0 -0
  65. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_bank_card_all.txt +0 -0
  66. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_bank_card_amex.txt +0 -0
  67. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_bank_card_diners.txt +0 -0
  68. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_bank_card_discover.txt +0 -0
  69. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_bank_card_jcb.txt +0 -0
  70. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_bank_card_mastercard.txt +0 -0
  71. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_bank_card_union_pay.txt +0 -0
  72. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_bank_card_visa.txt +0 -0
  73. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_country_alpha2.txt +0 -0
  74. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_cpe_uri.txt +0 -0
  75. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_cryptocurrency_btc_transaction.txt +0 -0
  76. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_cryptocurrency_btc_wallet.txt +0 -0
  77. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_cryptocurrency_eth_transaction.txt +0 -0
  78. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_cryptocurrency_eth_wallet.txt +0 -0
  79. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_cryptocurrency_xmr_transaction.txt +0 -0
  80. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_cryptocurrency_xmr_wallet.txt +0 -0
  81. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_cve_id.txt +0 -0
  82. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_directory_unix.txt +0 -0
  83. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_directory_unix_file.txt +0 -0
  84. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_directory_windows.txt +0 -0
  85. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_directory_windows_with_file.txt +0 -0
  86. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_disarm.txt +0 -0
  87. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_disarm_name.txt +0 -0
  88. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_domain_name_only.txt +0 -0
  89. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_domain_name_subdomain.txt +0 -0
  90. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_email_address.txt +0 -0
  91. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_file_hash_md5.txt +0 -0
  92. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_file_hash_sha_1.txt +0 -0
  93. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_file_hash_sha_224.txt +0 -0
  94. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_file_hash_sha_256.txt +0 -0
  95. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_file_hash_sha_384.txt +0 -0
  96. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_file_hash_sha_512.txt +0 -0
  97. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_file_name.txt +0 -0
  98. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_host_name.txt +0 -0
  99. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_host_name_file.txt +0 -0
  100. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_host_name_path.txt +0 -0
  101. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_host_name_subdomain.txt +0 -0
  102. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_host_name_url.txt +0 -0
  103. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_iban_number.txt +0 -0
  104. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_ipv4_address_cidr.txt +0 -0
  105. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_ipv4_address_only.txt +0 -0
  106. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_ipv4_address_port.txt +0 -0
  107. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_ipv6_address_cidr.txt +0 -0
  108. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_ipv6_address_only.txt +0 -0
  109. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_ipv6_address_port.txt +0 -0
  110. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mac_address.txt +0 -0
  111. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_atlas.txt +0 -0
  112. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_atlas_name.txt +0 -0
  113. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_enterprise.txt +0 -0
  114. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_enterprise_aliases.txt +0 -0
  115. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_enterprise_name.txt +0 -0
  116. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_ics.txt +0 -0
  117. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_ics_aliases.txt +0 -0
  118. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_ics_name.txt +0 -0
  119. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_mobile.txt +0 -0
  120. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_mobile_aliases.txt +0 -0
  121. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_attack_mobile_name.txt +0 -0
  122. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_capec.txt +0 -0
  123. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_capec_name.txt +0 -0
  124. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_cwe.txt +0 -0
  125. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_mitre_cwe_name.txt +0 -0
  126. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_phone_number.txt +0 -0
  127. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_url.txt +0 -0
  128. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_url_file.txt +0 -0
  129. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_url_path.txt +0 -0
  130. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_user_agent.txt +0 -0
  131. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/generic_windows_registry_key.txt +0 -0
  132. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_attack_pattern.txt +0 -0
  133. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_campaign.txt +0 -0
  134. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_course_of_action.txt +0 -0
  135. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_identity.txt +0 -0
  136. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_infrastructure.txt +0 -0
  137. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_intrusion_set.txt +0 -0
  138. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_malware.txt +0 -0
  139. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_threat_actor.txt +0 -0
  140. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/extraction_types/lookup_tool.txt +0 -0
  141. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/ai_index_position.txt +0 -0
  142. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/attack_flow_demo.txt +0 -0
  143. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/attack_navigator_demo.txt +0 -0
  144. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/bad_vulmatch_lookups.txt +0 -0
  145. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/basic_relationship.txt +0 -0
  146. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/char_length_too_long.txt +0 -0
  147. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/descriptive_for_ai_relationships_1.txt +0 -0
  148. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/disarm_demo.txt +0 -0
  149. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/embedded_img_ignore.txt +0 -0
  150. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/embedded_link_ignore.txt +0 -0
  151. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/ip1.txt +0 -0
  152. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/ip2.txt +0 -0
  153. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/known_whitelist_match.txt +0 -0
  154. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/mitre_attack_enterprise_ai_demo.txt +0 -0
  155. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/mitre_attack_enterprise_lookup_demo.txt +0 -0
  156. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/mixed_extractions.txt +0 -0
  157. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/not_security_content.txt +0 -0
  158. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/test_ai_hash_error_with_stix2_lib.txt +0 -0
  159. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/test_aliases.txt +0 -0
  160. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/test_extraction_boundary.txt +0 -0
  161. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/manually_generated_reports/test_extraction_escapes.txt +0 -0
  162. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/APT28-Center-of-Storm-2017.txt +0 -0
  163. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/Bitdefender-Labs-Report-X-creat6958-en-EN.txt +0 -0
  164. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/FireEyeAPT39.txt +0 -0
  165. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/France_CERT_APT31_Pakdoor_TLPWHITE.txt +0 -0
  166. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/Group-IB_Ransomware_Uncovered_whitepaper_eng.txt +0 -0
  167. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/JOINT_CSA_HUNTING_RU_INTEL_SNAKE_MALWARE_20230509.txt +0 -0
  168. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/TA22-0126-QAKBOT-analysis-TLP-GREEN.txt +0 -0
  169. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/dinners_card.txt +0 -0
  170. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/mandiant-apt1.txt +0 -0
  171. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/data/real_intel_reports/mykings_report_final.txt +0 -0
  172. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/manual-tests/cases-ai-relationships.md +0 -0
  173. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/manual-tests/cases-extraction-type-ai.md +0 -0
  174. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/manual-tests/cases-extraction-type-lookup.md +0 -0
  175. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/manual-tests/cases-extraction-type-pattern.md +0 -0
  176. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/manual-tests/cases-standard-tests.md +0 -0
  177. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/scripts/generate_simple_extraction_test_cases_txt_files.py +0 -0
  178. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/__init__.py +0 -0
  179. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_attack_flow.py +0 -0
  180. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_bundler.py +0 -0
  181. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_extractors.py +0 -0
  182. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_indicator.py +0 -0
  183. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_lookups.py +0 -0
  184. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_main.py +0 -0
  185. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_run_txt2stix.py +0 -0
  186. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/test_utils.py +0 -0
  187. {txt2stix-1.1.7 → txt2stix-1.1.8}/tests/src/utils.py +0 -0
  188. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/__init__.py +0 -0
  189. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/__init__.py +0 -0
  190. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/anthropic.py +0 -0
  191. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/base.py +0 -0
  192. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/deepseek.py +0 -0
  193. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/gemini.py +0 -0
  194. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/openai.py +0 -0
  195. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/openrouter.py +0 -0
  196. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/ai_extractor/prompts.py +0 -0
  197. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/attack_flow.py +0 -0
  198. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/bundler.py +0 -0
  199. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/common.py +0 -0
  200. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/credential_checker.py +0 -0
  201. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/extractions.py +0 -0
  202. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/indicator.py +0 -0
  203. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/lookups.py +0 -0
  204. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/__init__.py +0 -0
  205. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/__init__.py +0 -0
  206. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/base_extractor.py +0 -0
  207. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/README.md +0 -0
  208. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/__init__.py +0 -0
  209. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/amex_card_extractor.py +0 -0
  210. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/diners_card_extractor.py +0 -0
  211. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/discover_card_extractor.py +0 -0
  212. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/jcb_card_extractor.py +0 -0
  213. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/master_card_extractor.py +0 -0
  214. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/union_card_extractor.py +0 -0
  215. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/card/visa_card_extractor.py +0 -0
  216. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/crypto/__init__.py +0 -0
  217. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/crypto/btc_extractor.py +0 -0
  218. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/directory/__init__.py +0 -0
  219. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/directory/unix_directory_extractor.py +0 -0
  220. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/directory/unix_file_path_extractor.py +0 -0
  221. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/directory/windows_directory_path_extractor.py +0 -0
  222. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/directory/windows_file_path_extractor.py +0 -0
  223. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/domain/__init__.py +0 -0
  224. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/domain/domain_extractor.py +0 -0
  225. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/domain/hostname_extractor.py +0 -0
  226. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/domain/sub_domain_extractor.py +0 -0
  227. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/hashes/__init__.py +0 -0
  228. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/hashes/md5_extractor.py +0 -0
  229. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/hashes/sha1_extractor.py +0 -0
  230. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/hashes/sha224_extractor.py +0 -0
  231. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/hashes/sha2_256_exactor.py +0 -0
  232. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/hashes/sha2_512_exactor.py +0 -0
  233. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/hashes/sha3_256_exactor.py +0 -0
  234. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/hashes/sha3_512_exactor.py +0 -0
  235. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/helper.py +0 -0
  236. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/ip/__init__.py +0 -0
  237. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/ip/ipv4_cidr_extractor.py +0 -0
  238. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/ip/ipv4_extractor.py +0 -0
  239. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/ip/ipv4_port_extractor.py +0 -0
  240. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/ip/ipv6_cidr_extractor.py +0 -0
  241. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/ip/ipv6_extractor.py +0 -0
  242. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/ip/ipv6_port_extractor.py +0 -0
  243. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/__init__.py +0 -0
  244. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/asn_extractor.py +0 -0
  245. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/cpe_extractor.py +0 -0
  246. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/cve_extractor.py +0 -0
  247. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/email_extractor.py +0 -0
  248. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/filename_extractor.py +0 -0
  249. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/iban_extractor.py +0 -0
  250. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/mac_address_extractor.py +0 -0
  251. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/phonenumber_extractor.py +0 -0
  252. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/user_agent_extractor.py +0 -0
  253. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/others/windows_registry_key_extractor.py +0 -0
  254. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/url/__init__.py +0 -0
  255. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/url/url_extractor.py +0 -0
  256. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/url/url_file_extractor.py +0 -0
  257. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/pattern/extractors/url/url_path_extractor.py +0 -0
  258. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/retriever.py +0 -0
  259. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/stix.py +0 -0
  260. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/txt2stix.py +0 -0
  261. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix/utils.py +0 -0
  262. {txt2stix-1.1.7 → txt2stix-1.1.8}/txt2stix.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: txt2stix
3
- Version: 1.1.7
3
+ Version: 1.1.8
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
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3
14
14
  Requires-Python: >=3.9
15
15
  Requires-Dist: base58>=2.1.1
16
16
  Requires-Dist: beautifulsoup4>=4.12.3
17
+ Requires-Dist: json-repair
17
18
  Requires-Dist: llama-index-core>=0.12.42
18
19
  Requires-Dist: llama-index-llms-openai>=0.4.5
19
20
  Requires-Dist: mistune>=3.0.2
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "txt2stix"
7
- version = "1.1.7"
7
+ version = "1.1.8"
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."
@@ -33,6 +33,7 @@ dependencies = [
33
33
  'mistune>=3.0.2',
34
34
  'beautifulsoup4>=4.12.3',
35
35
  'stix2-validator',
36
+ "json-repair",
36
37
  ]
37
38
 
38
39
  [tool.hatch.metadata]
@@ -20,8 +20,13 @@ anyio==4.10.0
20
20
  # via
21
21
  # httpx
22
22
  # openai
23
+ arrow==1.4.0
24
+ # via isoduration
23
25
  attrs==25.3.0
24
- # via aiohttp
26
+ # via
27
+ # aiohttp
28
+ # jsonschema
29
+ # referencing
25
30
  banks==2.2.0
26
31
  # via llama-index-core
27
32
  base58==2.1.1
@@ -38,7 +43,11 @@ charset-normalizer==3.4.3
38
43
  click==8.2.1
39
44
  # via nltk
40
45
  colorama==0.4.6
41
- # via griffe
46
+ # via
47
+ # griffe
48
+ # stix2-validator
49
+ cpe==1.3.1
50
+ # via stix2-validator
42
51
  dataclasses-json==0.6.7
43
52
  # via llama-index-core
44
53
  deprecated==1.2.18
@@ -54,6 +63,8 @@ filelock==3.19.1
54
63
  # via tldextract
55
64
  filetype==1.2.0
56
65
  # via llama-index-core
66
+ fqdn==1.5.1
67
+ # via jsonschema
57
68
  frozenlist==1.7.0
58
69
  # via
59
70
  # aiohttp
@@ -76,15 +87,28 @@ idna==3.10
76
87
  # via
77
88
  # anyio
78
89
  # httpx
90
+ # jsonschema
79
91
  # requests
80
92
  # tldextract
81
93
  # yarl
94
+ isoduration==20.11.0
95
+ # via jsonschema
82
96
  jinja2==3.1.6
83
97
  # via banks
84
98
  jiter==0.10.0
85
99
  # via openai
86
100
  joblib==1.5.1
87
101
  # via nltk
102
+ json-repair==0.52.4
103
+ # via txt2stix (pyproject.toml)
104
+ jsonpointer==3.0.0
105
+ # via jsonschema
106
+ jsonschema[format-nongpl]==4.25.1
107
+ # via stix2-validator
108
+ jsonschema-specifications==2025.9.1
109
+ # via jsonschema
110
+ lark==1.3.1
111
+ # via rfc3987-syntax
88
112
  llama-index-core==0.13.3
89
113
  # via
90
114
  # llama-index-llms-openai
@@ -144,12 +168,20 @@ pydantic==2.11.7
144
168
  # openai
145
169
  pydantic-core==2.33.2
146
170
  # via pydantic
171
+ python-dateutil==2.9.0.post0
172
+ # via
173
+ # arrow
174
+ # stix2-validator
147
175
  python-dotenv==1.1.1
148
176
  # via txt2stix (pyproject.toml)
149
177
  pytz==2025.2
150
178
  # via stix2
151
179
  pyyaml==6.0.2
152
180
  # via llama-index-core
181
+ referencing==0.37.0
182
+ # via
183
+ # jsonschema
184
+ # jsonschema-specifications
153
185
  regex==2025.7.34
154
186
  # via
155
187
  # nltk
@@ -159,20 +191,36 @@ requests==2.32.5
159
191
  # llama-index-core
160
192
  # requests-file
161
193
  # stix2
194
+ # stix2-validator
162
195
  # stix2extensions
163
196
  # tiktoken
164
197
  # tldextract
165
198
  # txt2stix (pyproject.toml)
166
199
  requests-file==2.1.0
167
200
  # via tldextract
201
+ rfc3339-validator==0.1.4
202
+ # via jsonschema
203
+ rfc3986-validator==0.1.1
204
+ # via jsonschema
205
+ rfc3987-syntax==1.1.0
206
+ # via jsonschema
207
+ rpds-py==0.28.0
208
+ # via
209
+ # jsonschema
210
+ # referencing
168
211
  rstr==3.2.2
169
212
  # via schwifty
170
213
  schwifty==2025.7.0
171
214
  # via txt2stix (pyproject.toml)
172
215
  simplejson==3.20.1
173
- # via stix2
216
+ # via
217
+ # stix2
218
+ # stix2-validator
174
219
  six==1.17.0
175
- # via stix2-patterns
220
+ # via
221
+ # python-dateutil
222
+ # rfc3339-validator
223
+ # stix2-patterns
176
224
  sniffio==1.3.1
177
225
  # via
178
226
  # anyio
@@ -184,7 +232,11 @@ sqlalchemy[asyncio]==2.0.43
184
232
  stix2==3.0.1
185
233
  # via stix2extensions
186
234
  stix2-patterns==2.0.0
187
- # via stix2
235
+ # via
236
+ # stix2
237
+ # stix2-validator
238
+ stix2-validator==3.2.0
239
+ # via txt2stix (pyproject.toml)
188
240
  stix2extensions==1.2.0
189
241
  # via txt2stix (pyproject.toml)
190
242
  tenacity==9.1.2
@@ -218,10 +270,16 @@ typing-inspect==0.9.0
218
270
  # llama-index-core
219
271
  typing-inspection==0.4.1
220
272
  # via pydantic
273
+ tzdata==2025.2
274
+ # via arrow
275
+ uri-template==1.3.0
276
+ # via jsonschema
221
277
  urllib3==2.5.0
222
278
  # via requests
223
279
  validators==0.35.0
224
280
  # via txt2stix (pyproject.toml)
281
+ webcolors==25.10.0
282
+ # via jsonschema
225
283
  wrapt==1.17.3
226
284
  # via
227
285
  # deprecated
@@ -48,7 +48,10 @@ def f():
48
48
  (
49
49
  "ctibutler-mitre-attack-mobile-name",
50
50
  "Impair Defenses",
51
- ["attack-pattern--20b0931a-8952-42ca-975f-775bad295f1a"],
51
+ [
52
+ "attack-pattern--20b0931a-8952-42ca-975f-775bad295f1a",
53
+ "x-mitre-detection-strategy--5560747b-ad67-478e-b3f2-14e55864e532",
54
+ ],
52
55
  ),
53
56
  (
54
57
  "ctibutler-mitre-attack-mobile-aliases",
@@ -58,7 +61,10 @@ def f():
58
61
  (
59
62
  "ctibutler-mitre-attack-ics-name",
60
63
  "Program Upload",
61
- ["attack-pattern--3067b85e-271e-4bc5-81ad-ab1a81d411e3"],
64
+ [
65
+ "attack-pattern--3067b85e-271e-4bc5-81ad-ab1a81d411e3",
66
+ "x-mitre-detection-strategy--6f921aa8-deb3-4286-8101-26a7cbe80c0e",
67
+ ],
62
68
  ),
63
69
  (
64
70
  "ctibutler-mitre-attack-ics-aliases",
@@ -81,9 +87,7 @@ def f():
81
87
  (
82
88
  "ctibutler-location",
83
89
  "NG",
84
- (
85
- "location--6dbe266a-c149-5ba3-8b39-74f1b5063312",
86
- ),
90
+ ("location--6dbe266a-c149-5ba3-8b39-74f1b5063312",),
87
91
  ),
88
92
  (
89
93
  "ctibutler-mitre-atlas-id",
@@ -5,6 +5,8 @@ import logging
5
5
  import dotenv
6
6
  import textwrap
7
7
 
8
+ import json_repair
9
+
8
10
  from ..extractions import Extractor
9
11
 
10
12
  from pydantic import BaseModel, Field, RootModel
@@ -63,7 +65,8 @@ class ParserWithLogging(PydanticOutputParser):
63
65
  print(text, file=f)
64
66
  print("=================close=================" + "\n"*5, file=f)
65
67
  logging.debug(f.getvalue())
66
- return super().parse(text)
68
+ repaired_json = json_repair.repair_json(text)
69
+ return super().parse(repaired_json)
67
70
 
68
71
  def get_extractors_str(extractors):
69
72
  extractor: Extractor = None
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