+
The IIFVDCAS AI assistant layers security expertise directly on top of your scan results.
- The IIFVDCAS AI assistant layers security expertise directly on top of your scan results.
-
-
- Security context: Whenever you ask the assistant to explain a CVE, justify a VEX state, or audit a compliance failure, the platform automatically feeds relevant technical context (such as the target architecture, bare-metal state, CBOM libraries, and scan findings) directly into the LLM system prompt.
-
-
- This turns a generic AI model into a dedicated security consultant who understands your specific IoT firmware's exact details.
+ Security context: Whenever you ask the assistant to explain a CVE, justify a VEX state, or audit a compliance failure, the platform automatically feeds relevant technical context directly into the LLM system prompt.
-
-
Recommended Models:
-
- - NVIDIA NIM: meta/llama-3.1-70b-instruct
- - OpenAI: gpt-4o-mini / gpt-4o
- - Anthropic: claude-3-5-haiku-20241022
- - Gemini: gemini-2.0-flash
- - Ollama: llama3 / mistral
+ This turns a generic AI model into a dedicated security consultant who understands your specific IoT firmware's exact details.
+
+
Recommended Models:
+
+ - NVIDIA NIM: meta/llama-3.1-70b-instruct
+ - OpenAI: gpt-4o-mini / gpt-4o
+ - Anthropic: claude-3-5-haiku-20241022
+ - Gemini: gemini-2.0-flash
+ - Ollama: llama3 / mistral
diff --git a/frontend/src/pages/Dashboard.jsx b/frontend/src/pages/Dashboard.jsx
index 2d68c5f..01dd4da 100644
--- a/frontend/src/pages/Dashboard.jsx
+++ b/frontend/src/pages/Dashboard.jsx
@@ -12,6 +12,7 @@ const phases = [
{ num:6, label:'VEX Risk Analysis', path:'/vex', icon:BarChart3, status:'planned', emba:'KEV · VEX engine' },
{ num:7, label:'Compliance', path:'/compliance', icon:FileCheck, status:'planned', emba:'ETSI EN 303 645 · EU CRA' },
]
+
const toolList = [
{key:'udevadm',label:'udevadm',phase:1},{key:'nmap',label:'nmap',phase:1},{key:'avrdude',label:'avrdude',phase:1},
{key:'binwalk',label:'binwalk',phase:2},{key:'unblob',label:'unblob',phase:2},
@@ -24,77 +25,118 @@ export default function Dashboard() {
const navigate = useNavigate()
useEffect(() => { systemApi.info().then(r => setTools(r.data.tools)).catch(()=>{}) }, [])
const ready = toolList.filter(t => tools[t.key]).length
+
+ const stats = [
+ { label:'Total Phases', value:7, icon:Activity, accent:'#0084d5' },
+ { label:'Active Phase', value:'1 of 7', icon:Zap, accent:'#00c154' },
+ { label:'Tools Ready', value:`${ready}/${toolList.length}`, icon:CheckCircle2, accent: ready === toolList.length ? '#00c154' : '#eb9d00' },
+ { label:'Platform', value:'Web → WSL → Linux', icon:Shield, accent:'#8457d5' },
+ ]
+
return (
+ {/* Header */}
IIFVDCAS Dashboard
-
Intelligent IoT Firmware Vulnerability Detection & Compliance Assessment System
-
Powered by EMBA v2.0.1 · UMT Lahore
+
Intelligent IoT Firmware Vulnerability Detection & Compliance Assessment System
+
Powered by EMBA v2.0.1 · UMT Lahore
+
+ {/* Stats */}
- {[
- {label:'Total Phases',value:7,color:'text-white',icon:Activity},
- {label:'Active Phase',value:'1 of 7',color:'text-green-400',icon:Zap},
- {label:'Tools Ready',value:`${ready}/${toolList.length}`,color:ready===toolList.length?'text-green-400':'text-amber-400',icon:CheckCircle2},
- {label:'Platform',value:'Web → Win → Linux',color:'text-indigo-400',icon:Shield},
- ].map(s => (
+ {stats.map(s => (
-
{s.label}
-
{s.value}
+
+
{s.value}
))}
+
+ {/* Main Grid */}
+ {/* Pipeline */}
-
Analysis Pipeline
+
+ Analysis Pipeline
+
{phases.map(p => (
-
navigate(p.path)} className="card flex items-center gap-4 cursor-pointer hover:border-gray-700 transition-colors">
-
-
+
navigate(p.path)}
+ className="card flex items-center gap-4 cursor-pointer transition-all hover:border-gray-600"
+ style={{borderColor:'#2c2e33'}}
+ >
+
Phase {p.num}: {p.label}
- {p.status==='active'?'Active':'Planned'}
+
+ {p.status === 'active' ? 'Active' : 'Planned'}
+
-
{p.emba}
+
{p.emba}
-
+
))}
+
+ {/* Tools */}
-
Tool Availability
+
+ Tool Availability
+
-
Tools ready{ready}/{toolList.length}
-
-
+
+ Tools ready{ready}/{toolList.length}
+
+
{toolList.map(t => (
- {tools[t.key] ?
:
}
-
{t.label}
-
P{t.phase}
+ {tools[t.key]
+ ?
+ :
}
+
{t.label}
+
P{t.phase}
))}
{ready < toolList.length && (
-
-
Install missing tools:
-
./scripts/install.sh
+
+
Install missing tools:
+
./scripts/install.sh
)}
+
-
EMBA Engine
-
- {[['Version','2.0.1'],['Location','~/emba'],['Modules','93 total'],['P-modules','20 (extraction)'],['S-modules','51 (static)'],['L-modules','9 (dynamic)'],['F-modules','7 (reporting)']].map(([k,v]) => (
-
{k}{v}
+
EMBA Engine
+
+ {[['Version','2.0.1'],['Location','~/emba'],['Modules','93 total'],['P-modules','20 (extraction)'],['S-modules','51 (static)'],['F-modules','7 (reporting)']].map(([k,v]) => (
+
+ {k}
+ {v}
+
))}
diff --git a/frontend/src/pages/DeviceDetection.jsx b/frontend/src/pages/DeviceDetection.jsx
index 980eb26..24dba9a 100644
--- a/frontend/src/pages/DeviceDetection.jsx
+++ b/frontend/src/pages/DeviceDetection.jsx
@@ -1,4 +1,5 @@
import { useState, useEffect, useCallback, useRef } from 'react'
+import { useNavigate } from 'react-router-dom'
import {
Cpu, Scan, Usb, RefreshCw, ChevronRight, Terminal,
CheckCircle2, AlertCircle, Network, Info, Wifi,
@@ -136,7 +137,7 @@ function DeviceDetail({ device, onClose, onExtract }) {
Extract Firmware
{isDone && (
-
- CycloneDX VEX
-
+ {result.status === 'success' && (
+
+ CycloneDX VEX
+
+ )}
Reset
@@ -719,6 +721,11 @@ export default function VEXPage() {
{/* Results */}
{isDone && (
<>
+ {result.status === 'no_findings' && (
+
+ No CVEs were available for VEX triage. This result is inconclusive, not a confirmation that the firmware is vulnerability-free. Generate an ESP-specific SBOM with identifiable component versions, then run Phase 5 again.
+
+ )}
{/* Risk gauge + stat cards */}
diff --git a/scripts/dev.sh b/scripts/dev.sh
old mode 100755
new mode 100644
diff --git a/scripts/install.sh b/scripts/install.sh
old mode 100755
new mode 100644