purpleteam / index.html
nosperantos's picture
undefined - Initial Deployment
dc573f1 verified
Raw
History Blame Contribute Delete
30.2 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Agentic AI | Red vs Blue Dashboard</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
'red-team': '#ef4444',
'blue-team': '#3b82f6',
'dark-bg': '#0f172a',
'card-bg': '#1e293b',
'sidebar': '#1a243f',
}
}
}
}
</script>
<style>
.glow-red {
box-shadow: 0 0 10px rgba(239, 68, 68, 0.5);
}
.glow-blue {
box-shadow: 0 0 10px rgba(59, 130, 246, 0.5);
}
.activity-card:hover {
transform: translateY(-5px);
transition: transform 0.3s ease;
}
.status-indicator {
width: 10px;
height: 10px;
border-radius: 50%;
display: inline-block;
margin-right: 5px;
}
.status-success { background-color: #10b981; }
.status-failure { background-color: #ef4444; }
.status-pending { background-color: #f59e0b; }
.status-running { background-color: #3b82f6; }
.chart-container {
position: relative;
height: 300px;
}
.grid-stack {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 1.5rem;
}
.sidebar-item:hover {
background-color: rgba(59, 130, 246, 0.1);
}
</style>
</head>
<body class="bg-dark-bg text-gray-200 min-h-screen">
<!-- Main Layout -->
<div class="flex">
<!-- Sidebar -->
<div class="w-64 bg-sidebar min-h-screen hidden md:block">
<div class="p-5 border-b border-gray-700">
<h1 class="text-2xl font-bold text-white">
<i class="fas fa-robot mr-2 text-blue-400"></i>Agentic AI
</h1>
<p class="text-sm text-gray-400">Red vs Blue Dashboard</p>
</div>
<nav class="mt-5">
<div class="sidebar-item px-5 py-3 bg-blue-500/10 border-l-4 border-blue-500">
<a href="#" class="flex items-center">
<i class="fas fa-chart-line mr-3"></i>
Dashboard
</a>
</div>
<div class="sidebar-item px-5 py-3">
<a href="#" class="flex items-center">
<i class="fas fa-fire mr-3 text-red-500"></i>
Red Team
</a>
</div>
<div class="sidebar-item px-5 py-3">
<a href="#" class="flex items-center">
<i class="fas fa-shield-alt mr-3 text-blue-500"></i>
Blue Team
</a>
</div>
<div class="sidebar-item px-5 py-3">
<a href="#" class="flex items-center">
<i class="fas fa-exchange-alt mr-3"></i>
Interactions
</a>
</div>
<div class="sidebar-item px-5 py-3">
<a href="#" class="flex items-center">
<i class="fas fa-cog mr-3"></i>
Settings
</a>
</div>
</nav>
<div class="absolute bottom-0 w-64 p-5 border-t border-gray-700">
<div class="flex items-center">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-10 h-10 mr-3"></div>
<div>
<p class="text-sm font-medium">Admin User</p>
<p class="text-xs text-gray-400">Security Analyst</p>
</div>
</div>
</div>
</div>
<!-- Main Content -->
<div class="flex-1">
<!-- Top Navigation -->
<header class="bg-card-bg border-b border-gray-700">
<div class="flex justify-between items-center p-4">
<div class="flex items-center">
<button class="md:hidden mr-3">
<i class="fas fa-bars text-xl"></i>
</button>
<h2 class="text-xl font-bold">Agentic AI Dashboard</h2>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="Search..." class="bg-gray-700 rounded-full py-1 px-4 pl-10 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500">
<i class="fas fa-search absolute left-3 top-2 text-gray-400"></i>
</div>
<button class="relative">
<i class="fas fa-bell text-xl"></i>
<span class="absolute -top-1 -right-1 bg-red-500 text-xs rounded-full h-5 w-5 flex items-center justify-center">3</span>
</button>
<div class="flex items-center">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-8 h-8 mr-2"></div>
<span>Admin</span>
</div>
</div>
</div>
</header>
<!-- Dashboard Content -->
<main class="p-5">
<!-- Stats Overview -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-5 mb-5">
<div class="bg-card-bg rounded-xl p-5 glow-red">
<div class="flex justify-between">
<div>
<h3 class="text-gray-400 text-sm">Red Team Activities</h3>
<p class="text-2xl font-bold mt-2">1,248</p>
<p class="text-xs mt-1 text-red-400">
<i class="fas fa-arrow-up"></i> 12% increase
</p>
</div>
<div class="bg-red-500/20 p-3 rounded-lg">
<i class="fas fa-fire text-red-500 text-2xl"></i>
</div>
</div>
</div>
<div class="bg-card-bg rounded-xl p-5 glow-blue">
<div class="flex justify-between">
<div>
<h3 class="text-gray-400 text-sm">Blue Team Activities</h3>
<p class="text-2xl font-bold mt-2">2,187</p>
<p class="text-xs mt-1 text-blue-400">
<i class="fas fa-arrow-up"></i> 8% increase
</p>
</div>
<div class="bg-blue-500/20 p-3 rounded-lg">
<i class="fas fa-shield-alt text-blue-500 text-2xl"></i>
</div>
</div>
</div>
<div class="bg-card-bg rounded-xl p-5">
<div class="flex justify-between">
<div>
<h3 class="text-gray-400 text-sm">Successful Defenses</h3>
<p class="text-2xl font-bold mt-2">89%</p>
<p class="text-xs mt-1 text-green-400">
<i class="fas fa-arrow-up"></i> 3% improvement
</p>
</div>
<div class="bg-green-500/20 p-3 rounded-lg">
<i class="fas fa-check-circle text-green-500 text-2xl"></i>
</div>
</div>
</div>
<div class="bg-card-bg rounded-xl p-5">
<div class="flex justify-between">
<div>
<h3 class="text-gray-400 text-sm">Active Agents</h3>
<p class="text-2xl font-bold mt-2">42</p>
<p class="text-xs mt-1 text-yellow-400">
<i class="fas fa-exchange-alt"></i> 12 in combat
</p>
</div>
<div class="bg-purple-500/20 p-3 rounded-lg">
<i class="fas fa-robot text-purple-500 text-2xl"></i>
</div>
</div>
</div>
</div>
<!-- Charts Section -->
<div class="grid grid-cols-1 lg:grid-cols-2 gap-5 mb-5">
<div class="bg-card-bg rounded-xl p-5">
<div class="flex justify-between items-center mb-5">
<h3 class="font-bold">Activity Timeline</h3>
<div class="flex space-x-2">
<button class="text-xs bg-gray-700 px-3 py-1 rounded">24H</button>
<button class="text-xs bg-blue-500 px-3 py-1 rounded">7D</button>
<button class="text-xs bg-gray-700 px-3 py-1 rounded">30D</button>
</div>
</div>
<div class="chart-container">
<canvas id="timelineChart"></canvas>
</div>
</div>
<div class="bg-card-bg rounded-xl p-5">
<div class="flex justify-between items-center mb-5">
<h3 class="font-bold">Team Distribution</h3>
<div class="text-sm">
<span class="inline-flex items-center mr-3"><span class="status-indicator bg-red-500"></span>Red Team</span>
<span class="inline-flex items-center"><span class="status-indicator bg-blue-500"></span>Blue Team</span>
</div>
</div>
<div class="chart-container">
<canvas id="distributionChart"></canvas>
</div>
</div>
</div>
<!-- Recent Activities -->
<div class="bg-card-bg rounded-xl p-5 mb-5">
<div class="flex justify-between items-center mb-5">
<h3 class="font-bold">Recent Activities</h3>
<button class="text-sm text-blue-400 flex items-center">
View All <i class="fas fa-arrow-right ml-2"></i>
</button>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-700">
<thead>
<tr>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-400 uppercase tracking-wider">Agent</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-400 uppercase tracking-wider">Team</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-400 uppercase tracking-wider">Activity</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-400 uppercase tracking-wider">Target</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-400 uppercase tracking-wider">Status</th>
<th class="px-4 py-3 text-left text-xs font-medium text-gray-400 uppercase tracking-wider">Time</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-700">
<tr>
<td class="px-4 py-3 whitespace-nowrap">
<div class="flex items-center">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-8 h-8 mr-3"></div>
<span>Phantom-7</span>
</div>
</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="px-2 py-1 bg-red-500/20 text-red-500 rounded-full text-xs">Red</span>
</td>
<td class="px-4 py-3 whitespace-nowrap">SQL Injection Attempt</td>
<td class="px-4 py-3 whitespace-nowrap">User Database</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="status-failure"></span> Blocked
</td>
<td class="px-4 py-3 whitespace-nowrap">2 min ago</td>
</tr>
<tr>
<td class="px-4 py-3 whitespace-nowrap">
<div class="flex items-center">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-8 h-8 mr-3"></div>
<span>Guardian-12</span>
</div>
</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="px-2 py-1 bg-blue-500/20 text-blue-500 rounded-full text-xs">Blue</span>
</td>
<td class="px-4 py-3 whitespace-nowrap">Firewall Update</td>
<td class="px-4 py-3 whitespace-nowrap">Network Perimeter</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="status-success"></span> Completed
</td>
<td class="px-4 py-3 whitespace-nowrap">5 min ago</td>
</tr>
<tr>
<td class="px-4 py-3 whitespace-nowrap">
<div class="flex items-center">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-8 h-8 mr-3"></div>
<span>Shadow-3</span>
</div>
</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="px-2 py-1 bg-red-500/20 text-red-500 rounded-full text-xs">Red</span>
</td>
<td class="px-4 py-3 whitespace-nowrap">DDoS Simulation</td>
<td class="px-4 py-3 whitespace-nowrap">API Gateway</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="status-running"></span> In Progress
</td>
<td class="px-4 py-3 whitespace-nowrap">12 min ago</td>
</tr>
<tr>
<td class="px-4 py-3 whitespace-nowrap">
<div class="flex items-center">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-8 h-8 mr-3"></div>
<span>Sentinel-9</span>
</div>
</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="px-2 py-1 bg-blue-500/20 text-blue-500 rounded-full text-xs">Blue</span>
</td>
<td class="px-4 py-3 whitespace-nowrap">Threat Analysis</td>
<td class="px-4 py-3 whitespace-nowrap">Security Logs</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="status-success"></span> Completed
</td>
<td class="px-4 py-3 whitespace-nowrap">18 min ago</td>
</tr>
<tr>
<td class="px-4 py-3 whitespace-nowrap">
<div class="flex items-center">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-8 h-8 mr-3"></div>
<span>Viper-5</span>
</div>
</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="px-2 py-1 bg-red-500/20 text-red-500 rounded-full text-xs">Red</span>
</td>
<td class="px-4 py-3 whitespace-nowrap">Zero-Day Exploit</td>
<td class="px-4 py-3 whitespace-nowrap">Auth Service</td>
<td class="px-4 py-3 whitespace-nowrap">
<span class="status-pending"></span> Detected
</td>
<td class="px-4 py-3 whitespace-nowrap">25 min ago</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- Agent Status Cards -->
<div class="mb-5">
<h3 class="font-bold mb-3">Active Agents</h3>
<div class="grid-stack">
<!-- Red Team Agents -->
<div class="bg-card-bg rounded-xl p-4 activity-card">
<div class="flex items-center mb-3">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-12 h-12 mr-3"></div>
<div>
<h4 class="font-bold">Phantom-7</h4>
<span class="text-xs bg-red-500/20 text-red-500 px-2 py-1 rounded-full">Red Team</span>
</div>
</div>
<div class="mb-3">
<div class="flex justify-between text-sm mb-1">
<span>Attack Strength</span>
<span>87%</span>
</div>
<div class="w-full bg-gray-700 rounded-full h-2">
<div class="bg-red-500 h-2 rounded-full" style="width: 87%"></div>
</div>
</div>
<div class="flex justify-between text-sm">
<div>
<div class="text-gray-400">Current Task</div>
<div>Credential Harvesting</div>
</div>
<div class="text-right">
<div class="text-gray-400">Status</div>
<div class="text-green-500">Active</div>
</div>
</div>
</div>
<!-- Blue Team Agents -->
<div class="bg-card-bg rounded-xl p-4 activity-card">
<div class="flex items-center mb-3">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-12 h-12 mr-3"></div>
<div>
<h4 class="font-bold">Guardian-12</h4>
<span class="text-xs bg-blue-500/20 text-blue-500 px-2 py-1 rounded-full">Blue Team</span>
</div>
</div>
<div class="mb-3">
<div class="flex justify-between text-sm mb-1">
<span>Defense Rating</span>
<span>92%</span>
</div>
<div class="w-full bg-gray-700 rounded-full h-2">
<div class="bg-blue-500 h-2 rounded-full" style="width: 92%"></div>
</div>
</div>
<div class="flex justify-between text-sm">
<div>
<div class="text-gray-400">Current Task</div>
<div>Firewall Optimization</div>
</div>
<div class="text-right">
<div class="text-gray-400">Status</div>
<div class="text-green-500">Active</div>
</div>
</div>
</div>
<!-- Another Red Team Agent -->
<div class="bg-card-bg rounded-xl p-4 activity-card">
<div class="flex items-center mb-3">
<div class="bg-gray-200 border-2 border-dashed rounded-xl w-12 h-12 mr-3"></div>
<div>
<h4 class="font-bold">Viper-5</h4>
<span class="text-xs bg-red-500/20 text-red-500 px-2 py-1 rounded-full">Red Team</span>
</div>
</div>
<div class="mb-3">
<div class="flex justify-between text-sm mb-1">
<span>Stealth Rating</span>
<span>78%</span>
</div>
<div class="w-full bg-gray-700 rounded-full h-2">
<div class="bg-red-500 h-2 rounded-full" style="width: 78%"></div>
</div>
</div>
<div class="flex justify-between text-sm">
<div>
<div class="text-gray-400">Current Task</div>
<div>Zero-Day Exploit</div>
</div>
<div class="text-right">
<div class="text-gray-400">Status</div>
<div class="text-yellow-500">Analyzing</div>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
</div>
<script>
// Initialize charts
document.addEventListener('DOMContentLoaded', function() {
// Timeline Chart
const timelineCtx = document.getElementById('timelineChart').getContext('2d');
const timelineChart = new Chart(timelineCtx, {
type: 'line',
data: {
labels: ['00:00', '04:00', '08:00', '12:00', '16:00', '20:00'],
datasets: [
{
label: 'Red Team',
data: [12, 19, 8, 15, 24, 18],
borderColor: '#ef4444',
backgroundColor: 'rgba(239, 68, 68, 0.1)',
tension: 0.4,
fill: true
},
{
label: 'Blue Team',
data: [8, 12, 16, 22, 18, 25],
borderColor: '#3b82f6',
backgroundColor: 'rgba(59, 130, 246, 0.1)',
tension: 0.4,
fill: true
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
labels: {
color: '#e2e8f0'
}
}
},
scales: {
x: {
grid: {
color: 'rgba(255, 255, 255, 0.1)'
},
ticks: {
color: '#94a3b8'
}
},
y: {
grid: {
color: 'rgba(255, 255, 255, 0.1)'
},
ticks: {
color: '#94a3b8'
}
}
}
}
});
// Distribution Chart
const distributionCtx = document.getElementById('distributionChart').getContext('2d');
const distributionChart = new Chart(distributionCtx, {
type: 'doughnut',
data: {
labels: ['Red Team Attacks', 'Blue Team Defenses', 'Neutral Activities'],
datasets: [{
data: [35, 50, 15],
backgroundColor: [
'rgba(239, 68, 68, 0.8)',
'rgba(59, 130, 246, 0.8)',
'rgba(148, 163, 184, 0.8)'
],
borderColor: [
'rgba(239, 68, 68, 1)',
'rgba(59, 130, 246, 1)',
'rgba(148, 163, 184, 1)'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
position: 'bottom',
labels: {
color: '#e2e8f0',
font: {
size: 12
}
}
}
}
}
});
// Simulate real-time updates
setInterval(() => {
// Update timeline chart with new data
timelineChart.data.datasets[0].data = timelineChart.data.datasets[0].data.map(() => Math.floor(Math.random() * 30));
timelineChart.data.datasets[1].data = timelineChart.data.datasets[1].data.map(() => Math.floor(Math.random() * 30));
timelineChart.update();
// Update distribution chart
distributionChart.data.datasets[0].data = [
Math.floor(Math.random() * 20) + 30,
Math.floor(Math.random() * 20) + 40,
Math.floor(Math.random() * 10) + 5
];
distributionChart.update();
}, 10000);
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=nosperantos/purpleteam" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>