INNER CODE UNIT · Rust

exposure_snapshot

Symph0nia/CyberEdge · src/repository/mod.rs:279

fn exposure_snapshot<'a>(
    observations: impl IntoIterator<Item = &'a Observation>,
) -> BTreeMap<String, ExposureState> {
    observations
        .into_iter()
        .filter_map(|observation| {
            let value = serde_json::from_str::<serde_json::Value>(&observation.value_json).ok()?;
            let fingerprint = digest(&serde_json::to_vec(&value).ok()?);
            let (resource_kind, resource_id) = match observation.observation_type.as_str() {
                "tcp.open" => {
                    let port = value.get("port")?.as_u64()?;
                    let service_id = content_id(
                        "service",
                        format!("{}:tcp:{port}", observation.asset_id).as_bytes(),
                    );
                    ("service", service_id)
                }
                "http.response" => {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…