Bayesian Virtual Lab / BMS Attack Detection Pipeline
M-W Framework · v2.0   Bayesian Cybersecurity
1 · Upload VChart CSV
Choose or drag a VChart CSV
Uploaded Files
  • CSV VChart1081.csv
  • CSV VChart1081_-normal.csv
  • CSV VChart959.csv
  • CSV VChart959__1_.csv
  • CSV VChart959_attack.csv
2 · Configuration
⚠ If your BMS reports FC > this value the detector flags SOH > 100% as impossible. Set to the actual OEM-rated Ah on the pack label (e.g. 105 if pack is 105 Ah).
Attack Simulation Parameters
Rows 0…N treated as clean reference in single-file mode. Increase (e.g. 80–100) if attack starts late in the file. Decrease only if file is short.
Recent Jobs
done Detect [SINGLE] VChart959__1_.csv [attack] 13:48:36
done Detect [SINGLE] VChart959_attack.csv [attack] 13:48:06
done Detect [SINGLE] VChart959.csv [attack] 13:47:46
done Detect [SINGLE] VChart1081_-normal.csv [attack] 13:44:23
done Detect [SINGLE] 20260415_063331_VChart959_attack.csv [attack] 13:39:51
done Detect [SINGLE] 20260415_063331_VChart959_attack.csv [attack] 13:07:48
done Detect [SINGLE] 20260413_091418_VChart959.csv [attack] 12:52:56
done Detect [SINGLE] 20260413_091418_VChart959.csv [attack] 11:28:17
done Detect [SINGLE] 20260413_091418_VChart959.csv [attack] 11:14:38
done Detect [SINGLE] 20260413_091418_VChart959.csv [attack] 10:57:20
done Detect [SINGLE] VChart959_attack.csv [attack] 10:52:40
done Detect [SINGLE] 20260423_133918_VChart959.csv [attack] 10:10:33
done Detect [SINGLE] 20260415_063331_VChart959_attack.csv [attack] 10:09:58
done Detect [SINGLE] 20260415_063331_VChart959_attack.csv [attack] 08:16:25
done Detect [SINGLE] VChart1081.csv [attack] 07:25:46
done Attack Simulation → VChart1081.csv 07:25:23
done Detect [DUAL] VChart1081.csv [baseline] 07:25:21
done Detect [SINGLE] VChart1081.csv [attack] 07:08:14
done Detect [SINGLE] VChart959.csv [attack] 07:07:04
done Detect [SINGLE] VChart1081.csv [attack] 06:59:34
done Detect [SINGLE] VChart959.csv [attack] 06:59:10
done Detect [SINGLE] VChart959.csv [attack] 06:58:47
done Detect [SINGLE] VChart1081.csv [attack] 06:55:49
error Detect [SINGLE] bvl_attack_20260513_125256_analysis_20260513_125258.csv [attack] 06:54:11
error Detect [SINGLE] bvl_attack_20260514_065145_analysis_20260514_065147.csv [attack] 06:53:51
error Detect [SINGLE] bvl_attack_20260514_065145_analysis_20260514_065147.csv [attack] 06:53:39
error Detect [SINGLE] bvl_attack_20260513_105720_analysis_20260513_105722.csv [attack] 06:52:34
done Detect [SINGLE] 20260415_063331_VChart959_attack.csv [attack] 06:51:45
error Detect [SINGLE] bvl_attack_20260513_105720_analysis_20260513_105722.csv [attack] 06:51:20
done Detect [DUAL] VChart1081.csv [baseline] 06:23:18
error Detect [SINGLE] bvl_baseline_20260515_072521_analysis_20260515_072524.csv [attack] 06:21:11
Pipeline
Compare — Clean vs Attack
Output Files
Full Pipeline — One Click
Simulate attack → dual-file detection (clean ref + suspect) → side-by-side compare
[ Simulate → Detect Attack → Detect Clean ]
0
Step 0 — Validate Clean Baseline
Confirm the clean file returns CLEAN verdict before running any attack — required for client demo
Run this first, before simulating any attack. Validates that the clean file produces a CLEAN verdict before any attack is injected. Uses dual-file mode with the same file as both clean and suspect — zero delta on all layers → unambiguous CLEAN. Always Auto-Detect Capacity first so L4 does not fire on natural FC variation.
python3 bvl_attack_detector.py --suspect <CLEAN_CSV> --capacity <N> --baseline-rows 80 --scenario all
1
Step 1 — Simulate Attack
Inject IR suppression · SOH inflation · voltage drift into a VChart CSV
python3 vchart_attack_simulator.py --input <CSV> --attack combined --target-cells 7 9 --start-row 50 --output <OUT>_attack.csv
2A
Step 2A — Detect (Single-file, no clean ref)
Use only when you have no clean reference file — less accurate
python3 bvl_attack_detector.py --suspect <ATTACK_CSV> --model <MODEL> --capacity <N> --scenario all
2B
Step 2B — Dual-File Detection (Recommended)
Clean CSV as reference + attack CSV as suspect — the only reliable way to isolate injected signals
Why dual-file? Single-file mode uses only the first N rows as its own baseline. For a 570-row pack with natural FC drift, L2 & L4 will flag the clean file itself as suspicious — a false positive. Dual-file mode uses VChart1081.csv as ground-truth clean and VChart1081_attack.csv as suspect, giving true signal isolation.
python3 bvl_attack_detector.py --clean <CLEAN_CSV> --suspect <ATTACK_CSV> --model <MODEL> --capacity <N> --scenario all
Single-File Fallback (less accurate)
Use only when you do not have a clean reference file. Increase Baseline Window Rows to 80–120 for best results.
python3 bvl_attack_detector.py --suspect <CLEAN_CSV> --model <MODEL> --capacity <N> --baseline-rows 80 --scenario all