1
1
import logging
2
2
from typing import Dict , List
3
3
4
- from app .translator .const import CTI_MIN_LIMIT_QUERY
4
+ from app .translator .const import CTI_MIN_LIMIT_QUERY , CTI_IOCS_PER_QUERY_LIMIT
5
5
from app .translator .core .models .iocs import IocsChunkValue
6
6
from app .translator .core .parser_cti import CTIParser , Iocs
7
7
from app .translator .core .render_cti import RenderCTI
@@ -17,44 +17,46 @@ def __init__(self):
17
17
self .logger = logging .getLogger ("cti_converter" )
18
18
self .parser = CTIParser ()
19
19
20
- def _get_render_mapping (self , platform : CTIPlatform , include_source_ip : bool = False ) -> Dict [str , str ]:
21
- return self .renders .get (platform .name ).default_mapping
22
-
23
20
@handle_translation_exceptions
24
- def __parse_iocs_from_string (self , text : str , include_ioc_types : list = None , include_hash_types : list = None ,
25
- exceptions : list = None , ioc_parsing_rules : list = None ) -> Iocs :
21
+ def __parse_iocs_from_string (self , text : str ,
22
+ include_ioc_types : list = None ,
23
+ include_hash_types : list = None ,
24
+ exceptions : list = None ,
25
+ ioc_parsing_rules : list = None ,
26
+ include_source_ip : bool = False ) -> dict :
26
27
return self .parser .get_iocs_from_string (string = text ,
27
28
include_ioc_types = include_ioc_types ,
28
29
include_hash_types = include_hash_types ,
29
30
exceptions = exceptions ,
30
31
ioc_parsing_rules = ioc_parsing_rules ,
31
- limit = CTI_MIN_LIMIT_QUERY )
32
+ limit = CTI_MIN_LIMIT_QUERY ,
33
+ include_source_ip = include_source_ip )
32
34
33
35
@handle_translation_exceptions
34
- def __render_translation (self , parsed_data : dict , platform_data : CTIPlatform , iocs_per_query : int ,
35
- include_source_ip : bool = False ) -> List [str ]:
36
- mapping = self ._get_render_mapping (platform = platform_data , include_source_ip = include_source_ip )
36
+ def __render_translation (self , parsed_data : dict , platform_data : CTIPlatform , iocs_per_query : int ) -> List [str ]:
37
37
platform = self .renders .get (platform_data .name )
38
38
platform_generation = self .generate (data = parsed_data , platform = platform , iocs_per_query = iocs_per_query ,
39
- mapping = mapping )
39
+ mapping = platform . default_mapping )
40
40
return platform_generation
41
41
42
42
def convert (self , text : str ,
43
43
platform_data : CTIPlatform ,
44
- iocs_per_query : int = 25 ,
44
+ iocs_per_query : int = None ,
45
45
include_ioc_types : list = None ,
46
46
include_hash_types : list = None ,
47
47
exceptions : list = None ,
48
48
ioc_parsing_rules : list = None ,
49
49
include_source_ip : bool = False ) -> (bool , List [str ]):
50
+ if not iocs_per_query :
51
+ iocs_per_query = CTI_IOCS_PER_QUERY_LIMIT
50
52
status , parsed_data = self .__parse_iocs_from_string (text = text ,
51
53
include_ioc_types = include_ioc_types ,
52
54
include_hash_types = include_hash_types ,
53
55
exceptions = exceptions ,
54
- ioc_parsing_rules = ioc_parsing_rules )
56
+ ioc_parsing_rules = ioc_parsing_rules ,
57
+ include_source_ip = include_source_ip )
55
58
if status :
56
59
return self .__render_translation (parsed_data = parsed_data ,
57
- include_source_ip = include_source_ip ,
58
60
platform_data = platform_data ,
59
61
iocs_per_query = iocs_per_query
60
62
)
0 commit comments