|
21 | 21 |
|
22 | 22 | fromapp.translator.constimportDEFAULT_VALUE_TYPE |
23 | 23 | fromapp.translator.core.custom_types.valuesimportValueType |
| 24 | +fromapp.translator.core.mappingimportSourceMapping |
| 25 | +fromapp.translator.core.models.fieldimportFieldValue,Keyword |
| 26 | +fromapp.translator.core.models.identifierimportIdentifier |
24 | 27 | fromapp.translator.core.models.platform_detailsimportPlatformDetails |
25 | 28 | fromapp.translator.core.renderimportBaseQueryFieldValue,PlatformQueryRender |
26 | 29 | fromapp.translator.core.str_value_managerimportStrValue |
|
34 | 37 | ) |
35 | 38 | fromapp.translator.platforms.palo_alto.str_value_managerimportcortex_xql_str_value_manager |
36 | 39 |
|
| 40 | +SOURCE_MAPPING_TO_FIELD_VALUE_MAP= { |
| 41 | +"windows_registry_event": { |
| 42 | +"EventType": { |
| 43 | +"SetValue":"REGISTRY_SET_VALUE", |
| 44 | +"DeleteValue":"REGISTRY_DELETE_VALUE", |
| 45 | +"CreateKey":"REGISTRY_CREATE_KEY", |
| 46 | + } |
| 47 | + } |
| 48 | +} |
| 49 | + |
37 | 50 |
|
38 | 51 | classCortexXQLFieldValue(BaseQueryFieldValue): |
39 | 52 | details:PlatformDetails=cortex_xql_query_details |
@@ -173,6 +186,19 @@ def generate_prefix(self, log_source_signature: CortexXQLLogSourceSignature, fun |
173 | 186 | functions_prefix=f"{functions_prefix} | "iffunctions_prefixelse"" |
174 | 187 | returnf"{functions_prefix}{log_source_signature}" |
175 | 188 |
|
| 189 | +defapply_token(self,token:Union[FieldValue,Keyword,Identifier],source_mapping:SourceMapping)->str: |
| 190 | +ifisinstance(token,FieldValue): |
| 191 | +field_name=token.field.source_name |
| 192 | +ifvalues_map:=SOURCE_MAPPING_TO_FIELD_VALUE_MAP.get(source_mapping.source_id, {}).get(field_name): |
| 193 | +values_to_update= [] |
| 194 | +fortoken_valueintoken.values: |
| 195 | +mapped_value:str=values_map.get(token_value,token_value) |
| 196 | +values_to_update.append( |
| 197 | +StrValue(value=mapped_value,split_value=mapped_value.split())ifmapped_valueelsetoken_value |
| 198 | + ) |
| 199 | +token.value=values_to_update |
| 200 | +returnsuper().apply_token(token=token,source_mapping=source_mapping) |
| 201 | + |
176 | 202 | @staticmethod |
177 | 203 | def_finalize_search_query(query:str)->str: |
178 | 204 | returnf"| filter{query}"ifqueryelse"" |