From ce700f9c18949b9a67028cbe7201f90f780bc9f0 Mon Sep 17 00:00:00 2001 From: DastInDark <2350416+hitenkoku@users.noreply.github.com> Date: Wed, 24 Aug 2022 01:04:40 +0900 Subject: [PATCH] added json output to Mitretactics, MitreTags, and OtherTags --- src/afterfact.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/afterfact.rs b/src/afterfact.rs index 75061d52..c251fe13 100644 --- a/src/afterfact.rs +++ b/src/afterfact.rs @@ -848,6 +848,41 @@ fn output_json_str( tmp = String::default(); } } + } else if output_value_fmt.contains("%MitreTags%") || output_value_fmt.contains("%MitreTactics%") || output_value_fmt.contains("%OtherTags%") { + println!("k dbg | {} | v dbg | {:?}", k, v); + let tmp_val: Vec<&str> = v.split(": ").collect(); + println!("tmp_val dbg | {:?} | len dbg | {:?}", tmp_val, tmp_val.len()); + + let key = _convert_valid_json_str(&[k.as_str()]); + let values = &tmp_val; + let mut value:Vec = vec![]; + let mut valid_data_cnt =0; + + if tmp_val.is_empty() { + value.push("[]".to_string()); + } + for (idx, tag_val) in values.iter().enumerate() { + if idx == 0 { + value.push("[".to_string()); + } + if tag_val == &"" { + continue; + } + let insert_val = format!(" \"{}\"", tag_val.trim()); + value.push(insert_val); + if idx != values.len() - 1 { + value.push(",\n".to_string()); + } + valid_data_cnt += 1; + } + if valid_data_cnt > 0 { + value.push(" ]".to_string()); + } else { + value.push("]".to_string()); + } + + let fmted_val = value.join(""); + target.push(_create_json_output_format(&key, &fmted_val, key.starts_with('\"'), true)); } } target.join(",\n")