WSF
WsfCyberAttack.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2016 Infoscitex, a DCS Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFCYBERATTACK_HPP
13#define WSFCYBERATTACK_HPP
14
15#include "wsf_cyber_export.h"
16
17#include <memory>
18#include <string>
19#include <vector>
20
21#include "WsfObject.hpp"
22#include "WsfRandomVariable.hpp"
23class WsfSimulation;
24
25namespace wsf
26{
27namespace cyber
28{
29class Engagement;
30
44
54class WSF_CYBER_EXPORT Attack : public WsfObject
55{
56public:
57 Attack() = default;
58 ~Attack() override = default;
59 Attack(const Attack& aSrc) = default;
60 Attack& operator=(const Attack& aRhs) = default;
61
63
64 Attack* Clone() const override;
65 bool ProcessInput(UtInput& aInput) override;
67
68 virtual bool Initialize(double aSimTime, WsfSimulation& aSimulation);
69
71
72 double GetProbabilityOfScanDetection() const { return mProbabilityOfScanDetection; }
73 double GetProbabilityOfScanAttribution() const { return mProbabilityOfScanAttribution; }
74 double GetProbabilityOfAttackSuccess() const { return mProbabilityOfAttackSuccess; }
75 double GetProbabilityOfStatusReport() const { return mProbabilityOfStatusReport; }
76 double GetProbabilityOfAttackDetection() const { return mProbabilityOfAttackDetection; }
77 double GetProbabilityOfAttackAttribution() const { return mProbabilityOfAttackAttribution; }
78 double GetProbabilityOfFutureImmunity() const { return mProbabilityOfFutureImmunity; }
80
82
83 random::ProbabilityFrequency GetFrequencyOfScanDetection() const { return mFrequencyOfScanDetection; }
84 random::ProbabilityFrequency GetFrequencyOfScanAttribution() const { return mFrequencyOfScanAttribution; }
85 random::ProbabilityFrequency GetFrequencyOfAttackSuccess() const { return mFrequencyOfAttackSuccess; }
86 random::ProbabilityFrequency GetFrequencyOfStatusReport() const { return mFrequencyOfStatusReport; }
87 random::ProbabilityFrequency GetFrequencyOfAttackDetection() const { return mFrequencyOfAttackDetection; }
88 random::ProbabilityFrequency GetFrequencyOfAttackAttribution() const { return mFrequencyOfAttackAttribution; }
89 random::ProbabilityFrequency GetFrequencyOfFutureImmunity() const { return mFrequencyOfFutureImmunity; }
91
93
94 WsfRandomVariable& GetRandomVariableScanDetection() { return mRandomVariableScanDetection; }
95 WsfRandomVariable& GetRandomVariableScanAttribution() { return mRandomVariableScanAttribution; }
96 WsfRandomVariable& GetRandomVariableAttackSuccess() { return mRandomVariableAttackSuccess; }
97 WsfRandomVariable& GetRandomVariableStatusReport() { return mRandomVariableStatusReport; }
98 WsfRandomVariable& GetRandomVariableAttackDetection() { return mRandomVariableAttackDetection; }
99 WsfRandomVariable& GetRandomVariableAttackAttribution() { return mRandomVariableAttackAttribution; }
100 WsfRandomVariable& GetRandomVariableFutureImmunity() { return mRandomVariableFutureImmunity; }
102
104
105 double GetDuration() const { return mDuration; }
107
109
110 double GetTimeDelayScan() const { return mTimeDelayScan.Draw(); }
111 double GetTimeDelayDelivery() const { return mTimeDelayDelivery.Draw(); }
113
115
116 double GetLastTimeDelayScan() const { return mTimeDelayScan; }
117 double GetLastTimeDelayDelivery() const { return mTimeDelayDelivery; }
119
121 const std::vector<std::string>& GetEffects() const { return mEffectTypes; }
122
124 double GetResourceRequirements() const { return mResourcesRequired; }
125
131 virtual double ExtendedDrawDefinition(const std::string& aTarget = {});
132
133protected:
137 virtual void ProcessFrequencyInput(WsfRandomVariable& aRandomVariable,
138 random::ProbabilityFrequency& aFrequency,
139 UtInput& aInput);
140
141private:
145
146 double mProbabilityOfScanDetection{0.0};
147 double mProbabilityOfScanAttribution{0.0};
148 double mProbabilityOfAttackSuccess{1.0};
149 double mProbabilityOfStatusReport{1.0};
150 double mProbabilityOfAttackDetection{0.0};
151 double mProbabilityOfAttackAttribution{0.0};
152 double mProbabilityOfFutureImmunity{0.0};
154
157 double mDuration{0.0};
158
160 double mResourcesRequired{0.0};
161
166
167 mutable WsfRandomVariable mTimeDelayScan{WsfRandomVariable::cCONSTANT, 0.0, 0.0, WsfRandomVariable::cNON_NEGATIVE};
168 mutable WsfRandomVariable mTimeDelayDelivery{WsfRandomVariable::cCONSTANT, 0.0, 0.0, WsfRandomVariable::cNON_NEGATIVE};
170
174
175 random::ProbabilityFrequency mFrequencyOfScanDetection{random::cALWAYS};
176 random::ProbabilityFrequency mFrequencyOfScanAttribution{random::cALWAYS};
177 random::ProbabilityFrequency mFrequencyOfAttackSuccess{random::cALWAYS};
178 random::ProbabilityFrequency mFrequencyOfStatusReport{random::cALWAYS};
179 random::ProbabilityFrequency mFrequencyOfAttackDetection{random::cALWAYS};
180 random::ProbabilityFrequency mFrequencyOfAttackAttribution{random::cALWAYS};
181 random::ProbabilityFrequency mFrequencyOfFutureImmunity{random::cALWAYS};
183
189
190 mutable WsfRandomVariable mRandomVariableScanDetection{};
191 mutable WsfRandomVariable mRandomVariableScanAttribution{};
192 mutable WsfRandomVariable mRandomVariableAttackSuccess{};
193 mutable WsfRandomVariable mRandomVariableStatusReport{};
194 mutable WsfRandomVariable mRandomVariableAttackDetection{};
195 mutable WsfRandomVariable mRandomVariableAttackAttribution{};
196 mutable WsfRandomVariable mRandomVariableFutureImmunity{};
198
203 std::vector<std::string> mEffectTypes;
204};
205
206} // namespace cyber
207} // namespace wsf
208
209#endif
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
Definition WsfRandomVariable.hpp:33
@ cCONSTANT
The random values will always have a constant value.
Definition WsfRandomVariable.hpp:38
@ cNON_NEGATIVE
Value must be greater than or equal to zero.
Definition WsfRandomVariable.hpp:50
The main controller for a simulation.
Definition WsfSimulation.hpp:109
const std::vector< std::string > & GetEffects() const
Definition WsfCyberAttack.hpp:121
random::ProbabilityFrequency GetFrequencyOfAttackDetection() const
Definition WsfCyberAttack.hpp:87
WsfRandomVariable & GetRandomVariableScanDetection()
Definition WsfCyberAttack.hpp:94
WsfRandomVariable & GetRandomVariableStatusReport()
Definition WsfCyberAttack.hpp:97
WsfRandomVariable & GetRandomVariableAttackDetection()
Definition WsfCyberAttack.hpp:98
WsfRandomVariable & GetRandomVariableFutureImmunity()
Definition WsfCyberAttack.hpp:100
double GetProbabilityOfScanAttribution() const
Definition WsfCyberAttack.hpp:73
double GetDuration() const
Definition WsfCyberAttack.hpp:105
double GetLastTimeDelayScan() const
Definition WsfCyberAttack.hpp:116
double GetTimeDelayDelivery() const
Definition WsfCyberAttack.hpp:111
double GetProbabilityOfAttackAttribution() const
Definition WsfCyberAttack.hpp:77
WsfRandomVariable & GetRandomVariableScanAttribution()
Definition WsfCyberAttack.hpp:95
double GetProbabilityOfAttackSuccess() const
Definition WsfCyberAttack.hpp:74
double GetTimeDelayScan() const
Definition WsfCyberAttack.hpp:110
double GetProbabilityOfStatusReport() const
Definition WsfCyberAttack.hpp:75
double GetProbabilityOfScanDetection() const
Definition WsfCyberAttack.hpp:72
WsfRandomVariable & GetRandomVariableAttackSuccess()
Definition WsfCyberAttack.hpp:96
random::ProbabilityFrequency GetFrequencyOfFutureImmunity() const
Definition WsfCyberAttack.hpp:89
double GetLastTimeDelayDelivery() const
Definition WsfCyberAttack.hpp:117
random::ProbabilityFrequency GetFrequencyOfScanAttribution() const
Definition WsfCyberAttack.hpp:84
double GetResourceRequirements() const
Definition WsfCyberAttack.hpp:124
Attack * Clone() const override
Definition WsfCyberAttack.cpp:60
random::ProbabilityFrequency GetFrequencyOfScanDetection() const
Definition WsfCyberAttack.hpp:83
~Attack() override=default
Attack(const Attack &aSrc)=default
Attack & operator=(const Attack &aRhs)=default
random::ProbabilityFrequency GetFrequencyOfAttackSuccess() const
Definition WsfCyberAttack.hpp:85
random::ProbabilityFrequency GetFrequencyOfAttackAttribution() const
Definition WsfCyberAttack.hpp:88
virtual bool Initialize(double aSimTime, WsfSimulation &aSimulation)
Definition WsfCyberAttack.cpp:67
double GetProbabilityOfAttackDetection() const
Definition WsfCyberAttack.hpp:76
double GetProbabilityOfFutureImmunity() const
Definition WsfCyberAttack.hpp:78
WsfRandomVariable & GetRandomVariableAttackAttribution()
Definition WsfCyberAttack.hpp:99
bool ProcessInput(UtInput &aInput) override
Definition WsfCyberAttack.cpp:80
random::ProbabilityFrequency GetFrequencyOfStatusReport() const
Definition WsfCyberAttack.hpp:86
A class that represents the cyber engagements between two platforms.
Definition WsfCyberEngagement.hpp:37
Definition WsfCyberAttack.hpp:32
ProbabilityFrequency
Enumerated frequency of draws that are possible in Cyber.
Definition WsfCyberAttack.hpp:35
@ cINTERVAL_PER_TARGET
Definition WsfCyberAttack.hpp:40
@ cALWAYS
Definition WsfCyberAttack.hpp:36
@ cINTERVAL_PER_SIMULATION
Definition WsfCyberAttack.hpp:39
@ cOTHER
Definition WsfCyberAttack.hpp:41
@ cONCE_PER_SIMULATION
Definition WsfCyberAttack.hpp:37
@ cONCE_PER_TARGET
Definition WsfCyberAttack.hpp:38
Definition WsfCyberApplicationExtension.cpp:24
Function definitions for those who need run-time access to the version.
Definition WsfComm.cpp:32
Copyrights Multiple, All Rights Reserved