Tenho o seguinte JSON (com base na saída NDPI)
{
"src_ip": "x.x.x.x",
"dest_ip": "x1.x1.x1.x1",
"src_port": 48318,
"dst_port": 443,
"ip": 4,
"proto": "TCP",
"ndpi": {
"flow_risk": {
"35": {
"risk": "Susp Entropy",
"severity": "Medium",
"risk_score": {
"total": 210,
"client": 165,
"server": 45
}
}
},
"confidence": {
"1": "Match by port"
},
"proto": "TLS",
"proto_id": "91",
"proto_by_ip": "Unknown",
"proto_by_ip_id": 0,
"encrypted": 1,
"breed": "Safe",
"category_id": 5,
"category": "Web"
},
"detection_completed": 1,
"check_extra_packets": 0,
"flow_id": 0,
"first_seen": 1733074272.824,
"last_seen": 1733074282.757,
"duration": 9.933,
"vlan_id": 0,
"bidirectional": 1,
"xfer": {
"data_ratio": -0.958,
"data_ratio_str": "Download",
"src2dst_packets": 1268,
"src2dst_bytes": 86239,
"src2dst_goodput_bytes": 2551,
"dst2src_packets": 2693,
"dst2src_bytes": 4042956,
"dst2src_goodput_bytes": 3865218
},
"iat": {
"flow_min": 1,
"flow_avg": 6.1,
"flow_max": 4005,
"flow_stddev": 108.3,
"c_to_s_min": 0,
"c_to_s_avg": 7.4,
"c_to_s_max": 4005,
"c_to_s_stddev": 137.8,
"s_to_c_min": 0,
"s_to_c_avg": 1.4,
"s_to_c_max": 35,
"s_to_c_stddev": 2.2
},
"pktlen": {
"c_to_s_min": 66,
"c_to_s_avg": 68.0,
"c_to_s_max": 514,
"c_to_s_stddev": 28.8,
"s_to_c_min": 66,
"s_to_c_avg": 1501.3,
"s_to_c_max": 1506,
"s_to_c_stddev": 76.6
},
"tcp_flags": {
"cwr_count": 0,
"ece_count": 0,
"urg_count": 0,
"ack_count": 3961,
"psh_count": 1323,
"rst_count": 0,
"syn_count": 0,
"fin_count": 0,
"src2dst_cwr_count": 0,
"src2dst_ece_count": 0,
"src2dst_urg_count": 0,
"src2dst_ack_count": 1268,
"src2dst_psh_count": 7,
"src2dst_rst_count": 0,
"src2dst_syn_count": 0,
"src2dst_fin_count": 0,
"dst2src_cwr_count": 0,
"dst2src_ece_count": 0,
"dst2src_urg_count": 0,
"dst2src_ack_count": 2693,
"dst2src_psh_count": 1316,
"dst2src_rst_count": 0,
"dst2src_syn_count": 0,
"dst2src_fin_count": 0
},
"c_to_s_init_win": 0,
"s_to_c_init_win": 0
}
Posso obter quase todas as informações (src_ip, portas, etc.), mas há uma coisa relacionada ao "flow_risk"
{"flow_risk": {"35": {"risk":"Susp Entropy","severity":"Medium"
que está relacionado ao número (neste caso 35). Este número pode ser diferente (de 01 a 50) e não sei como filtrar para buscar números diferentes.
No momento, esse é o filtro que estou usando
cat data.json | jq -r '"\(.src_ip),\(.src_port),\(.dest_ip),\(.dst_port),\(.proto),\(.ndpi.proto),\(.ndpi.category),\(.ndpi.hostname),\(.duration),\(.vlan_id),\(.xfer.src2dst_bytes),\(.xfer.dst2src_bytes),\(.ndpi.flow_risk."35".risk),\(.ndpi.flow_risk."35".severity)"')
Isso funciona quando o número é exatamente 35, mas há alguma chance de usar algo como curingas com jQ?
Quero dizer, como posso fazer isso para aceitar vários números? (por exemplo: pesquisar de 01 a 50?)
Algo como
\(.ndpi.flow_risk."*".risk),\(.ndpi.flow_risk."*".severity)"')
obrigado !