refactoring
This commit is contained in:
@@ -66,79 +66,69 @@ impl EventMetrics {
|
||||
self.filepath = records[0].evtx_filepath.as_str().to_owned();
|
||||
// sortしなくてもイベントログのTimeframeを取得できるように修正しました。
|
||||
// sortしないことにより計算量が改善されています。
|
||||
// もうちょっと感じに書けるといえば書けます。
|
||||
for record in records.iter() {
|
||||
let evttime = utils::get_event_value(
|
||||
if let Some(evttime) = utils::get_event_value(
|
||||
"Event.System.TimeCreated_attributes.SystemTime",
|
||||
&record.record,
|
||||
)
|
||||
.map(|evt_value| evt_value.to_string());
|
||||
if evttime.is_none() {
|
||||
continue;
|
||||
}
|
||||
|
||||
let evttime = evttime.unwrap();
|
||||
if self.start_time.is_empty() || evttime < self.start_time {
|
||||
self.start_time = evttime.to_string();
|
||||
}
|
||||
if self.end_time.is_empty() || evttime > self.end_time {
|
||||
self.end_time = evttime;
|
||||
}
|
||||
.map(|evt_value| evt_value.to_string()) {
|
||||
if self.start_time.is_empty() || evttime < self.start_time {
|
||||
self.start_time = evttime.to_string();
|
||||
}
|
||||
if self.end_time.is_empty() || evttime > self.end_time {
|
||||
self.end_time = evttime;
|
||||
}
|
||||
};
|
||||
}
|
||||
self.total += records.len();
|
||||
}
|
||||
|
||||
// EventIDで集計
|
||||
/// EventID`で集計
|
||||
fn stats_eventid(&mut self, records: &[EvtxRecordInfo]) {
|
||||
// let mut evtstat_map = HashMap::new();
|
||||
for record in records.iter() {
|
||||
let evtid = utils::get_event_value("EventID", &record.record);
|
||||
if evtid.is_none() {
|
||||
continue;
|
||||
}
|
||||
if let Some(idnum) = utils::get_event_value("EventID", &record.record) {
|
||||
let count: &mut usize = self.stats_list.entry(idnum.to_string()).or_insert(0);
|
||||
*count += 1;
|
||||
};
|
||||
|
||||
let idnum = evtid.unwrap();
|
||||
let count: &mut usize = self.stats_list.entry(idnum.to_string()).or_insert(0);
|
||||
*count += 1;
|
||||
}
|
||||
// return evtstat_map;
|
||||
}
|
||||
// Login event
|
||||
fn stats_login_eventid(&mut self, records: &[EvtxRecordInfo]) {
|
||||
for record in records.iter() {
|
||||
let evtid = utils::get_event_value("EventID", &record.record);
|
||||
if evtid.is_none() {
|
||||
continue;
|
||||
}
|
||||
let idnum: i64 = if evtid.unwrap().is_number() {
|
||||
evtid.unwrap().as_i64().unwrap()
|
||||
} else {
|
||||
evtid
|
||||
.unwrap()
|
||||
.as_str()
|
||||
.unwrap()
|
||||
.parse::<i64>()
|
||||
.unwrap_or_default()
|
||||
};
|
||||
if !(idnum == 4624 || idnum == 4625) {
|
||||
continue;
|
||||
}
|
||||
if let Some(evtid) = utils::get_event_value("EventID", &record.record) {
|
||||
|
||||
let username = utils::get_event_value("TargetUserName", &record.record);
|
||||
let countlist: [usize; 2] = [0, 0];
|
||||
if idnum == 4624 {
|
||||
let count: &mut [usize; 2] = self
|
||||
.stats_login_list
|
||||
.entry(username.unwrap().to_string())
|
||||
.or_insert(countlist);
|
||||
count[0] += 1;
|
||||
} else if idnum == 4625 {
|
||||
let count: &mut [usize; 2] = self
|
||||
.stats_login_list
|
||||
.entry(username.unwrap().to_string())
|
||||
.or_insert(countlist);
|
||||
count[1] += 1;
|
||||
}
|
||||
let idnum: i64 = if evtid.is_number() {
|
||||
evtid.as_i64().unwrap()
|
||||
} else {
|
||||
evtid
|
||||
.as_str()
|
||||
.unwrap()
|
||||
.parse::<i64>()
|
||||
.unwrap_or_default()
|
||||
};
|
||||
if !(idnum == 4624 || idnum == 4625) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let username = utils::get_event_value("TargetUserName", &record.record);
|
||||
let countlist: [usize; 2] = [0, 0];
|
||||
if idnum == 4624 {
|
||||
let count: &mut [usize; 2] = self
|
||||
.stats_login_list
|
||||
.entry(username.unwrap().to_string())
|
||||
.or_insert(countlist);
|
||||
count[0] += 1;
|
||||
} else if idnum == 4625 {
|
||||
let count: &mut [usize; 2] = self
|
||||
.stats_login_list
|
||||
.entry(username.unwrap().to_string())
|
||||
.or_insert(countlist);
|
||||
count[1] += 1;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user