This commit is contained in:
ParrotXray 2026-05-19 23:49:12 +00:00
parent 8fdd592ab1
commit 3e4a6896f5
5 changed files with 373 additions and 169 deletions

View File

@ -7,10 +7,9 @@ use ort::session::{Session, builder::GraphOptimizationLevel};
use crate::core::infrastructure::app_config::AppConfig;
use crate::model::error::ml::MLError;
use crate::model::log::ml::MLLog;
use crate::model::ml_detection::RunnableModel;
pub struct MLModels {
pub deep_autoencoder: Mutex<RunnableModel>,
pub deep_autoencoder: Mutex<Session>,
}
impl MLModels {

View File

@ -1,13 +1,10 @@
use common::model::event::{Event, TcpFlags};
use ort::session::Session;
use serde::{Deserialize, Serialize};
use crate::model::direction::Direction;
use crate::model::rule_detection::RuleMatch;
use crate::utils::packet_parser::{format_ipv4, format_ipv6};
pub type RunnableModel = Session;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClipParams {
pub lower: f64,

View File

@ -1,13 +1,13 @@
{
"created_at": "2026-04-21T10:38:25.314054",
"created_at": "2026-05-07T07:34:08.124387",
"framework": "PyTorch",
"model": {
"lstm_deep_autoencoder": {
"file": "deep_autoencoder.onnx",
"type": "LSTM Autoencoder",
"input_dim": 27,
"input_dim": 39,
"hidden_size": 128,
"num_layers": 2,
"num_layers": 4,
"encoding_dim": 32,
"window_size": 10,
"ae_feature_names": [
@ -37,20 +37,46 @@
"fwd_pkt_len_std",
"bwd_pkt_len_std",
"fwd_seg_size_min",
"fwd_act_data_pkts"
"fwd_act_data_pkts",
"flow_iat_std",
"flow_iat_max",
"flow_iat_min",
"active_mean",
"active_std",
"active_max",
"active_min",
"idle_mean",
"idle_std",
"idle_max",
"idle_min",
"down_up_ratio"
],
"ae_threshold": 0.04424155503511429,
"ae_threshold_method": "mean+1std"
"ae_thresholds": {
"90": 0.01886444352567196,
"91": 0.020988615229725838,
"92": 0.023535393178462982,
"93": 0.02664916217327118,
"94": 0.03065456449985504,
"95": 0.03615476191043854,
"96": 0.044667694717645645,
"97": 0.06003328785300255,
"98": 0.09323157370090485,
"99": 0.12769243121147156,
"mean+2std": 0.05561847239732742,
"mean+1std": 0.031917501240968704,
"Q3+1.5IQR": 0.013699173461645842,
"Q3+3.0IQR": 0.0217638174071908
}
}
},
"preprocessing": {
"ae_clip_params": {
"flow_duration": {
"lower": 13203.665,
"upper": 90041362.345
"lower": 0.0,
"upper": 90036772.0
},
"fwd_packets": {
"lower": 2.0,
"lower": 1.0,
"upper": 1000.0
},
"bwd_packets": {
@ -59,19 +85,19 @@
},
"fwd_bytes": {
"lower": 0.0,
"upper": 12828460.719999954
"upper": 8830666.319999935
},
"bwd_bytes": {
"lower": 0.0,
"upper": 1782168.224999995
"upper": 714812.8399999992
},
"flow_bytes_per_sec": {
"lower": 0.0,
"upper": 3787763.16328191
"upper": 282000000.0
},
"flow_pkts_per_sec": {
"lower": 0.066635115985,
"upper": 2235.532986379341
"lower": 0.06663872375999999,
"upper": 1000000.0
},
"fwd_win_bytes": {
"lower": 0.0,
@ -83,31 +109,31 @@
},
"fwd_pkt_len_mean": {
"lower": 0.0,
"upper": 1448.0
"upper": 1445.1847187404396
},
"bwd_pkt_len_mean": {
"lower": 0.0,
"upper": 1415.023504181184
"upper": 1396.7002398081536
},
"fwd_iat_mean": {
"lower": 205.2674874874875,
"upper": 45017828.5025
"lower": 0.0,
"upper": 45015621.68
},
"bwd_iat_mean": {
"lower": 0.0,
"upper": 45017992.675
"upper": 45016786.3
},
"flow_iat_mean": {
"lower": 378.36644698085416,
"upper": 18008565.868
"lower": 0.0,
"upper": 18007572.2
},
"pkt_len_mean": {
"lower": 0.0,
"upper": 1140.389183169216
"upper": 1173.8309073821652
},
"dst_port": {
"lower": 53.0,
"upper": 63575.0
"upper": 63717.0
},
"protocol": {
"lower": 6.0,
@ -115,11 +141,11 @@
},
"psh_flag_cnt": {
"lower": 0.0,
"upper": 3443.0
"upper": 2327.119999999879
},
"ack_flag_cnt": {
"lower": 0.0,
"upper": 12277.0
"upper": 8954.119999999879
},
"syn_flag_cnt": {
"lower": 0.0,
@ -135,15 +161,15 @@
},
"pkt_len_std": {
"lower": 0.0,
"upper": 724.1810679032936
"upper": 723.0567403120758
},
"fwd_pkt_len_std": {
"lower": 0.0,
"upper": 677.6756844784483
"upper": 669.6453360147468
},
"bwd_pkt_len_std": {
"lower": 0.0,
"upper": 723.5706185235359
"upper": 713.1937558148791
},
"fwd_seg_size_min": {
"lower": 8.0,
@ -151,67 +177,139 @@
},
"fwd_act_data_pkts": {
"lower": 0.0,
"upper": 8950.0
"upper": 6158.0
},
"flow_iat_std": {
"lower": 0.0,
"upper": 24649410.54370532
},
"flow_iat_max": {
"lower": 0.0,
"upper": 45015173.0
},
"flow_iat_min": {
"lower": 0.0,
"upper": 3100010.0
},
"active_mean": {
"lower": 0.0,
"upper": 1858202.1999999958
},
"active_std": {
"lower": 0.0,
"upper": 279498.7479113591
},
"active_max": {
"lower": 0.0,
"upper": 2056578.1199999999
},
"active_min": {
"lower": 0.0,
"upper": 1858202.1999999958
},
"idle_mean": {
"lower": 0.0,
"upper": 45010596.68
},
"idle_std": {
"lower": 0.0,
"upper": 10972860.696148252
},
"idle_max": {
"lower": 0.0,
"upper": 45015173.0
},
"idle_min": {
"lower": 0.0,
"upper": 45007631.12
},
"down_up_ratio": {
"lower": 0.0,
"upper": 5.444444444444445
}
},
"ae_scaler": {
"mean": [
5951288.750077261,
59.11059332512558,
64.43133138509893,
222150.9194105303,
43569.19774830678,
172594.2514672874,
144.20395486021135,
17024.939887041404,
16926.870109581538,
178.341350807249,
271.73465038994414,
1866741.291807338,
1837758.5476123434,
887050.3497480378,
275.91961765390863,
15713.397431840604,
12.181819994841344,
60.86333020445825,
263.60134098445224,
0.5260804590671343,
0.45693985380264684,
0.2458391722751531,
232.14679728383396,
96.51238144611007,
156.93610306173713,
15.867236423296912,
162.04478590251205
4174370.511260209,
35.077125227753555,
43.603742620662935,
94540.6390955523,
31544.833137720616,
5700335.998200838,
64420.30126318614,
15402.278083818182,
13973.66057455727,
135.26851684254757,
238.80296412254205,
1293324.141483505,
1251472.1995950716,
626966.5016614087,
233.05930315060152,
13901.66964997682,
12.74627202988346,
28.442853402550725,
130.61406194165673,
0.4689990174082605,
0.3915667678092468,
0.21319133979094493,
185.2423670450406,
76.31524566862126,
127.66733088327213,
14.869121582478313,
71.42925735436108,
844289.4205128999,
1871843.3831297588,
63833.28663900627,
36457.0877495644,
1979.3342059564893,
41017.9994462398,
33138.51555644357,
1285209.472977435,
145136.79037385262,
1459564.2663853113,
1159966.9567245154,
1.0590955405607951
],
"std": [
13021032.695784755,
189.6836628295549,
186.13916771977108,
1366100.0137844363,
175343.2394873705,
495919.246600428,
332.6340993004248,
28139.884220659886,
27367.235623472247,
346.83550077192035,
422.80683501529063,
5937390.371629928,
6302828.0876488965,
2607765.266228357,
345.84585519370796,
19782.572561725658,
5.457574689789829,
358.5939678553331,
1365.024880946303,
0.8897314831847252,
0.8326227579585829,
0.6757562381733568,
261.91355522213735,
145.97497775092612,
209.49550260032348,
9.755976125742986,
953.2974129459069
10650950.18334552,
136.8344169199878,
144.5115931391652,
782315.1008220705,
115570.0690727939,
32890823.417328414,
244307.2905207503,
27272.95960331544,
25822.193228375105,
280.69989894222357,
400.95500103180973,
4809694.778465536,
5115143.491867724,
2118478.305631722,
323.5724207730803,
19307.274125529486,
5.3569399872996675,
201.78527220105093,
829.8816645804447,
0.8517415939053568,
0.7865420474337967,
0.6338316882067397,
245.5835792107576,
132.28322289134556,
199.89372134081543,
9.422620001273858,
546.5627544755516,
3076994.7662497265,
6282162.411486724,
354650.61908769683,
200092.88064741812,
21452.1321729186,
224937.60657079276,
194015.24605866344,
5833091.863698758,
1112258.2562796574,
6361960.657867311,
5591493.860273778,
0.8486496279087917
],
"feature_names": [
"flow_duration",
@ -240,7 +338,19 @@
"fwd_pkt_len_std",
"bwd_pkt_len_std",
"fwd_seg_size_min",
"fwd_act_data_pkts"
"fwd_act_data_pkts",
"flow_iat_std",
"flow_iat_max",
"flow_iat_min",
"active_mean",
"active_std",
"active_max",
"active_min",
"idle_mean",
"idle_std",
"idle_max",
"idle_min",
"down_up_ratio"
]
},
"post_scaling_clip": {

View File

@ -26,15 +26,27 @@
"fwd_pkt_len_std",
"bwd_pkt_len_std",
"fwd_seg_size_min",
"fwd_act_data_pkts"
"fwd_act_data_pkts",
"flow_iat_std",
"flow_iat_max",
"flow_iat_min",
"active_mean",
"active_std",
"active_max",
"active_min",
"idle_mean",
"idle_std",
"idle_max",
"idle_min",
"down_up_ratio"
],
"ae_clip_params": {
"flow_duration": {
"lower": 13203.665,
"upper": 90041362.345
"lower": 0.0,
"upper": 90036772.0
},
"fwd_packets": {
"lower": 2.0,
"lower": 1.0,
"upper": 1000.0
},
"bwd_packets": {
@ -43,19 +55,19 @@
},
"fwd_bytes": {
"lower": 0.0,
"upper": 12828460.719999954
"upper": 8830666.319999935
},
"bwd_bytes": {
"lower": 0.0,
"upper": 1782168.224999995
"upper": 714812.8399999992
},
"flow_bytes_per_sec": {
"lower": 0.0,
"upper": 3787763.16328191
"upper": 282000000.0
},
"flow_pkts_per_sec": {
"lower": 0.066635115985,
"upper": 2235.532986379341
"lower": 0.06663872375999999,
"upper": 1000000.0
},
"fwd_win_bytes": {
"lower": 0.0,
@ -67,31 +79,31 @@
},
"fwd_pkt_len_mean": {
"lower": 0.0,
"upper": 1448.0
"upper": 1445.1847187404396
},
"bwd_pkt_len_mean": {
"lower": 0.0,
"upper": 1415.023504181184
"upper": 1396.7002398081536
},
"fwd_iat_mean": {
"lower": 205.2674874874875,
"upper": 45017828.5025
"lower": 0.0,
"upper": 45015621.68
},
"bwd_iat_mean": {
"lower": 0.0,
"upper": 45017992.675
"upper": 45016786.3
},
"flow_iat_mean": {
"lower": 378.36644698085416,
"upper": 18008565.868
"lower": 0.0,
"upper": 18007572.2
},
"pkt_len_mean": {
"lower": 0.0,
"upper": 1140.389183169216
"upper": 1173.8309073821652
},
"dst_port": {
"lower": 53.0,
"upper": 63575.0
"upper": 63717.0
},
"protocol": {
"lower": 6.0,
@ -99,11 +111,11 @@
},
"psh_flag_cnt": {
"lower": 0.0,
"upper": 3443.0
"upper": 2327.119999999879
},
"ack_flag_cnt": {
"lower": 0.0,
"upper": 12277.0
"upper": 8954.119999999879
},
"syn_flag_cnt": {
"lower": 0.0,
@ -119,15 +131,15 @@
},
"pkt_len_std": {
"lower": 0.0,
"upper": 724.1810679032936
"upper": 723.0567403120758
},
"fwd_pkt_len_std": {
"lower": 0.0,
"upper": 677.6756844784483
"upper": 669.6453360147468
},
"bwd_pkt_len_std": {
"lower": 0.0,
"upper": 723.5706185235359
"upper": 713.1937558148791
},
"fwd_seg_size_min": {
"lower": 8.0,
@ -135,70 +147,156 @@
},
"fwd_act_data_pkts": {
"lower": 0.0,
"upper": 8950.0
"upper": 6158.0
},
"flow_iat_std": {
"lower": 0.0,
"upper": 24649410.54370532
},
"flow_iat_max": {
"lower": 0.0,
"upper": 45015173.0
},
"flow_iat_min": {
"lower": 0.0,
"upper": 3100010.0
},
"active_mean": {
"lower": 0.0,
"upper": 1858202.1999999958
},
"active_std": {
"lower": 0.0,
"upper": 279498.7479113591
},
"active_max": {
"lower": 0.0,
"upper": 2056578.1199999999
},
"active_min": {
"lower": 0.0,
"upper": 1858202.1999999958
},
"idle_mean": {
"lower": 0.0,
"upper": 45010596.68
},
"idle_std": {
"lower": 0.0,
"upper": 10972860.696148252
},
"idle_max": {
"lower": 0.0,
"upper": 45015173.0
},
"idle_min": {
"lower": 0.0,
"upper": 45007631.12
},
"down_up_ratio": {
"lower": 0.0,
"upper": 5.444444444444445
}
},
"ae_scaler_mean": [
5951288.750077261,
59.11059332512558,
64.43133138509893,
222150.9194105303,
43569.19774830678,
172594.2514672874,
144.20395486021135,
17024.939887041404,
16926.870109581538,
178.341350807249,
271.73465038994414,
1866741.291807338,
1837758.5476123434,
887050.3497480378,
275.91961765390863,
15713.397431840604,
12.181819994841344,
60.86333020445825,
263.60134098445224,
0.5260804590671343,
0.45693985380264684,
0.2458391722751531,
232.14679728383396,
96.51238144611007,
156.93610306173713,
15.867236423296912,
162.04478590251205
4174370.511260209,
35.077125227753555,
43.603742620662935,
94540.6390955523,
31544.833137720616,
5700335.998200838,
64420.30126318614,
15402.278083818182,
13973.66057455727,
135.26851684254757,
238.80296412254205,
1293324.141483505,
1251472.1995950716,
626966.5016614087,
233.05930315060152,
13901.66964997682,
12.74627202988346,
28.442853402550725,
130.61406194165673,
0.4689990174082605,
0.3915667678092468,
0.21319133979094493,
185.2423670450406,
76.31524566862126,
127.66733088327213,
14.869121582478313,
71.42925735436108,
844289.4205128999,
1871843.3831297588,
63833.28663900627,
36457.0877495644,
1979.3342059564893,
41017.9994462398,
33138.51555644357,
1285209.472977435,
145136.79037385262,
1459564.2663853113,
1159966.9567245154,
1.0590955405607951
],
"ae_scaler_std": [
13021032.695784755,
189.6836628295549,
186.13916771977108,
1366100.0137844363,
175343.2394873705,
495919.246600428,
332.6340993004248,
28139.884220659886,
27367.235623472247,
346.83550077192035,
422.80683501529063,
5937390.371629928,
6302828.0876488965,
2607765.266228357,
345.84585519370796,
19782.572561725658,
5.457574689789829,
358.5939678553331,
1365.024880946303,
0.8897314831847252,
0.8326227579585829,
0.6757562381733568,
261.91355522213735,
145.97497775092612,
209.49550260032348,
9.755976125742986,
953.2974129459069
10650950.18334552,
136.8344169199878,
144.5115931391652,
782315.1008220705,
115570.0690727939,
32890823.417328414,
244307.2905207503,
27272.95960331544,
25822.193228375105,
280.69989894222357,
400.95500103180973,
4809694.778465536,
5115143.491867724,
2118478.305631722,
323.5724207730803,
19307.274125529486,
5.3569399872996675,
201.78527220105093,
829.8816645804447,
0.8517415939053568,
0.7865420474337967,
0.6338316882067397,
245.5835792107576,
132.28322289134556,
199.89372134081543,
9.422620001273858,
546.5627544755516,
3076994.7662497265,
6282162.411486724,
354650.61908769683,
200092.88064741812,
21452.1321729186,
224937.60657079276,
194015.24605866344,
5833091.863698758,
1112258.2562796574,
6361960.657867311,
5591493.860273778,
0.8486496279087917
],
"ae_post_clip_min": -5.0,
"ae_post_clip_max": 5.0,
"ae_threshold": 0.04424155503511429,
"ae_threshold_method": "mean+1std",
"ae_thresholds": {
"90": 0.01886444352567196,
"91": 0.020988615229725838,
"92": 0.023535393178462982,
"93": 0.02664916217327118,
"94": 0.03065456449985504,
"95": 0.03615476191043854,
"96": 0.044667694717645645,
"97": 0.06003328785300255,
"98": 0.09323157370090485,
"99": 0.12769243121147156,
"mean+2std": 0.05561847239732742,
"mean+1std": 0.031917501240968704,
"Q3+1.5IQR": 0.013699173461645842,
"Q3+3.0IQR": 0.0217638174071908
},
"window_size": 10
}