Giter Site home page Giter Site logo

tnocs / scenario-generator Goto Github PK

View Code? Open in Web Editor NEW
1.0 5.0 0.0 45.36 MB

Single page application to build scenarios using a morphological box

Home Page: https://tnocs.github.io/scenario-generator

Dockerfile 0.88% HTML 0.80% Vue 75.19% TypeScript 21.35% CSS 1.59% JavaScript 0.19%
threat-modeling scenario-creator scenario

scenario-generator's Introduction

V2018 Scenario Generator

Generate a scenario based on a morphological box.

screenshot

Live demo at https://tnocs.github.io/scenario-generator.

Prerequisites

Yarn classic or PNPM (npm i -g pnpm).

Install dependencies

Run yarn from the root folder of this project. The application uses Yarn workspaces to handle dependencies between packages.

Alternatively, run pnpm m i from the command line to install all dependencies.

Develop

Run yarn dev or npm run dev to start developing.

Build

Run yarn build or npm run build to build a release.

Creating a new configuration

The current version does not come with a full-blown configuration editor. Although you can edit object types, in case you want to limit or increase the number of categories, you need to edit the JSON file manually.

Step 1: Download the JSON file

Open the menu (top left, 3 horizontal lines) and select IMPORT/EXPORT. Export the current file.

Step 2: Renaming a category

Replace the capitalized names in the JSON below. The CATEGORY_NAME is displayed at the name of the tab. You can have multiple categories. Each category specifies the dimensions (columns or rows) that must be shown. You can choose from the following dimensions (which also includes the singular and plural form that is displayed in the GUI):

  • Access: access | access
  • Action: action | actions
  • Actor: actor | actors
  • AvailableBudget: budget | budget
  • BehaviourDuringPreparation: behaviour during preparation
  • Capabilities: capability | capabilities
  • CompartmentsPresent: compartments present
  • CriminalPhase: criminal phase
  • Duration: duration | durations
  • Equipment: equipment | equipment
  • ExistingInfra: existing infra | existing infrastructures
  • Impact: impact
  • Intent: bystander intent
  • Location: location | locations
  • Means: means | means
  • MeansWeapon: means/weapon | means/weapons
  • ModusOperandiDuringExecution: mode of operation | modus operandi
  • Motivation: motivation | motivations
  • OpenCompartments: open compartment | open compartments
  • PeopleDensity: person density | person densities
  • Persons: person | persons
  • PhysicalAngleOfAttackDuringExecution: physical angle of attack | physical angle of attacks
  • PI: protected interest (target) | protected interests
  • PrivacyAwareness: privacy awareness
  • RelationOwnerObjectAndOwnerSecuritySystem: relation owner object and owner security system
  • Responsibility: responsibility | responsibilities
  • SecurityAwareness: security awareness
  • TargetType: target type | target types
  • ThreatDirection: threat direction | threat directions
  • TypeOfEnvironment: environment type | environment types
  • TypeOfObject: type of object | type of objects
  • WeatherBehaviour: weather behaviour
  • WeatherType: weather condition | weather conditions
  • MeansWeapon: means/weapon | means/weapons
  • MissionContext: mission context | mission contexts
  • Adversary: adversary | adversaries
  • C2HeadQuarters: C2-HQ location | C2-HQ locations
  • Target: target | targets
  • DeliberateAction: deliberate action | deliberate actions
  • Means2: means of attack | means of attack
  • Access2: means of access | means of access
  • Means2access: means to access | means to acces
  • Means3: means for action | means for action
  • Means4: means for access | means for access
{
  "scenarios": {
    "current": {
      "inconsistencies": [],
      "narratives": [],
      "id": "ANY_ID",
      "type": "scenarios",
      "category": "SCENARIO",
      "name": "SCENARIO_NAME",
      "categories": {
        "CATEGORY_NAME": [
          "Actor",
          "Action",
          "Means",
          "Access",
          "TypeOfObject"
        ]
      }
    },
    "list": [
      {
        "inconsistencies": [],
        "narratives": [],
        "id": "ANY_ID",
        "type": "scenarios",
        "category": "SCENARIO",
        "name": "SCENARIO_NAME",
        "categories": {
          "CATEGORY_NAME": [
            "Actor",
            "Action",
            "Means",
            "Access",
            "TypeOfObject"
          ]
        }
      }
    ]
  },
  // ...
}

Step 3: Add the dimensions

For each dimension that you are using, you need to create an initial (optionally empty) placeholder. For example, if you include the dimension Actor, the JSON configuration needs to contain an Actor property:

  "Actor": { "list": [] },

Although you can pre-populate the list, as in the example below, it is much easier to edit these items via the GUI.

  "Actor": {
    "list": [
      { "name": "Activist", "type": "Actor", "id": "af0c21eb" }
    ]
  },

Step 4: Putting it all together

When you are done, save the JSON configuration and load it via the same menu (IMPORT|EXPORT) and you are ready to start. A very simple JSON file to get you going is:

{
  "scenarios": {
    "current": {
      "inconsistencies": [],
      "narratives": [],
      "id": "ts1",
      "type": "scenarios",
      "category": "SCENARIO",
      "name": "Threat scenario 1",
      "categories": {
        "Threat scenario": [
          "Actor",
          "PI",
          "Action",
          "MeansWeapon",
          "Access"
        ]
      }
    },
    "list": [
      {
        "inconsistencies": [],
        "narratives": [],
        "id": "ts1",
        "type": "scenarios",
        "category": "SCENARIO",
        "name": "Threat scenario 1",
        "categories": {
          "Threat scenario": [
            "Actor",
            "PI",
            "Action",
            "MeansWeapon",
            "Access"
          ]
        }
      }
    ]
  },
  "Actor": {
    "list": []
  },
  "PI": {
    "list": []
  },
  "Action": {
    "list": []
  },
  "MeansWeapon": {
    "list": []
  },
  "Access": {
    "list": []
  }
}

scenario-generator's People

Contributors

erikvullings avatar rinzeb avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

scenario-generator's Issues

Bucket list

Verbeterpunten / Wensen

  1. Algemeen
    1.1. …
  2. Dimensies
    2.1. De benaming van de kolommen editable maken
    2.2. De kolommen verwisselbaar maken (net zoals bij de opties)
    2.3. Opties onder de verschillende dimensies Aan/Uit kunnen zetten
    2.4. Dimensies kunnen toevoegen/verwijderen
    2.5. Als het vorige punt niet eenvoudig kan: voor een tweetal projecten zou ik onderstaande negen dimensies willen hebben
  3. Consistenties
    3.1. De consistentiematrix reageert erg traag
    3.2. In de consistentiematrix zou bij onwaarschijnlijk moeten worden aangegeven wat het waarschijnlijkheidspercentage is (momenteel 16,7%)
    3.3. In de consistentiematrix het waarschijnlijkheidspercentage kunnen invoeren
    3.4. Bij scrollen in de consistentiematrix de twee items aan de linkerkant (de kolommen Dimensies en Naam) vast zetten
    3.5. Onderzoeken of de consistentiematrix vanuit een Excel-bestand kan worden ingevoerd
    3.6. Bij veel opties, zoals in het geval van MinFin, verlies je gauw het overzicht in de consistentiematrix; zouden we dat kunnen opdelen zodat je niet meer dan twee dimensies combineert?
  4. Creëer scenario
    4.1. Indien bepaalde opties vast worden gezet vooraf controleren of die opties elkaar volgens de opgegeven consistenties elkaar niet uitsluiten; als dat wel het geval is, zou een mededeling gegenereerd moeten worden dat de opties elkaar uitsluiten (er is immers geen scenario te creëren met een dergelijke combinatie)
  5. Toon scenario
    5.1. In het geval dat coördinaten van de dimensie Locatie bekend zijn, dan een rode pin op de kaart plaatsen; en blauwe pinnen voor andere locaties
  6. Help (?)
    6.1. De helpfunctie is niet actueel
    6.2. De helpfunctie moet tweetalig zijn

image

When describing a scenario, trigger the user to describe the context

Nadere omschrijving locatie
Nadere omschrijving te beschermen persoon of gebouw
Nadere duiding geografische locatie
Wijze waarop actor informatie verzamelt
Tijdstip actie
Weersomstandigheden
Aantal personen betrokken bij actie
Naam organisatie
Nadere specifcatie actor, actie, middelen/wapens en wijze van toegang.

Verify inconsistencies

Can we specify that a drone attack can not (or is unlikely) to occur on a rainy day, i.e. combine threat and context in consistencies table.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.