File size: 1,412 Bytes
2f52f17
 
 
 
 
1d1902a
 
 
 
 
 
 
 
 
 
 
 
2f52f17
 
 
 
 
 
1d1902a
2f52f17
 
 
1d1902a
 
 
2f52f17
 
1d1902a
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import altair as alt
import numpy as np
import pandas as pd
import streamlit as st

st.set_page_config(layout="wide", page_title="AI Recon Visualizer")
st.title("🧠 AI Recon Visualizer")
st.markdown("""
This interactive spiral chart simulates discovered targets during an automated reconnaissance workflow.
Each point represents a discovered service or subdomain, with random weights simulating risk or exposure levels.
""")

# User-controlled parameters
num_points = st.slider("πŸ“ˆ Number of discovered endpoints", 10, 10000, 800)
num_turns = st.slider("πŸ”„ Spiral depth (rotations)", 1, 300, 40)

# Spiral coordinates
indices = np.linspace(0, 1, num_points)
theta = 2 * np.pi * num_turns * indices
radius = indices
x = radius * np.cos(theta)
y = radius * np.sin(theta)

# Simulated recon data
df = pd.DataFrame({
    "x": x,
    "y": y,
    "target_score": indices,
    "risk": np.random.randn(num_points),
    "endpoint": [f"host{i}.recon.local" for i in range(num_points)]
})

# Chart definition
chart = alt.Chart(df, height=700, width=700).mark_point(filled=True).encode(
    x=alt.X("x", axis=None),
    y=alt.Y("y", axis=None),
    color=alt.Color("target_score", legend=None, scale=alt.Scale(scheme="viridis")),
    size=alt.Size("risk", legend=None, scale=alt.Scale(range=[10, 150])),
    tooltip=["endpoint", "risk", "target_score"]
).interactive()

st.altair_chart(chart, use_container_width=True)