├── .DS_Store ├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .github ├── ISSUE_TEMPLATE │ └── 1-documentation-update.yml ├── advanced-issue-labeler.yml ├── styles │ ├── config │ │ └── vocabularies │ │ │ └── crucible │ │ │ ├── accept.txt │ │ │ └── reject.txt │ └── crucible │ │ ├── AltText.yml │ │ ├── Click.yml │ │ ├── EOLSpace.yml │ │ ├── EmDash.yml │ │ ├── HeadingPunctuation.yml │ │ ├── OneWord.yml │ │ ├── OxfordComma.yml │ │ ├── Passive.yml │ │ ├── PreferredTerms.yml │ │ ├── Ranges.yml │ │ ├── SentenceLength.yml │ │ ├── SingleSpace.yml │ │ ├── SmartQuotes.yml │ │ ├── TitleCase.yml │ │ └── Units.yml └── workflows │ ├── label-issues.yml │ └── main.yml ├── .markdownlint-cli2.yaml ├── .vale.ini ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── contributing.md ├── docs ├── .DS_Store ├── alloy │ └── index.md ├── assets │ ├── .DS_Store │ └── img │ │ ├── .DS_Store │ │ ├── AddCITEActionTemplate.png │ │ ├── AddCITERoleTemplate.png │ │ ├── AddEvaluation-v4.png │ │ ├── AddEvaluation-v5.png │ │ ├── CITE-Dashboard-v3.png │ │ ├── CITE-Report.png │ │ ├── CITE-Scoresheet-v3.png │ │ ├── ConfigureEvaluations-v2.png │ │ ├── EvaluationsAdmin-v2.png │ │ ├── EvaluationsAdmin-v4.png │ │ ├── actionsAdmin-v2.png │ │ ├── addAction-v3.png │ │ ├── addArticle-v2.png │ │ ├── addArticleExercise.png │ │ ├── addCard-v2.png │ │ ├── addCollection-v2.png │ │ ├── addExhibit-v2.png │ │ ├── addGalleryUser-v2.png │ │ ├── addRole-v2.png │ │ ├── addRole-v3.png │ │ ├── addScoringModel-v3.png │ │ ├── addScoringModel-v4.png │ │ ├── addTeamType.png │ │ ├── addTeamsExhibit.png │ │ ├── addUser-v2.png │ │ ├── admin button.png │ │ ├── admin view.png │ │ ├── advanceMoveButton.png │ │ ├── articleTeams.png │ │ ├── articlesAdmin.png │ │ ├── blueprint-data.png │ │ ├── blueprint-info-1.png │ │ ├── blueprint-info-2.png │ │ ├── blueprint-inject.png │ │ ├── blueprint-logo.png │ │ ├── blueprint-moves.png │ │ ├── blueprint-org.png │ │ ├── blueprint-roles.png │ │ ├── blueprintActionsAdmin-v2.png │ │ ├── blueprintActionsAdmin.png │ │ ├── blueprintAddCardTemplate.png │ │ ├── blueprintAddCiteActions.png │ │ ├── blueprintAddCiteRoles.png │ │ ├── blueprintAddContributors-v2.png │ │ ├── blueprintAddDataField.png │ │ ├── blueprintAddGalleryCards.png │ │ ├── blueprintAddInjects-v3.png │ │ ├── blueprintAddInjectsAdvanced.png │ │ ├── blueprintAddInjectsGallery.png │ │ ├── blueprintAddInvitations.png │ │ ├── blueprintAddMove-v3.png │ │ ├── blueprintAddOrgTemplate.png │ │ ├── blueprintAddOrganization-v2.png │ │ ├── blueprintAddPlayerApp-v3.png │ │ ├── blueprintAddPlayerApp.png │ │ ├── blueprintAddTeam-v2.png │ │ ├── blueprintAddTeams-v3.png │ │ ├── blueprintAddTeams.png │ │ ├── blueprintAddUnit.png │ │ ├── blueprintAddUser-v3.png │ │ ├── blueprintBasicInfo-v3.png │ │ ├── blueprintBasicInfo-v5.png │ │ ├── blueprintCardsAdmin-v2.png │ │ ├── blueprintCardsAdmin.png │ │ ├── blueprintCiteActions-v3.png │ │ ├── blueprintCiteActions.png │ │ ├── blueprintCiteRoles-v3.png │ │ ├── blueprintCiteRoles.png │ │ ├── blueprintConfigureTeams-v2.png │ │ ├── blueprintConfigureUnits-v2.png │ │ ├── blueprintDashboard-v2.png │ │ ├── blueprintDashboard-v4.png │ │ ├── blueprintDataFields-v3.png │ │ ├── blueprintDataFields-v5.png │ │ ├── blueprintEndEvent-v2.png │ │ ├── blueprintEventInvitations.png │ │ ├── blueprintExerciseView-v2.png │ │ ├── blueprintExerciseView-v3.png │ │ ├── blueprintGalleryCards-v2.png │ │ ├── blueprintGalleryCards.png │ │ ├── blueprintInjects-v2.png │ │ ├── blueprintInjects-v3.png │ │ ├── blueprintInvitations-v2.png │ │ ├── blueprintLandingPage.png │ │ ├── blueprintMoves-v2.png │ │ ├── blueprintMoves-v4.png │ │ ├── blueprintNotes-v3.png │ │ ├── blueprintNotes.png │ │ ├── blueprintOrganizations-v2.png │ │ ├── blueprintOrganizations-v4.png │ │ ├── blueprintOrganizationsAdmin-v2.png │ │ ├── blueprintOrganizationsAdmin.png │ │ ├── blueprintPlayerApps-v3.png │ │ ├── blueprintPlayerApps.png │ │ ├── blueprintRoles.png │ │ ├── blueprintRolesAdmin-v2.png │ │ ├── blueprintRolesAdmin.png │ │ ├── blueprintTeams-v2.png │ │ ├── blueprintUnits-v2.png │ │ ├── blueprintUsersAdmin-v3.png │ │ ├── blueprintUsersAdmin-v4.png │ │ ├── cardTeams-v2.png │ │ ├── cardsAdmin.png │ │ ├── caster-VLANs.PNG │ │ ├── caster-modules.PNG │ │ ├── caster-users.PNG │ │ ├── caster-workspaces.PNG │ │ ├── cite-add-comment.png │ │ ├── cite-consider-action.png │ │ ├── cite-created-action.png │ │ ├── cite-delete-comment.png │ │ ├── cite-edit-comment.png │ │ ├── cite-logo.png │ │ ├── cite-reopen.png │ │ ├── citeLandingPage-v2.png │ │ ├── citeTeamRoles-v2.png │ │ ├── citeTeamType.png │ │ ├── citeTeams.png │ │ ├── collectionsAdmin-v2.png │ │ ├── collectionsAdmin.png │ │ ├── comment.png │ │ ├── configureExhibit-v2.png │ │ ├── configureScoringModel.png │ │ ├── createdArticle.png │ │ ├── crucible-app-player.svg │ │ ├── crucible-app-seer.svg │ │ ├── crucible-icon-alloy.svg │ │ ├── crucible-icon-c-alpha.svg │ │ ├── crucible-icon-caster.svg │ │ ├── crucible-icon-player.svg │ │ ├── crucible-icon-seer.svg │ │ ├── crucible-icon-steamfitter.svg │ │ ├── edit.png │ │ ├── exhibitObservers.png │ │ ├── exhibitTeams-v2.png │ │ ├── exhibitsAdmin-v2.png │ │ ├── exhibitsAdmin-v3.png │ │ ├── fortress-app.svg │ │ ├── gallery-archive-card-read.png │ │ ├── gallery-archive-card-unread.png │ │ ├── gallery-archive-card.png │ │ ├── gallery-archive.png │ │ ├── gallery-logo.png │ │ ├── gallery-wall.png │ │ ├── galleryArchive-v2.png │ │ ├── galleryLandingPage.png │ │ ├── galleryUsersAdmin.png │ │ ├── galleryWall-v2.png │ │ ├── gauntlet-app.svg │ │ ├── ghosts_new.png │ │ ├── home │ │ ├── crucible_apps.png │ │ ├── crucible_apps2.png │ │ ├── crucible_pentagon.png │ │ ├── crucible_tech.png │ │ ├── cruciblelogo.svg │ │ ├── github-white.svg │ │ ├── home-section-2.png │ │ └── home.png │ │ ├── icon-alloy.png │ │ ├── icon-caster.png │ │ ├── icon-copy.png │ │ ├── icon-edit.png │ │ ├── icon-more.png │ │ ├── icon-player.png │ │ ├── icon-user.png │ │ ├── joinEventOptions.png │ │ ├── moves-v3.png │ │ ├── new view add file.png │ │ ├── new view app template.png │ │ ├── new view apps.png │ │ ├── new view info.png │ │ ├── new view new team add user.png │ │ ├── new view new team.png │ │ ├── player-admin-view.png │ │ ├── player-new-application-template.png │ │ ├── player-new-map.png │ │ ├── player-new-view.png │ │ ├── player-user-view.png │ │ ├── pushIntegrations-v2.png │ │ ├── pushIntegrations.png │ │ ├── removeIntegrations-v2.png │ │ ├── removeIntegrations.png │ │ ├── rolesAdmin-v2.png │ │ ├── scenario templates.png │ │ ├── scenarios.png │ │ ├── scoringCategories-v3.png │ │ ├── scoringModelsAdmin-v2.png │ │ ├── scoringModelsAdmin-v3.png │ │ ├── scoringOptions.png │ │ ├── submissionsAdmin-v2.png │ │ ├── teamTypesAdmin.png │ │ ├── teams-v3.png │ │ ├── trash.png │ │ ├── usersAdmin-v2.png │ │ ├── viewAdmin.png │ │ ├── vm-app-1.png │ │ ├── vm-app-10.png │ │ ├── vm-app-2.png │ │ ├── vm-app-3.png │ │ ├── vm-app-4.png │ │ ├── vm-app-5.png │ │ ├── vm-app-6.png │ │ ├── vm-app-7.png │ │ ├── vm-app-8.png │ │ └── vm-app-9.png ├── blueprint │ └── index.md ├── caster │ └── index.md ├── cite │ └── index.md ├── gallery │ └── index.md ├── gameboard │ ├── admin-challenges.md │ ├── admin-completion-certificates.md │ ├── admin-feedback-form.md │ ├── admin-notifications.md │ ├── admin-players.md │ ├── admin-practice-area.md │ ├── admin-roles.md │ ├── admin-sponsors.md │ ├── admin-support.md │ ├── admin-users.md │ ├── admin.md │ ├── game-center.md │ ├── home-and-lobby.md │ ├── img │ │ ├── active-player.png │ │ ├── admin-challenge-details.png │ │ ├── admin-challenge-stats.png │ │ ├── admin-moria.png │ │ ├── admin-pending.png │ │ ├── breakdown.png │ │ ├── cert-temp-icons.png │ │ ├── challenge-feedback.png │ │ ├── context-reset.png │ │ ├── destroy-button.png │ │ ├── disable-sticky-challenge-panel.png │ │ ├── dropzone.png │ │ ├── enabled-sticky-challenge-panel.png │ │ ├── enroll-admin-enroll.png │ │ ├── feedback-temp-icons.png │ │ ├── game-info-icons.png │ │ ├── get-support.png │ │ ├── map-edit.png │ │ ├── moria.jpg │ │ ├── new-game-table-view2.png │ │ ├── observe-challenges-in-focus.png │ │ ├── observe-pin.png │ │ ├── observe-pop-out.png │ │ ├── player-mode-enabled.png │ │ ├── practice-search.png │ │ ├── practice-summary.png │ │ ├── profile-profile.png │ │ ├── reports-3dot-context.png │ │ ├── sample-enroll-report.png │ │ ├── score.png │ │ ├── team-player-window.png │ │ ├── timeline.png │ │ └── xxpractice-search.png │ ├── index.md │ ├── player-feedback-form.md │ ├── practice-area.md │ ├── profile.md │ ├── reports.md │ ├── sample-cert-template.html │ └── support.md ├── index.md ├── index.md.bak ├── index.md.htmlbak ├── install │ └── index.md ├── integrations │ └── index.md ├── player │ └── index.md ├── steamfitter │ └── index.md ├── stylesheets │ ├── extra.css │ └── extra.css.bak └── topomojo │ ├── about.md │ ├── admin-dashboard.md │ ├── admin-gamespaces.md │ ├── admin-log.md │ ├── admin-machines.md │ ├── admin-templates.md │ ├── admin-users.md │ ├── admin-workspaces.md │ ├── building-a-workspace.md │ ├── challenge.md │ ├── copy-paste.md │ ├── files.md │ ├── finding-a-space.md │ ├── getting-started.md │ ├── img │ ├── admin-gamespaces.png │ ├── admin-machine.png │ ├── andrew-carnegie.png │ ├── bridge-net.png │ ├── console-cog.png │ ├── console-copy.png │ ├── console-paste.png │ ├── end-invite-timer.png │ ├── guest-settings.png │ ├── iso-drag.png │ ├── iso-tag-gs.png │ ├── iso-tag-url.png │ ├── iso-tag-ws.png │ ├── markdown-editor.png │ ├── markdown-preview.png │ ├── other-icons.png │ ├── refresh-deploy.png │ ├── templates-edit.png │ ├── templates-filter.png │ ├── templates-save.png │ ├── transforms.png │ ├── vm-ware-tools.png │ └── wksp-iden.png │ ├── lab-document.md │ └── play.md ├── material └── overrides │ ├── home-es.html │ ├── home.html │ ├── main-styles.html │ ├── main.html │ └── work-with-us │ ├── leverage-vs-competition.html │ ├── subscription-plans.html │ └── team.html ├── mkdocs.yml └── requirements.txt /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/.DS_Store -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mcr.microsoft.com/devcontainers/python:0-3.11 2 | 3 | # Install image processing prerequisites 4 | RUN apt-get update 5 | RUN apt-get install -y libcairo2-dev libfreetype6-dev libffi-dev libjpeg-dev libpng-dev libz-dev 6 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the 2 | // README at: https://github.com/devcontainers/templates/tree/main/src/python 3 | { 4 | "name": "MkDocs", 5 | // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile 6 | //"image": "mcr.microsoft.com/devcontainers/python:0-3.11", 7 | "build": { 8 | // Path is relative to the devcontainer.json file. 9 | "dockerfile": "Dockerfile" 10 | }, 11 | 12 | // Features to add to the dev container. More info: https://containers.dev/features. 13 | "features": { 14 | "ghcr.io/devcontainers-extra/features/markdownlint-cli2:1": {} 15 | }, 16 | 17 | // Configure tool-specific properties. 18 | "customizations": { 19 | // Configure properties specific to VS Code. 20 | "vscode": { 21 | "settings": {}, 22 | "extensions": [ 23 | "yzhang.markdown-all-in-one", 24 | "DavidAnson.vscode-markdownlint", 25 | "bierner.markdown-emoji", 26 | "streetsidesoftware.code-spell-checker", 27 | "GitHub.vscode-pull-request-github", 28 | "shardulm94.trailing-spaces", 29 | "chrischinchilla.vale-vscode", 30 | "shd101wyy.markdown-preview-enhanced" 31 | ] 32 | } 33 | }, 34 | 35 | // Use 'forwardPorts' to make a list of ports inside the container available locally. 36 | // "forwardPorts": [9000], 37 | 38 | // Use 'portsAttributes' to set default properties for specific forwarded ports. 39 | // More info: https://containers.dev/implementors/json_reference/#port-attributes 40 | "portsAttributes": { 41 | "8000": { 42 | "label": "mkdocs", 43 | "onAutoForward": "notify" 44 | } 45 | }, 46 | 47 | // Use 'postCreateCommand' to run commands after the container is created. 48 | "postCreateCommand": "pip3 install -r requirements.txt" 49 | 50 | // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. 51 | // "remoteUser": "root" 52 | } 53 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/1-documentation-update.yml: -------------------------------------------------------------------------------- 1 | name: "Documentation Update" 2 | description: "Request an update to the documentation." 3 | body: 4 | - type: checkboxes 5 | id: application 6 | attributes: 7 | label: "Application" 8 | description: "Select the applications related to this documentation update." 9 | options: 10 | - label: "Alloy" 11 | - label: "Blueprint" 12 | - label: "Caster" 13 | - label: "CITE" 14 | - label: "Gallery" 15 | - label: "Gameboard" 16 | - label: "Player" 17 | - label: "Steamfitter" 18 | - label: "TopoMojo" 19 | - label: "General Docs Update - Not Application Specific" 20 | 21 | - type: checkboxes 22 | id: type 23 | attributes: 24 | label: "Type of Update" 25 | description: "Select the type of documentation update." 26 | options: 27 | - label: "New Feature" 28 | - label: "Correction" 29 | - label: "Enhancement" 30 | - label: "Other" 31 | 32 | - type: textarea 33 | id: description 34 | attributes: 35 | label: "Description" 36 | description: "Provide details about the documentation update." 37 | validations: 38 | required: true 39 | -------------------------------------------------------------------------------- /.github/advanced-issue-labeler.yml: -------------------------------------------------------------------------------- 1 | policy: 2 | - section: 3 | - id: [application] 4 | label: 5 | - name: "Alloy" 6 | keys: ["Alloy"] 7 | - name: "Blueprint" 8 | keys: ["Blueprint"] 9 | - name: "Caster" 10 | keys: ["Caster"] 11 | - name: "CITE" 12 | keys: ["CITE"] 13 | - name: "Gallery" 14 | keys: ["Gallery"] 15 | - name: "Gameboard" 16 | keys: ["Gameboard"] 17 | - name: "Player" 18 | keys: ["Player"] 19 | - name: "Steamfitter" 20 | keys: ["Steamfitter"] 21 | - name: "TopoMojo" 22 | keys: ["TopoMojo"] 23 | - id: [type] 24 | label: 25 | - name: "New Feature" 26 | keys: ["New Feature"] 27 | - name: "Correction" 28 | keys: ["Correction"] 29 | - name: "Enhancement" 30 | keys: ["Enhancement"] 31 | -------------------------------------------------------------------------------- /.github/styles/config/vocabularies/crucible/accept.txt: -------------------------------------------------------------------------------- 1 | Crucible 2 | TopoMojo 3 | Gameboard 4 | Alloy 5 | Blueprint 6 | Caster 7 | Steamfitter 8 | CITE 9 | Gallery 10 | (?i)cyber 11 | \wGitHub\w 12 | Mattermost 13 | osTicket 14 | (?i)cybersecurity 15 | OAuth 16 | GUID(?:'s|s)? 17 | (?i)URL 18 | [Gg]amespace(?:s)? 19 | ISO(?:s) 20 | MSEL(?:'s|s)? 21 | [Hh]otspot(?:s)? 22 | (?i)config 23 | SEI(?:'s) 24 | (?i)VM(?:'s|s)? 25 | Datetime 26 | (?i)vlan(?:s)? 27 | VMware 28 | vSphere 29 | vCenter 30 | ESXi 31 | guestinfo 32 | [Dd]atastore 33 | JSON 34 | YAML 35 | pgAdmin 36 | Keycloak 37 | StackStorm 38 | Rocket\.Chat 39 | Moodle 40 | Webmail 41 | Roundcube 42 | Proxmox 43 | (?i)intel 44 | (?i)varchar 45 | HTML 46 | (?i)scoresheet 47 | (?i)unenroll(?:s)? 48 | CSV 49 | (?i)rerank 50 | (?i)embeddable 51 | (?i)unselect(?:s)? 52 | (?i)fullscreen 53 | (?i)codespace(?:s)? 54 | (?i)dev 55 | VSCode 56 | (?i)misconfiguration(?:s)? 57 | (?i)repo 58 | (?i)timeframe 59 | xlsx 60 | (?i)unlink(?:ing)? 61 | (?i)hostname 62 | Ansible 63 | NPC(?:s)? 64 | Ollama 65 | PV[Cs]?(?:s)? 66 | PDF(?:s)? 67 | (?i)unpublish 68 | (?i)textbox(?:es)? 69 | ODX(?:'s|s)? 70 | (?i)workspace(?:'s|s)? 71 | (?i)namespace(?:s)? 72 | sublicense 73 | API(?:'s|s)? 74 | Traefik 75 | (?i)templatized 76 | (?i)unpublishing 77 | (?i)unsubmitted 78 | (?i)dev container 79 | (?i)hotspot(?:s)? 80 | (?i)gridlines(?:s)? 81 | LLaMA 82 | Mistral 83 | Suricata 84 | subnet(?:'s|s)? 85 | IP(?:'s|s)? 86 | [Cc]alc 87 | [Ss]rc 88 | Kibana 89 | Dionaea 90 | Wireshark 91 | [Cc]allout(?:s)? -------------------------------------------------------------------------------- /.github/styles/config/vocabularies/crucible/reject.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/.github/styles/config/vocabularies/crucible/reject.txt -------------------------------------------------------------------------------- /.github/styles/crucible/AltText.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Alt text for image is missing. Add descriptive text inside the brackets." 3 | level: error 4 | nonword: true 5 | scope: raw 6 | tokens: 7 | - '!\[\s*\]\([^)]+\)' 8 | -------------------------------------------------------------------------------- /.github/styles/crucible/Click.yml: -------------------------------------------------------------------------------- 1 | # Description: Use 'click' instead of 'click on' 2 | extends: substitution 3 | message: "Use '%s' instead of '%s'" 4 | level: error 5 | ignorecase: true 6 | swap: 7 | "click on": "click" 8 | -------------------------------------------------------------------------------- /.github/styles/crucible/EOLSpace.yml: -------------------------------------------------------------------------------- 1 | # Description: Checks that there is no useless space at the end of lines. 2 | extends: existence 3 | message: "Remove space characters from the end of the line." 4 | vocab: false 5 | level: error 6 | scope: raw 7 | raw: 8 | - ' +\n' 9 | -------------------------------------------------------------------------------- /.github/styles/crucible/EmDash.yml: -------------------------------------------------------------------------------- 1 | # Description: Enforces proper use of an em dash 2 | extends: existence 3 | message: "Don't put a space before or after a dash." 4 | nonword: true 5 | level: error 6 | action: 7 | name: edit 8 | params: 9 | - trim 10 | - " " 11 | tokens: 12 | - '\s[—–]\s' 13 | -------------------------------------------------------------------------------- /.github/styles/crucible/HeadingPunctuation.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't use punctuation at the end of a heading." 3 | nonword: true 4 | level: error 5 | scope: heading 6 | action: 7 | name: edit 8 | params: 9 | - trim_right 10 | - "." 11 | tokens: 12 | - '[a-z0-9][.]\s*$' 13 | -------------------------------------------------------------------------------- /.github/styles/crucible/OneWord.yml: -------------------------------------------------------------------------------- 1 | # Description: Enforces the use of one/two-word words 2 | extends: substitution 3 | message: "'%s' should be written as '%s'." 4 | level: error 5 | ignorecase: true 6 | swap: 7 | "data set": "dataset" 8 | "end point": "endpoint" 9 | "datapoint": "data point" 10 | "object oriented": "object-oriented" 11 | "webserver": "web server" 12 | -------------------------------------------------------------------------------- /.github/styles/crucible/OxfordComma.yml: -------------------------------------------------------------------------------- 1 | # Description: Enforces the use of Oxford Commas 2 | extends: existence 3 | message: "Use the Oxford comma in '%s'." 4 | scope: sentence 5 | level: error 6 | nonword: true 7 | tokens: 8 | - '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]' 9 | -------------------------------------------------------------------------------- /.github/styles/crucible/Passive.yml: -------------------------------------------------------------------------------- 1 | # Description: Detects use of passive voice 2 | extends: existence 3 | message: "Use active voice instead of passive voice ('%s')." 4 | ignorecase: true 5 | level: suggestion 6 | raw: 7 | - \b(am|are|were|being|is|been|was|be)\b\s* 8 | tokens: 9 | - '[\w]+ed' 10 | - awoken 11 | - beat 12 | - become 13 | - been 14 | - begun 15 | - bent 16 | - beset 17 | - bet 18 | - bid 19 | - bidden 20 | - bitten 21 | - bled 22 | - blown 23 | - born 24 | - bought 25 | - bound 26 | - bred 27 | - broadcast 28 | - broken 29 | - brought 30 | - built 31 | - burnt 32 | - burst 33 | - cast 34 | - caught 35 | - chosen 36 | - clung 37 | - come 38 | - cost 39 | - crept 40 | - cut 41 | - dealt 42 | - dived 43 | - done 44 | - drawn 45 | - dreamt 46 | - driven 47 | - drunk 48 | - dug 49 | - eaten 50 | - fallen 51 | - fed 52 | - felt 53 | - fit 54 | - fled 55 | - flown 56 | - flung 57 | - forbidden 58 | - foregone 59 | - forgiven 60 | - forgotten 61 | - forsaken 62 | - fought 63 | - found 64 | - frozen 65 | - given 66 | - gone 67 | - gotten 68 | - ground 69 | - grown 70 | - heard 71 | - held 72 | - hidden 73 | - hit 74 | - hung 75 | - hurt 76 | - kept 77 | - knelt 78 | - knit 79 | - known 80 | - laid 81 | - lain 82 | - leapt 83 | - learnt 84 | - led 85 | - left 86 | - lent 87 | - let 88 | - lighted 89 | - lost 90 | - made 91 | - meant 92 | - met 93 | - misspelt 94 | - mistaken 95 | - mown 96 | - overcome 97 | - overdone 98 | - overtaken 99 | - overthrown 100 | - paid 101 | - pled 102 | - proven 103 | - put 104 | - quit 105 | - read 106 | - rid 107 | - ridden 108 | - risen 109 | - run 110 | - rung 111 | - said 112 | - sat 113 | - sawn 114 | - seen 115 | - sent 116 | - set 117 | - sewn 118 | - shaken 119 | - shaven 120 | - shed 121 | - shod 122 | - shone 123 | - shorn 124 | - shot 125 | - shown 126 | - shrunk 127 | - shut 128 | - slain 129 | - slept 130 | - slid 131 | - slit 132 | - slung 133 | - smitten 134 | - sold 135 | - sought 136 | - sown 137 | - sped 138 | - spent 139 | - spilt 140 | - spit 141 | - split 142 | - spoken 143 | - spread 144 | - sprung 145 | - spun 146 | - stolen 147 | - stood 148 | - stridden 149 | - striven 150 | - struck 151 | - strung 152 | - stuck 153 | - stung 154 | - stunk 155 | - sung 156 | - sunk 157 | - swept 158 | - swollen 159 | - sworn 160 | - swum 161 | - swung 162 | - taken 163 | - taught 164 | - thought 165 | - thrived 166 | - thrown 167 | - thrust 168 | - told 169 | - torn 170 | - trodden 171 | - understood 172 | - upheld 173 | - upset 174 | - wed 175 | - wept 176 | - withheld 177 | - withstood 178 | - woken 179 | - won 180 | - worn 181 | - wound 182 | - woven 183 | - written 184 | - wrung 185 | -------------------------------------------------------------------------------- /.github/styles/crucible/PreferredTerms.yml: -------------------------------------------------------------------------------- 1 | # Description: Enforces the use of industry preferred terms. 2 | extends: substitution 3 | message: "Use '%s' instead of '%s'." 4 | ignorecase: true 5 | level: error 6 | action: 7 | name: replace 8 | swap: 9 | "black[ -]?list?": blocklist 10 | "black[ -]?list(?:ing)": blocklisting 11 | "white[ -]?list?": allowlist 12 | "white[ -]?list(?:ing)": allowlisting 13 | "slave": secondary 14 | -------------------------------------------------------------------------------- /.github/styles/crucible/Ranges.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Don't add words such as 'from' or 'between' to describe a range of numbers." 3 | nonword: true 4 | level: error 5 | tokens: 6 | - '(?:from|between)\s\d+\s?-\s?\d+' 7 | -------------------------------------------------------------------------------- /.github/styles/crucible/SentenceLength.yml: -------------------------------------------------------------------------------- 1 | # Description: Counts the number of words in a sentence. Flags if more than 30. 2 | extends: occurrence 3 | message: "Try to keep your sentence length to 30 words or fewer." 4 | level: suggestion 5 | scope: sentence 6 | ignorecase: false 7 | max: 30 8 | token: \b(\w+)\b 9 | -------------------------------------------------------------------------------- /.github/styles/crucible/SingleSpace.yml: -------------------------------------------------------------------------------- 1 | # Description: Checks for double spacing and prompts to remove if found. 2 | extends: existence 3 | message: "'%s' should have one space." 4 | level: error 5 | nonword: true 6 | action: 7 | name: remove 8 | tokens: 9 | - "[a-z][.?!] {2,}[A-Z]" 10 | - "[a-z][.?!][A-Z]" 11 | exceptions: 12 | - t.C # Exception put in place for Rocket.Chat 13 | -------------------------------------------------------------------------------- /.github/styles/crucible/SmartQuotes.yml: -------------------------------------------------------------------------------- 1 | # Description: Converts smart quotes to straight quotes 2 | extends: substitution 3 | message: Do not use smart quotation marks. Use %s rather than %s. 4 | level: error 5 | nonword: true 6 | scope: raw 7 | action: 8 | name: replace 9 | swap: 10 | ‘|’: "'" 11 | ‟|″|‶|“|”: '"' 12 | -------------------------------------------------------------------------------- /.github/styles/crucible/TitleCase.yml: -------------------------------------------------------------------------------- 1 | # Description: Titles should use Chicago-style title case 2 | extends: capitalization 3 | message: "'%s' should be in Chicago-style title case" 4 | level: error 5 | scope: heading 6 | match: $title 7 | style: Chicago 8 | exceptions: 9 | - "style=" 10 | -------------------------------------------------------------------------------- /.github/styles/crucible/Units.yml: -------------------------------------------------------------------------------- 1 | extends: existence 2 | message: "Put a space between the number and the unit in '%s'." 3 | nonword: true 4 | level: error 5 | tokens: 6 | - \b\d+(?:B|kB|MB|GB|TB) 7 | - \b\d+(?:min|mins) 8 | -------------------------------------------------------------------------------- /.github/workflows/label-issues.yml: -------------------------------------------------------------------------------- 1 | name: Auto-label Documentation Update Issues 2 | 3 | on: 4 | issues: 5 | types: [ opened ] 6 | 7 | permissions: 8 | contents: read 9 | 10 | jobs: 11 | label-issue: 12 | runs-on: ubuntu-latest 13 | 14 | permissions: 15 | issues: write 16 | 17 | steps: 18 | - uses: actions/checkout@v3 19 | 20 | - name: Parse issue form 21 | uses: stefanbuck/github-issue-parser@v3 22 | id: issue-parser 23 | with: 24 | template-path: .github/ISSUE_TEMPLATE/1-documentation-update.yml 25 | 26 | - name: Set labels based on application field 27 | uses: redhat-plumbers-in-action/advanced-issue-labeler@v3 28 | with: 29 | issue-form: ${{ steps.issue-parser.outputs.jsonString }} 30 | section: application 31 | block-list: | 32 | None 33 | General Docs Update - Not Application Specific 34 | token: ${{ secrets.GITHUB_TOKEN }} 35 | 36 | - name: Set labels based on update_type field 37 | uses: redhat-plumbers-in-action/advanced-issue-labeler@v3 38 | with: 39 | issue-form: ${{ steps.issue-parser.outputs.jsonString }} 40 | section: update_type 41 | block-list: | 42 | None 43 | Other 44 | token: ${{ secrets.GITHUB_TOKEN }} 45 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Verify, Build and Deploy 2 | 3 | # Run CI on a push to any branch and PRs against the main branch 4 | on: 5 | push: 6 | branches: ["**"] 7 | pull_request: 8 | branches: ["main"] 9 | jobs: 10 | # Use Vale via the official action to lint files 11 | lint: 12 | name: Lint markdown files using Vale and Markdownlint 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v4 16 | 17 | # Run Vale 18 | - uses: errata-ai/vale-action@v2 19 | with: 20 | fail_on_error: true 21 | reporter: github-check 22 | 23 | # Run markdownlint-cli2 24 | - uses: DavidAnson/markdownlint-cli2-action@v19 25 | with: 26 | globs: "**/*.md" 27 | # Build and deploy docs using material for mkdocs 28 | # This only runs when the branch is main 29 | deploy: 30 | runs-on: ubuntu-latest 31 | # Only run on a push to the main branch (not PRs) 32 | if: github.event_name == 'push' && github.ref == 'refs/heads/main' 33 | steps: 34 | - uses: actions/checkout@v4 35 | - uses: actions/setup-python@v5 36 | with: 37 | python-version: 3.x 38 | - run: pip install mkdocs-material 39 | - run: mkdocs gh-deploy --force --clean --verbose 40 | -------------------------------------------------------------------------------- /.markdownlint-cli2.yaml: -------------------------------------------------------------------------------- 1 | # This is the configuration file for Markdownlint - A markdown linting project. 2 | # You can find Markdownlint here: https://github.com/DavidAnson/markdownlint 3 | # This config file is assuming the use of markdownlint-cli2: 4 | 5 | ignores: 6 | - LICENSE.md 7 | 8 | config: 9 | # Do not allow headings to increase more than 1 level at a time 10 | MD001: true 11 | 12 | # Headings should use atx style (using # characters) 13 | MD003: 14 | style: atx 15 | 16 | # Use dashes as the prefix for unordered lists 17 | MD004: 18 | style: dash 19 | 20 | # List indentation should be consistent 21 | MD005: true 22 | 23 | # List item indentation requires 2 spaces 24 | MD007: true 25 | 26 | # Triggered by lines that end with unexpected white space and 27 | # too many unexpected line breaks 28 | MD009: true 29 | 30 | # Allow hard tab characters 31 | MD010: false 32 | 33 | # Catches links that are rendered incorrectly 34 | MD011: true 35 | 36 | # Triggered when there are too many blank lines in a row (more than 2) 37 | MD012: 38 | maximum: 2 39 | 40 | # Don't enforce max line length 41 | MD013: false 42 | 43 | # Code blocks showing commands should not include unnecessary $ characters 44 | # Commands not showing output should not have a leading $ 45 | MD014: true 46 | 47 | # Headings should have exactly 1 space after the # 48 | # This rule errors on less than 1 space detected. 49 | MD018: true 50 | 51 | # Headings should have exactly 1 space after the # 52 | # This rule errors on more than 1 space detected. 53 | MD019: true 54 | 55 | # Headings should be surrounded by exactly 1 blank line above/below 56 | MD022: 57 | lines_above: 1 58 | lines_below: 1 59 | 60 | # Headings should be at the beginning of a line (not indented) 61 | MD023: true 62 | 63 | # Allow multiple headings to have the same content 64 | MD024: false 65 | 66 | # Allows multiple H1 headings in a document 67 | MD025: false 68 | 69 | # Headings should not end with punctuation 70 | MD026: 71 | punctuation: .,;:!。,;:! 72 | 73 | # Block quotes should have no more than 1 space after the > 74 | MD027: true 75 | 76 | # Two block quotes are accidentally next to each other 77 | # or there's an unclear blank line in the middle of one 78 | MD028: true 79 | 80 | # Ordered lists should be formatted with proper item prefixes 81 | MD029: true 82 | 83 | # List item prefixes should be followed by 1 space 84 | MD030: 85 | ul_single: 1 86 | ol_single: 1 87 | ul_multi: 1 88 | ol_multi: 1 89 | 90 | # Code fences should be surrounded by 1 blank line above/below 91 | # An exception is made when a code fence appears in a list 92 | MD031: 93 | list_items: false 94 | 95 | # Lists should be surrounded by 1 blank line above/below 96 | MD032: true 97 | 98 | # Allows in-line HTML 99 | MD033: false 100 | 101 | # URLs should be rendered as links or placed inside a code span 102 | MD034: true 103 | 104 | # Horizontal rules should be formatted consistently 105 | MD035: true 106 | 107 | # Actual headings should be used instead of bold/italics 108 | MD036: true 109 | 110 | # Catches instances where bold/italics might be rendered incorrectly 111 | # This happens when there are spaces around the emphasis markers 112 | MD037: true 113 | 114 | # Code Spans should not have a space immediately before/after 115 | # the closing/opening markers 116 | MD038: true 117 | 118 | # Links should not have spaces immediately before/after 119 | # the closing/opening markers 120 | MD039: true 121 | 122 | # Code blocks should have a language specified 123 | MD040: true 124 | 125 | # The first line in a file should be a top level heading 126 | MD041: true 127 | 128 | # Links should not be empty 129 | MD042: true 130 | 131 | # Images should have alternate text to enhance readability 132 | MD045: true 133 | 134 | # Disable code block rules to support Material for MkDocs admonitions 135 | MD046: false 136 | 137 | # File should end with a new line character 138 | MD047: true 139 | 140 | # Code blocks should be defined by triple backtick characters 141 | MD048: 142 | style: backtick 143 | 144 | # Italics should be formatted with an underscore 145 | MD049: 146 | style: asterisk 147 | 148 | # Bold should be formatted with two (2) asterisks 149 | MD050: 150 | style: asterisk 151 | 152 | # Links to headers in this document should be valid 153 | MD051: 154 | ignore_case: false 155 | 156 | # Markdown tables should be formatted with leading/trailing | characters 157 | MD055: 158 | style: leading_and_trailing 159 | 160 | # Tables should have the same number of columns in every row 161 | MD056: true 162 | 163 | # Tables should be surrounded by exactly 1 blank line above/below 164 | MD058: true 165 | -------------------------------------------------------------------------------- /.vale.ini: -------------------------------------------------------------------------------- 1 | # Vale configuration file. 2 | 3 | 4 | StylesPath = .github/styles 5 | Vocab = crucible 6 | MinAlertLevel = suggestion 7 | 8 | [*.md] 9 | BasedOnStyles = crucible 10 | Vale.Spelling = error 11 | Vale.Terms = YES 12 | Vale.Repetition = YES 13 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "Beeautiful", 4 | "Dionaea", 5 | "Gameboard", 6 | "gamespace", 7 | "geoip", 8 | "hashlist", 9 | "hotspot", 10 | "hotspots", 11 | "Incrementer", 12 | "Mailoney", 13 | "markdownguide", 14 | "MSEL", 15 | "nmap", 16 | "sqlmap", 17 | "Suricata", 18 | "Tagcloud", 19 | "Topo", 20 | "tsec", 21 | "Unsubmitted", 22 | "Wireshark", 23 | "wwwroot" 24 | ] 25 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | # Crucible 2 | 3 | **Copyright 2021 Carnegie Mellon University.** 4 | 5 | **MIT (SEI)** 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8 | 9 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 10 | 11 | This material is based upon work funded and supported by the Department of Defense under Contract No. FA8702-15-D-0002 with Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research and development center. 12 | 13 | The view, opinions, and/or findings contained in this material are those of the author(s) and should not be construed as an official Government position, policy, or decision, unless designated by other documentation. 14 | References herein to any specific commercial product, process, or service by trade name, trade mark, manufacturer, or otherwise, does not necessarily constitute or imply its endorsement, recommendation, or favoring by Carnegie Mellon University or its Software Engineering Institute. 15 | 16 | NO WARRANTY. THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING INSTITUTE MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT. 17 | 18 | [DISTRIBUTION STATEMENT A] This material has been approved for public release and unlimited distribution. Please see Copyright notice for non-US Government use and distribution. 19 | 20 | Carnegie Mellon® and CERT® are registered in the U.S. Patent and Trademark Office by Carnegie Mellon University. 21 | 22 | DM20-0181 23 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | If you are developing within the [Crucible Framework](https://github.com/cmu-sei/crucible) or building an application to work alongside the Crucible Framework, please consider contributing documentation to this repository. The documentation contained within is written in Markdown. The static site generator used to display it is [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) and the documentation is hosted by [GitHub Pages](https://pages.github.com/). 4 | 5 | ## Using GitHub Dev Containers 6 | 7 | The easiest way to contribute to the docs is to use **GitHub Dev Containers** to setup a development environment accessible through your browser. In that environment, you can create a new branch, make changes, preview changes, and create pull requests (PR) to the main repository. 8 | 9 | 1. On the main page of this repo, click the green **Code** button, **Codespaces** tab, then **Create codespace on main** button. This opens the new codespace on a new tab in your browser. 10 | 2. Wait for the codespace to finish building. Once completed, you have an in-browser Visual Studio Code (VSCode) editor with a terminal open at the bottom. Watch the terminal for setup commands to finish running, and `pip3` will install several prerequisites. When finished, the terminal shows something like: 11 | 12 | ```bash 13 | [@your-username -> /workspaces/crucible (main) 14 | ``` 15 | 16 | 3. Using the terminal, create a new branch: 17 | 18 | ```bash 19 | git checkout -b [your-branch-name] 20 | ``` 21 | 22 | 4. Run `mkdocs serve` to build and serve the documentation site locally in your dev container. After a few seconds the command will complete, and you should see a message in the bottom-right corner that says: *Your application (mkdocs) running on port 8000 is available.* 23 | 5. Click the green **Open in Browser** button to see the Crucible Documentation site in a new tab. As long as you don't cancel the command in the terminal, the docs site automatically updates any time a change is made to `mkdocs.yml` or any file in the `docs/` directory. 24 | 25 | >If you keep the terminal open, you'll see the build commands running every time you make a change. If you need to run more terminal commands, use `ctrl+c` to cancel. When you need to preview changes, run `mkdocs serve` again. 26 | 27 | 6. Edit the documentation as necessary, previewing your changes as you go. 28 | 7. When ready to submit your documentation for review, stop the `mkdocs` command by pressing `Ctrl+C` in the terminal. 29 | 8. Stage, commit, and push the changes to your branch: 30 | 31 | ```bash 32 | git add * 33 | git commit -m "[description commit message]" 34 | git push --set-upstream origin [your branch name] 35 | ``` 36 | 37 | 9. Return to the main Crucible repo and switch to your branch. Click the green **Compare & pull request** button. Edit the PR title and comments (if needed) and click **Create Pull Request**. 38 | 39 | A Crucible maintainer will review your PR and accept or reject your changes. Thank you! 40 | 41 | ## Forking the Repository 42 | 43 | Forking the repository creates a copy of the repository under your account, allowing you to experiment without affecting the main project. This also copies all GitHub Actions workflows, including *build-mkdocs*, enabling you to build your own GitHub Pages site. 44 | 45 | 1. In the top-right corner of the repository page, click **Fork**. GitHub will create a copy of the repository under your account. 46 | 2. GitHub disables workflows by default for forks, so you need to enable them manually. Go to the **Actions** tab and click **I understand my workflows, go ahead and enable them**. 47 | 3. Next, grant GitHub Actions read/write permissions. Go to **Settings**, **Actions**, **General**. Scroll down to **Workflow permissions**, select **Read and Write Permissions**, and click **Save**. 48 | 4. To add new documentation, place your content in the `docs` directory. For a new application, create a subdirectory under `docs` specifically for the new app. Store any media files in the `assets` directory and ensure you use relative links when referencing them in your Markdown files. 49 | 5. If required, update the navigation by modifying the `mkdocs.yml` file to add new sections under the `nav:`header. Make sure that any sub-sections are placed in their respective subdirectories to keep the docs organized. 50 | 6. Commit and push to the `main` branch of your fork. This triggers the *build-mkdocs* workflow, which creates the `gh-pages` branch. 51 | 7. To verify workflow success, click the **Actions** tab to confirm that *build-mkdocs* has completed. If errors occur, verify that GitHub Actions permissions are correct (see Step 3 above) and review the workflow logs for errors, particularly in the `mkdocs.yml` file. If you're unable to resolve errors, please submit an issue to the Crucible project for help. 52 | 8. Finally, you'll configure GitHub Pages. Go to **Settings**, **Pages**. Under **Build and Deployment**, select **Deploy from branch**, then choose `gh-pages` as the branch and `root` as the directory. Click **Save**. From now on, GitHub Pages will build a static site whenever you push to the `main` branch. Your site will be available at: `https://[github-username].github.io/crucible`. If updates don't appear, check the *build-mkdocs* workflow for errors. 53 | 54 | When you are satisfied with your documentation and want to contribute back to the main Crucible project, open a Pull Request. Your contribution will be reviewed by a Crucible maintainer. Thank you! 55 | -------------------------------------------------------------------------------- /docs/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/.DS_Store -------------------------------------------------------------------------------- /docs/assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/.DS_Store -------------------------------------------------------------------------------- /docs/assets/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/.DS_Store -------------------------------------------------------------------------------- /docs/assets/img/AddCITEActionTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/AddCITEActionTemplate.png -------------------------------------------------------------------------------- /docs/assets/img/AddCITERoleTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/AddCITERoleTemplate.png -------------------------------------------------------------------------------- /docs/assets/img/AddEvaluation-v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/AddEvaluation-v4.png -------------------------------------------------------------------------------- /docs/assets/img/AddEvaluation-v5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/AddEvaluation-v5.png -------------------------------------------------------------------------------- /docs/assets/img/CITE-Dashboard-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/CITE-Dashboard-v3.png -------------------------------------------------------------------------------- /docs/assets/img/CITE-Report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/CITE-Report.png -------------------------------------------------------------------------------- /docs/assets/img/CITE-Scoresheet-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/CITE-Scoresheet-v3.png -------------------------------------------------------------------------------- /docs/assets/img/ConfigureEvaluations-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/ConfigureEvaluations-v2.png -------------------------------------------------------------------------------- /docs/assets/img/EvaluationsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/EvaluationsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/EvaluationsAdmin-v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/EvaluationsAdmin-v4.png -------------------------------------------------------------------------------- /docs/assets/img/actionsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/actionsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/addAction-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addAction-v3.png -------------------------------------------------------------------------------- /docs/assets/img/addArticle-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addArticle-v2.png -------------------------------------------------------------------------------- /docs/assets/img/addArticleExercise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addArticleExercise.png -------------------------------------------------------------------------------- /docs/assets/img/addCard-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addCard-v2.png -------------------------------------------------------------------------------- /docs/assets/img/addCollection-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addCollection-v2.png -------------------------------------------------------------------------------- /docs/assets/img/addExhibit-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addExhibit-v2.png -------------------------------------------------------------------------------- /docs/assets/img/addGalleryUser-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addGalleryUser-v2.png -------------------------------------------------------------------------------- /docs/assets/img/addRole-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addRole-v2.png -------------------------------------------------------------------------------- /docs/assets/img/addRole-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addRole-v3.png -------------------------------------------------------------------------------- /docs/assets/img/addScoringModel-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addScoringModel-v3.png -------------------------------------------------------------------------------- /docs/assets/img/addScoringModel-v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addScoringModel-v4.png -------------------------------------------------------------------------------- /docs/assets/img/addTeamType.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addTeamType.png -------------------------------------------------------------------------------- /docs/assets/img/addTeamsExhibit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addTeamsExhibit.png -------------------------------------------------------------------------------- /docs/assets/img/addUser-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/addUser-v2.png -------------------------------------------------------------------------------- /docs/assets/img/admin button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/admin button.png -------------------------------------------------------------------------------- /docs/assets/img/admin view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/admin view.png -------------------------------------------------------------------------------- /docs/assets/img/advanceMoveButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/advanceMoveButton.png -------------------------------------------------------------------------------- /docs/assets/img/articleTeams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/articleTeams.png -------------------------------------------------------------------------------- /docs/assets/img/articlesAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/articlesAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/blueprint-data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprint-data.png -------------------------------------------------------------------------------- /docs/assets/img/blueprint-info-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprint-info-1.png -------------------------------------------------------------------------------- /docs/assets/img/blueprint-info-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprint-info-2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprint-inject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprint-inject.png -------------------------------------------------------------------------------- /docs/assets/img/blueprint-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprint-logo.png -------------------------------------------------------------------------------- /docs/assets/img/blueprint-moves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprint-moves.png -------------------------------------------------------------------------------- /docs/assets/img/blueprint-org.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprint-org.png -------------------------------------------------------------------------------- /docs/assets/img/blueprint-roles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprint-roles.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintActionsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintActionsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintActionsAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintActionsAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddCardTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddCardTemplate.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddCiteActions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddCiteActions.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddCiteRoles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddCiteRoles.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddContributors-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddContributors-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddDataField.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddDataField.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddGalleryCards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddGalleryCards.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddInjects-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddInjects-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddInjectsAdvanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddInjectsAdvanced.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddInjectsGallery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddInjectsGallery.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddInvitations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddInvitations.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddMove-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddMove-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddOrgTemplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddOrgTemplate.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddOrganization-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddOrganization-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddPlayerApp-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddPlayerApp-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddPlayerApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddPlayerApp.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddTeam-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddTeam-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddTeams-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddTeams-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddTeams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddTeams.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddUnit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddUnit.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintAddUser-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintAddUser-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintBasicInfo-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintBasicInfo-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintBasicInfo-v5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintBasicInfo-v5.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintCardsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintCardsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintCardsAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintCardsAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintCiteActions-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintCiteActions-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintCiteActions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintCiteActions.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintCiteRoles-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintCiteRoles-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintCiteRoles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintCiteRoles.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintConfigureTeams-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintConfigureTeams-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintConfigureUnits-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintConfigureUnits-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintDashboard-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintDashboard-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintDashboard-v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintDashboard-v4.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintDataFields-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintDataFields-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintDataFields-v5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintDataFields-v5.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintEndEvent-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintEndEvent-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintEventInvitations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintEventInvitations.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintExerciseView-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintExerciseView-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintExerciseView-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintExerciseView-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintGalleryCards-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintGalleryCards-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintGalleryCards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintGalleryCards.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintInjects-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintInjects-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintInjects-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintInjects-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintInvitations-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintInvitations-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintLandingPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintLandingPage.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintMoves-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintMoves-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintMoves-v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintMoves-v4.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintNotes-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintNotes-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintNotes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintNotes.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintOrganizations-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintOrganizations-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintOrganizations-v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintOrganizations-v4.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintOrganizationsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintOrganizationsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintOrganizationsAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintOrganizationsAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintPlayerApps-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintPlayerApps-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintPlayerApps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintPlayerApps.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintRoles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintRoles.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintRolesAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintRolesAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintRolesAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintRolesAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintTeams-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintTeams-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintUnits-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintUnits-v2.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintUsersAdmin-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintUsersAdmin-v3.png -------------------------------------------------------------------------------- /docs/assets/img/blueprintUsersAdmin-v4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/blueprintUsersAdmin-v4.png -------------------------------------------------------------------------------- /docs/assets/img/cardTeams-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cardTeams-v2.png -------------------------------------------------------------------------------- /docs/assets/img/cardsAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cardsAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/caster-VLANs.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/caster-VLANs.PNG -------------------------------------------------------------------------------- /docs/assets/img/caster-modules.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/caster-modules.PNG -------------------------------------------------------------------------------- /docs/assets/img/caster-users.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/caster-users.PNG -------------------------------------------------------------------------------- /docs/assets/img/caster-workspaces.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/caster-workspaces.PNG -------------------------------------------------------------------------------- /docs/assets/img/cite-add-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cite-add-comment.png -------------------------------------------------------------------------------- /docs/assets/img/cite-consider-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cite-consider-action.png -------------------------------------------------------------------------------- /docs/assets/img/cite-created-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cite-created-action.png -------------------------------------------------------------------------------- /docs/assets/img/cite-delete-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cite-delete-comment.png -------------------------------------------------------------------------------- /docs/assets/img/cite-edit-comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cite-edit-comment.png -------------------------------------------------------------------------------- /docs/assets/img/cite-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cite-logo.png -------------------------------------------------------------------------------- /docs/assets/img/cite-reopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/cite-reopen.png -------------------------------------------------------------------------------- /docs/assets/img/citeLandingPage-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/citeLandingPage-v2.png -------------------------------------------------------------------------------- /docs/assets/img/citeTeamRoles-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/citeTeamRoles-v2.png -------------------------------------------------------------------------------- /docs/assets/img/citeTeamType.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/citeTeamType.png -------------------------------------------------------------------------------- /docs/assets/img/citeTeams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/citeTeams.png -------------------------------------------------------------------------------- /docs/assets/img/collectionsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/collectionsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/collectionsAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/collectionsAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/comment.png -------------------------------------------------------------------------------- /docs/assets/img/configureExhibit-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/configureExhibit-v2.png -------------------------------------------------------------------------------- /docs/assets/img/configureScoringModel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/configureScoringModel.png -------------------------------------------------------------------------------- /docs/assets/img/createdArticle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/createdArticle.png -------------------------------------------------------------------------------- /docs/assets/img/crucible-app-player.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/crucible-app-seer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/crucible-icon-alloy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/crucible-icon-c-alpha.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/crucible-icon-caster.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/crucible-icon-player.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/crucible-icon-seer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/crucible-icon-steamfitter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/edit.png -------------------------------------------------------------------------------- /docs/assets/img/exhibitObservers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/exhibitObservers.png -------------------------------------------------------------------------------- /docs/assets/img/exhibitTeams-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/exhibitTeams-v2.png -------------------------------------------------------------------------------- /docs/assets/img/exhibitsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/exhibitsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/exhibitsAdmin-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/exhibitsAdmin-v3.png -------------------------------------------------------------------------------- /docs/assets/img/fortress-app.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/gallery-archive-card-read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/gallery-archive-card-read.png -------------------------------------------------------------------------------- /docs/assets/img/gallery-archive-card-unread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/gallery-archive-card-unread.png -------------------------------------------------------------------------------- /docs/assets/img/gallery-archive-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/gallery-archive-card.png -------------------------------------------------------------------------------- /docs/assets/img/gallery-archive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/gallery-archive.png -------------------------------------------------------------------------------- /docs/assets/img/gallery-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/gallery-logo.png -------------------------------------------------------------------------------- /docs/assets/img/gallery-wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/gallery-wall.png -------------------------------------------------------------------------------- /docs/assets/img/galleryArchive-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/galleryArchive-v2.png -------------------------------------------------------------------------------- /docs/assets/img/galleryLandingPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/galleryLandingPage.png -------------------------------------------------------------------------------- /docs/assets/img/galleryUsersAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/galleryUsersAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/galleryWall-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/galleryWall-v2.png -------------------------------------------------------------------------------- /docs/assets/img/gauntlet-app.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/ghosts_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/ghosts_new.png -------------------------------------------------------------------------------- /docs/assets/img/home/crucible_apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/home/crucible_apps.png -------------------------------------------------------------------------------- /docs/assets/img/home/crucible_apps2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/home/crucible_apps2.png -------------------------------------------------------------------------------- /docs/assets/img/home/crucible_pentagon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/home/crucible_pentagon.png -------------------------------------------------------------------------------- /docs/assets/img/home/crucible_tech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/home/crucible_tech.png -------------------------------------------------------------------------------- /docs/assets/img/home/cruciblelogo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/assets/img/home/github-white.svg: -------------------------------------------------------------------------------- 1 | 2 | social-icon-github-w 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/assets/img/home/home-section-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/home/home-section-2.png -------------------------------------------------------------------------------- /docs/assets/img/home/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/home/home.png -------------------------------------------------------------------------------- /docs/assets/img/icon-alloy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/icon-alloy.png -------------------------------------------------------------------------------- /docs/assets/img/icon-caster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/icon-caster.png -------------------------------------------------------------------------------- /docs/assets/img/icon-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/icon-copy.png -------------------------------------------------------------------------------- /docs/assets/img/icon-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/icon-edit.png -------------------------------------------------------------------------------- /docs/assets/img/icon-more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/icon-more.png -------------------------------------------------------------------------------- /docs/assets/img/icon-player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/icon-player.png -------------------------------------------------------------------------------- /docs/assets/img/icon-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/icon-user.png -------------------------------------------------------------------------------- /docs/assets/img/joinEventOptions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/joinEventOptions.png -------------------------------------------------------------------------------- /docs/assets/img/moves-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/moves-v3.png -------------------------------------------------------------------------------- /docs/assets/img/new view add file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/new view add file.png -------------------------------------------------------------------------------- /docs/assets/img/new view app template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/new view app template.png -------------------------------------------------------------------------------- /docs/assets/img/new view apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/new view apps.png -------------------------------------------------------------------------------- /docs/assets/img/new view info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/new view info.png -------------------------------------------------------------------------------- /docs/assets/img/new view new team add user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/new view new team add user.png -------------------------------------------------------------------------------- /docs/assets/img/new view new team.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/new view new team.png -------------------------------------------------------------------------------- /docs/assets/img/player-admin-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/player-admin-view.png -------------------------------------------------------------------------------- /docs/assets/img/player-new-application-template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/player-new-application-template.png -------------------------------------------------------------------------------- /docs/assets/img/player-new-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/player-new-map.png -------------------------------------------------------------------------------- /docs/assets/img/player-new-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/player-new-view.png -------------------------------------------------------------------------------- /docs/assets/img/player-user-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/player-user-view.png -------------------------------------------------------------------------------- /docs/assets/img/pushIntegrations-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/pushIntegrations-v2.png -------------------------------------------------------------------------------- /docs/assets/img/pushIntegrations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/pushIntegrations.png -------------------------------------------------------------------------------- /docs/assets/img/removeIntegrations-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/removeIntegrations-v2.png -------------------------------------------------------------------------------- /docs/assets/img/removeIntegrations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/removeIntegrations.png -------------------------------------------------------------------------------- /docs/assets/img/rolesAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/rolesAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/scenario templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/scenario templates.png -------------------------------------------------------------------------------- /docs/assets/img/scenarios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/scenarios.png -------------------------------------------------------------------------------- /docs/assets/img/scoringCategories-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/scoringCategories-v3.png -------------------------------------------------------------------------------- /docs/assets/img/scoringModelsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/scoringModelsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/scoringModelsAdmin-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/scoringModelsAdmin-v3.png -------------------------------------------------------------------------------- /docs/assets/img/scoringOptions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/scoringOptions.png -------------------------------------------------------------------------------- /docs/assets/img/submissionsAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/submissionsAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/teamTypesAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/teamTypesAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/teams-v3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/teams-v3.png -------------------------------------------------------------------------------- /docs/assets/img/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/trash.png -------------------------------------------------------------------------------- /docs/assets/img/usersAdmin-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/usersAdmin-v2.png -------------------------------------------------------------------------------- /docs/assets/img/viewAdmin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/viewAdmin.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-1.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-10.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-2.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-3.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-4.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-5.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-6.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-7.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-8.png -------------------------------------------------------------------------------- /docs/assets/img/vm-app-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/assets/img/vm-app-9.png -------------------------------------------------------------------------------- /docs/gameboard/admin-challenges.md: -------------------------------------------------------------------------------- 1 | # Challenges 2 | 3 | The Challenges tab is largely for users who have elevated permissions in Gameboard (e.g., Admin, Director, Support) troubleshoot problems with challenges. 4 | 5 | After logging into the Gameboard app with the appropriate role, click **Admin**, then **Challenges**. 6 | 7 | **Search:** Search for specific teams, players, challenge ids, and tags. 8 | 9 | **Current:** Active challenges have a green dot next them. Active indicates a challenge has not yet been solved correctly, maximum submissions have not been attempted, or a session has not expired. A challenge is active until one of those three criteria are met; then, the challenge is over and inactive. When a challenge is inactive, it still counts towards total score, rank, cumulative time. 10 | 11 | A challenge is current and not archived because it has not been reset when the **Reset Session** button is clicked. 12 | 13 | **Archived:** When a participant clicks **Reset Session**, before the session is deleted, historical information from participant and challenge event is archived. This archived session information is available here for the game admin to access. 14 | 15 | **Submissions:** Displays a date and time stamp and the answers submitted by the player and stored in Gameboard. 16 | 17 | **Game Engine Audit:** Clicking **Audit from game engine?** queries the game engine (if you're using the Crucible stack, this is TopoMojo) to provide its list of submitted answers. The purpose of game engine audit is to compare Gameboard's record of submissions to the game engine's record of submissions. 18 | 19 | **Regrade:** Clicking **Regrade** has the Gameboard check all submissions by a player against expected answers again. Regrade is used when a challenge has two possible answers or players submit in a format that is correct, but that was unexpected by game or challenge developers. When this happens, the TopoMojo workspace is updated manually to include the new correct answers. Then, the challenge is regraded and the player's score updated if a previously entered incorrect answer is now correct. 20 | -------------------------------------------------------------------------------- /docs/gameboard/admin-completion-certificates.md: -------------------------------------------------------------------------------- 1 | # Configuring Certificate Templates 2 | 3 | Game participants can view, share, and print certificates of completion as proof of participation in a game. To do so, certificate templates must be configured in a game's Metadata settings. Game organizers (i.e., users who have been granted a role with the appropriate permissions) configure certificate templates to customize the appearance of these completion certificates. 4 | 5 | This topic assumes you have been granted a role with the appropriate permissions in Gameboard, you are logged in, and you have a game created. 6 | 7 | 1. In the top navigation, select **Admin**. 8 | 2. Select an existing game, then Select the **Settings cog**. Under Metadata, see the Completion Certificates section. Here you can select an existing certificate template and *add*, *preview*, *edit*, *copy*, and *delete* completion certificate templates. 9 | 10 | ![certificate template icons](img/cert-temp-icons.png) 11 | 12 | Certificates are "templatized", allowing a single certificate template to be used across multiple games. Competitive certificate templates and practice certificate templates share a unified set of fields that can be incorporated to display relevant information on the completion certificate generated by the participant. 13 | 14 | The keywords, which should be enclosed in `{{double braces}}`, are as follows: `date`, `division`, `challengeDescription`, `challengeName`, `gameName`, `playerName`, `rank`, `score`, `season`, `series`, `teamName`, `totalPlayerCount`, `totalTeamCount`, `time`, `track`, and `userName`. 15 | 16 | ## Selecting a Certificate Template 17 | 18 | Players can view a list of past certificates from their Gameboard Profile page too. In Gameboard, click **Profile**. Then click **Certificates**. A table view of all game certificates is displayed. You can view and print the certificate as a .PDF from the table view. 19 | 20 | 1. In the game's Metadata settings, under Completion Certificates, choose an existing certificate template from the dropdowns. 21 | 22 | ## Adding a Certificate Template 23 | 24 | 1. In the game's Metadata settings, under Completion Certificates, select the **+** icon. 25 | 2. In the **Create Certificate Template** window, enter a **Name** for your certificate template. 26 | 3. In the **Template** box, specify the certificate template in HTML. You should not include the entire HTML document (i.e., don't add ``, ``, ``, or `` tags). Just provide the essential HTML content, such as `
` and `

` elements. 27 | 28 | - Gameboard automatically inserts your content into a pre-existing, correctly formatted HTML document for display. 29 | - You can use the **Copy from:** feature to paste an example certificate HTML configuration into the **Template** field. In the **Copy from:** dropdown, select a template to copy from and then click **Copy**. 30 | - You can include ` 16 | -------------------------------------------------------------------------------- /docs/gameboard/support.md: -------------------------------------------------------------------------------- 1 | # Getting In-Game Support 2 | 3 | The Gameboard platform comes with a built-in customer support interface so that competition hosts and administrators can assist players and teams. Gameboard is a "one-stop shop" and no outside apps or systems are required to track and measure issues reported by participants. Users who have been granted a role with the appropriate permissions can use the support feature to manage tickets. 4 | 5 | ## Support from the Participant Point-of-View 6 | 7 | ### Creating New Support Ticket 8 | 9 | You can create tickets from two places: the Support screen and the challenge screen. If you are coming from the challenge screen, then the Support Code, player id, and challenge id are automatically generated; if you are not, then this information can be added later. 10 | 11 | From the Support screen: 12 | 13 | 1. In the top navigation, click **Support**. 14 | 2. Click **Create Ticket**. 15 | 3. In the **Summary**, enter a brief statement of the problem. 16 | 4. In the **Description**, enter a more detailed statement of your problem. Include error messages and other pertinent details. 17 | 5. Under **Attachments**, attach files (especially screen shots) here. 18 | 6. Click **Submit**. 19 | 20 | After submitting the ticket, you can always **add a comment** and attach another file. Updates to a ticket are tracked under Activity. View a status change or an assignment change here too. 21 | 22 | From a challenge screen: 23 | 24 | These instructions assume you have enrolled in a game, started a session, and started a challenge. 25 | 26 | 1. In the *started* challenge, scroll to the bottom of the challenge instructions. 27 | 2. Click **Create Ticket**. Notice that the challenge is automatically populated in the **Challenge** field. 28 | 3. In the **Summary**, enter a brief statement of the problem. 29 | 4. In the **Description**, enter a more detailed statement of your problem. Include error messages and other pertinent details. 30 | 5. Under **Attachments**, attach files (especially screen shots) here. 31 | 6. Click **Submit**. Because you are coming from the challenge screen, a link to the game lobby is generated and Support Code is provided. 32 | 33 | ### Finding an Existing Ticket 34 | 35 | From the Support page, use the dropdowns and the **Search** field to locate specific tickets from *all* of the tickets you have submitted. 36 | 37 | Filter tickets by status: 38 | 39 | - Any Status 40 | - Open 41 | - In Progress 42 | - Not Closed (*Open* plus *In Progress*) 43 | - Closed 44 | 45 | Search by entering terms. Search covers ticket description, label, user, challenge title, and player. 46 | 47 | ## Support from the Support Role Point-of-View 48 | 49 | This section is meant for "support staff" - the people who are tasked with resolving customer service and technical support issues during a game. When we say "support staff" in the documentation, we mean those users given the `Support` role or a role that permits them to edit support settings, manage tickets, and view tickets such as `Admin` and `Director`. 50 | 51 | ### Creating New support Ticket (Support Staff) 52 | 53 | The procedure for support staff to create a tickets is very similar to procedure for participants to create a ticket (see above). However, after a ticket has been created users with the `Support` role have more options to manage the tickets. 54 | 55 | ### Managing Support Tickets 56 | 57 | From the Ticket management side-bar: 58 | 59 | **Assigned to:** Assign the ticket to another support person. The dropdown is filtered by users who have been granted the support role. 60 | 61 | **Status:** Move the ticket through the support workflow. Tickets are `Open`, `In progress`, or `Closed`. 62 | 63 | - **Open:** Indicates that ticket has been reported, but not yet acted upon by support staff. The ticket is "waiting" on an action. 64 | - **In progress:** The ticket is actively being worked on. 65 | - **Closed:** - The ticket has been resolved and no longer requires action from support or participants. 66 | 67 | **Labels:** Labels are tags or keywords used to categorize the ticket. A label is like a hashtag (#) used on Twitter, Facebook, and other social apps. Labels help when searching for an issue; labels also help when reporting on metrics from your competition. 68 | 69 | **Challenge:** When a ticket is associated with a challenge - meaning that the ticket was created from within the specific challenge - the challenge support code is shown here. If the challenge field is blank, you can view the challenge(s) the player is a part of in the Challenge dropdown. Attach the correct challenge from here. 70 | 71 | **Player:** When a ticket is associated with a challenge it is also linked to a team or player. If the challenge is a team challenge, then all of the members of the team can view the ticket. 72 | 73 | Add a **comment** to communicate with the participant. 74 | 75 | ### Copy to Markdown 76 | 77 | The **Copy to markdown** icon allows you to copy support ticket content to Markdown. You can paste it anywhere, including into a messaging app or email, with nicely formatted text, avoiding the need for links or logins to the Gameboard. 78 | 79 | ## Support-Related Reporting 80 | 81 | Support-related reporting provides you with a way to manage workloads and track trends during your competition. In the main menu, select **Reports**. Then click **Support** in the Reports screen. 82 | 83 | See [Using Reports](reports.md) for help understanding the Support reports. 84 | -------------------------------------------------------------------------------- /docs/index.md.bak: -------------------------------------------------------------------------------- 1 | # Crucible Framework 2 | 3 | Developed by Carnegie Mellon University's Software Engineering Institute (SEI), Crucible is a modular framework for creating, deploying, and managing virtual environments to support training, education, and exercises. Within the Crucible framework are the following applications and plugins. 4 | 5 | ## Core Applications 6 | 7 | ### Alloy 8 | 9 | Alloy joins the other independent Crucible apps together to provide a complete Crucible experience (i.e. labs, on-demand exercises, exercises, etc.). To get started with Alloy, see: 10 | - [Alloy API Repository](https://github.com/cmu-sei/Alloy.Api) 11 | - [Alloy UI Repository](https://github.com/cmu-sei/Alloy.ui) 12 | 13 | ### Caster 14 | 15 | Caster is the primary deployment component of the Crucible framework. Caster is built upon [Terraform](https://www.terraform.io/), an open source "Infrastructure as Code" tool. Caster provides a web interface that gives exercise developers a way to create, share, and manage topology configurations. To get started with Caster, see: 16 | - [Caster API Repository](https://github.com/cmu-sei/Caster.Api) 17 | - [Caster UI Repository](https://github.com/cmu-sei/Caster.Ui) 18 | 19 | ### Player 20 | 21 | Player is the centralized interface where users, teams, and administrators go to participate in the cyber exercise. To get started with the various components of Player, see: 22 | 23 | - [Player API Repository](https://github.com/cmu-sei/Player.Api) 24 | - [Player Console UI Repository](https://github.com/cmu-sei/Console.Ui) 25 | - [Player UI Repository](https://github.com/cmu-sei/Player.Ui) 26 | - [Player VM API Repository](https://github.com/cmu-sei/Vm.Api) 27 | - [Player VM UI Repository](https://github.com/cmu-sei/Vm.Ui) 28 | 29 | ### Steamfitter 30 | 31 | Steamfitter gives exercise developers the ability to create scenarios consisting of a series of scheduled tasks, manual tasks, and injects which run against virtual machines in an exercise. To get started with Steamfitter, see: 32 | 33 | - [Steamfitter API Repository](https://github.com/cmu-sei/Steamfitter.Api) 34 | - [Steamfitter UI Repository](https://github.com/cmu-sei/Steamfitter.Ui) 35 | 36 | Steamfitter relies upon [StackStorm](https://stackstorm.com/), an open source event-driven platform used to automate workflows, to execute commands. 37 | 38 | ## Crucible Appliance 39 | 40 | The Crucible appliance is an environment that includes everything needed to install and configure the core applications of the Crucible framework. The appliance application stack consists of a single-node Docker swarm utilizing a Traefik reverse proxy. They are assembled using Docker Compose files on an Ubuntu 20.04 operating system. To get started with the Crucible appliance, see: 41 | 42 | - [Crucible Appliance Repository](https://github.com/cmu-sei/Crucible.Appliance) 43 | 44 | ## Plugins 45 | 46 | ### Crucible Common Modules 47 | 48 | Crucible common modules are a set of Angular modules that are common between Crucible apps. For more information, see: 49 | - [Crucible Common Modules Repository](https://github.com/cmu-sei/Crucible.Common.Ui) 50 | 51 | ### Crucible plugin for Moodle 52 | 53 | The Crucible plugin for Moodle is an activity plugin that allows Crucible labs and exercises to be accessed from the Moodle open-source learning management system. For more information, see: 54 | 55 | - [Crucible plugin for Moodle Repository](https://github.com/cmu-sei/moodle-mod_crucible) 56 | 57 | ### osTicket 58 | 59 | osTicket (https://osticket.com/) is a widely-used open source support ticket system that can be configured and deployed for an exercise. To get started with the Crucible plugin for osTicket, see: 60 | - [osTicket Repository](https://github.com/cmu-sei/osticket-crucible) 61 | 62 | ### Terraform Provider for Crucible 63 | 64 | This is the [Terraform](https://www.terraform.io/) Provider for Crucible which is used to create many Crucible resource types (e.g., Player Virtual Machines, Views, Applications, and others). For more information, see: 65 | 66 | - [Terraform Provider Crucible Repository](https://github.com/cmu-sei/terraform-provider-crucible) 67 | 68 | ### Terraform Provider for Identity 69 | 70 | This is the [Terraform](https://www.terraform.io/) Provider for [Identity](https://github.com/cmu-sei/Identity) that creates and manages user accounts and other resources using the Identity API. For additional information, see: 71 | 72 | - [Terraform Provider Identity Repository](https://github.com/cmu-sei/terraform-provider-identity) 73 | 74 | ### Welder 75 | 76 | Welder is a simple application that can be added to an exercise; Welder allows users to dynamically load a VM workstation. To get started with Welder, see: 77 | - [Welder Repository](https://github.com/cmu-sei/Welder) 78 | 79 | ## Documentation 80 | 81 | You can find documentation on Crucible and all of its components [here](https://cmu-sei.github.io/crucible/). 82 | 83 | ## Reporting bugs and requesting features 84 | 85 | Think you found a bug? Please report all Crucible bugs - including bugs for the individual Crucible apps - in the [cmu-sei/crucible issue tracker](https://github.com/cmu-sei/crucible/issues). 86 | 87 | Include as much detail as possible including steps to reproduce, specific app involved, and any error messages you may have received. 88 | 89 | Have a good idea for a new feature? Submit all new feature requests through the [cmu-sei/crucible issue tracker](https://github.com/cmu-sei/crucible/issues). 90 | 91 | Include the reasons why you're requesting the new feature and how it might benefit other Crucible users. 92 | 93 | ## License 94 | 95 | Copyright 2021 Carnegie Mellon University. See the [LICENSE.md](https://github.com/cmu-sei/crucible/blob/master/license.md) file for details. -------------------------------------------------------------------------------- /docs/index.md.htmlbak: -------------------------------------------------------------------------------- 1 | --- 2 | template: home.html 3 | title: Crucible Simulation Framework 4 | --- 5 | -------------------------------------------------------------------------------- /docs/integrations/index.md: -------------------------------------------------------------------------------- 1 | # Third-Party Applications 2 | 3 | The Crucible Framework provides users the necessary tools and resources for integrating open-source third-party applications with the platform's features and data. By leveraging open-source resources, users can save time and resources, and benefit from the expertise of the open-source community. 4 | 5 | Additionally, the platform can be tailored to the user's needs by allowing administrators to add applications that will leverage and integrated with the necessary features needed for an exercise. This enables administrators to provide a more personalized experience with the platform and to use applications that are specifically designed to meet their unique needs. 6 | 7 | By allowing customization, the platform can become more valuable to users, as it can adapt to their evolving needs and preferences. This can lead to a more engaged user base and a more successful platform overall. 8 | 9 | ## Third-Party Integration Guide 10 | 11 | To be able to add third-party applications to the Crucible Framework, the user must have a System Admin permission. 12 | 13 | To integrate a third-party application to the Crucible Framework, follow these next steps: 14 | 15 | ![Crucible View Admin OE](../assets/img/viewAdmin.png) 16 | 17 | 1. Click your username in the top right corner of the screen. 18 | 2. Select **Administration**. 19 | 3. Click **Application Templates**. 20 | 4. Click **Add Application Template**. 21 | 5. Add the **Name** for the application. 22 | 6. Add the **Url** of the application. 23 | 7. Add an **icon path** to add the logo of the application. 24 | 8. If desired to be **Embeddable**, check the box. 25 | 9. If desired to be **Loaded in the Background**, check the box. 26 | 27 | After these steps, administrators should follow the Crucible Admin Guide to add the application to the desired set of users and/or teams. 28 | 29 | ## Third-Party Applications 30 | 31 | The following are third-party applications that have already been tested and used within the Crucible Framework. 32 | 33 | ### Mattermost 34 | 35 | Mattermost is an open-source, self-hostable online chat service with file sharing, search, and integrations. It is designed as an internal chat for organizations and companies. 36 | 37 | To know more about the application: [Mattermost Documentation](https://docs.mattermost.com) 38 | 39 | For installation instructions: [Mattermost Installation](https://github.com/cmu-sei/helm-charts/tree/main/charts/mattermost-team-edition) 40 | 41 | ### Moodle 42 | 43 | Moodle is a free and open-source learning management system. Moodle is used for blended learning, distance education, flipped classroom and other online learning projects in schools, universities, workplaces and other sectors. 44 | 45 | To know more about the application: [Moodle Documentation](https://docs.moodle.org/401/en/Main_page) 46 | 47 | For installation instructions: [Moodle Installation](https://docs.moodle.org/401/en/Installation_quick_guide) 48 | 49 | #### Crucible Plugin for Moodle 50 | 51 | This activity plugin allows Crucible labs and exercises to be integrated into the Moodle LMS. The Moodle activity can either embed the Crucible VM app in an iframe or link to open the full Crucible lab player in a new tab or window. With this plugin, Crucible labs can be started, accessed, and stopped from a Moodle course. 52 | 53 | To know more about the plugin and installation instructions: [Moodle Crucible Plugin Documentation](https://github.com/cmu-sei/moodle-mod_crucible) 54 | 55 | ### osTicket 56 | 57 | osTicket is a widely-used open source support ticket system. It seamlessly integrates inquiries created via email, phone and web-based forms into a simple easy-to-use multi-user web interface. Manage, organize and archive all your support requests and responses in one place while providing your customers with accountability and responsiveness they deserve. 58 | 59 | To know more about the application: [osTicket Documentation](https://docs.osticket.com/en/latest/) 60 | 61 | For installation instructions: [osTicket Installation](https://docs.osticket.com/en/latest/Getting%20Started/Installation.html) 62 | 63 | #### Crucible Plugin for osTicket 64 | 65 | A plugin, developed by the Software Engineering Institute (SEI), that provides authentication against an OAuth2 Identity Server and posts ticket event notifications to the Crucible API. 66 | 67 | For installation and configuration instructions: [osTicket Crucible Plugin](https://github.com/cmu-sei/osticket-crucible) 68 | 69 | ### Rocket.Chat 70 | 71 | Rocket.Chat is a customizable open-source communications platform for organizations with high data protection standards. It enables real-time conversations between colleagues, other companies, or your customers across web, desktop, or mobile devices. 72 | 73 | To know more about the application: [Rocket.Chat Documentation](https://docs.rocket.chat) 74 | 75 | For installation instructions: [Rocket.Chat Installation](https://github.com/RocketChat/helm-charts) 76 | 77 | ### Roundcube 78 | 79 | Roundcube is a web-based IMAP email client. It provides full functionality you expect from an email client, including MIME support, address book, folder manipulation, message searching and spell checking. 80 | 81 | To know more about the application: [Roundcube Documentation](https://docs.roundcube.net/doc/help/1.1/en_US/) 82 | 83 | For installation instructions: [Roundcube Installation](https://github.com/sei-npacheco/webmail) 84 | -------------------------------------------------------------------------------- /docs/stylesheets/extra.css.bak: -------------------------------------------------------------------------------- 1 | :root > * { 2 | --md-primary-fg-color: #CC002B; 3 | } -------------------------------------------------------------------------------- /docs/topomojo/about.md: -------------------------------------------------------------------------------- 1 | # TopoMojo Docs 2 | 3 | This documentation introduces users to the TopoMojo environment and provides information necessary to launch existing labs and create new topologies. 4 | 5 | ## About TopoMojo 6 | 7 | TopoMojo is a web application used for creating and delivering cybersecurity training labs and exercises. With TopoMojo, users can build and deploy labs in an isolated and secure virtual-machine environment. 8 | 9 | TopoMojo allows for the same functionality and connectivity that users would experience with real, physical devices. Network topologies can utilize not only IP and Ethernet, but also custom protocol solutions like 802.11 wireless packet simulation. 10 | 11 | New topologies can be rapidly deployed using existing templates or built from the ground up with user-provided ISO's and VM specifications. 12 | 13 | **Go to the TopoMojo repository:** [github.com/cmu-sei/TopoMojo](https://github.com/cmu-sei/TopoMojo). 14 | 15 | ## TopoMojo Concepts 16 | 17 | ### Workspace and Gamespace 18 | 19 | You build your content in a *workspace*, but you "play" (complete the lab, do the activity) in a *gamespace*. In the workspace, engineers and lab developers add VMs, save updates, author a guide in Markdown, and configure questions/answers to turn the topology into a lab or *challenge*. 20 | 21 | A *gamespace* is where someone else plays through the lab. They get their own, isolated, read-only copies of all workspace resources. Players in a gamespace can interact with VMs and answer questions to complete a lab, but they can't save anything in the environment. 22 | 23 | In short: a *gamespace* is a read-only copy of a *workspace* where a player (user) interacts with the lab content. 24 | 25 | ### Isolation Tag 26 | 27 | A unique identifier TopoMojo uses to identify a workspace or gamespace. 28 | 29 | - For a workspace: the *isolation tag* is the workspace id visible above the Workspace Title when viewing the workspace. See screen print 1. 30 | - For a gamespace: the *isolation tag* is the gamespace id partially visible from the **Admin**, **Gamespaces** view (see screen print 2) and fully visible in the URL bar when viewing a VM console that belongs to a gamespace (highlighted in screen print 3). 31 | 32 | The id's used for isolation tags uniquely identify each workspace and gamespace in the TopoMojo database. Additionally, each resource (e.g., virtual machine, virtual network, etc.) associated with a workspace or gamespace will have the isolation tag appended to the resource name. 33 | 34 | For example: a VM named `challenge-sever` in the gamespace with id (isolation tag) `18048abc66f142e1804732082f4051d2`, has the name `challenge-server#18048abc66f142e1804732082f4051d2`. Appending the isolation tag to workspace/gamespace resources ensures environment isolation -- VMs and networks cannot have the same name, so there will never be accidental sharing of VM/network resources. 35 | 36 | Screen print 1 37 | 38 | ![workspace isolation tag](img/iso-tag-ws.png) 39 | 40 | Screen print 2 41 | 42 | ![gamespace isolation tag](img/iso-tag-gs.png) 43 | 44 | Screen print 3 45 | 46 | ![isolation tag url](img/iso-tag-url.png) 47 | 48 | ### Challenge 49 | 50 | The term *challenge* refers to when users integrate Gameboard and TopoMojo to execute a cyber competition. In this scenario, Gameboard is a consumer of content made in TopoMojo. More information on that is available elsewhere in the documentation. 51 | -------------------------------------------------------------------------------- /docs/topomojo/admin-dashboard.md: -------------------------------------------------------------------------------- 1 | # Admin Features 2 | 3 | TopoMojo has an admin interface called **Admin Dashboard**. To access the Admin Dashboard, you'll need the `admin` role. In the top-right corner, click the **Admin** button. TopoMojo provides the initial `admin` role to the first user who authenticates successfully. 4 | 5 | ## Hub Connections 6 | 7 | **Hub connections** informs TopoMojo admins about which users are currently logged into TopoMojo. 8 | 9 | ## Announcement 10 | 11 | The **Announcement** feature allows TopoMojo admins to broadcast important messages to everyone in TopoMojo. Announcements appear in the TopoMojo interface. In the Message field, enter the content of the announcement and click **Send**. 12 | 13 | ## Import/Export 14 | 15 | This is future functionality for the TopoMojo UI. The API equivalent of import/export is available for use. 16 | 17 | ## Janitor 18 | 19 | The **Janitor** service cleans up unused resources (e.g., a workspace VM that has been idle for a long time) in TopoMojo. 20 | 21 | **Cleanup Report:** Provides a log of the Janitor's activity. 22 | -------------------------------------------------------------------------------- /docs/topomojo/admin-gamespaces.md: -------------------------------------------------------------------------------- 1 | # Admin Gamespaces 2 | 3 | The **Gamespaces** tab is where the admin can search for, and filter by, **active** and **inactive** gamespaces. By default, the search is for *active* gamespaces. Green indicates *active* gamespaces and gray indicates *inactive* gamespaces. 4 | 5 | **Refresh:** Refreshes your search. 6 | 7 | **Delete Selected:** Check the box next to **All** to select all gamespaces for deletion or check a box next to individual gamespaces to select for deletion. 8 | 9 | Gamespaces in the table show the following information: 10 | 11 | - Gamespace id or support code in Gameboard (e.g. `e9416013`) 12 | - Time remaining (if active) 13 | - User who is interacting with (or *had* interacted with) the gamespace 14 | - Title of the *workspace* that deployed the *gamespace* 15 | 16 | The screen print below shows several active and inactive gamespaces (usernames redacted). 17 | 18 | ![admin gamespaces](img/admin-gamespaces.png) 19 | 20 | ## View (Expanded) 21 | 22 | **View:** Selecting **View** expands the gamespace information where a list of all the VMs associated with the gamespace and their state. 23 | 24 | - **refresh:** Refreshes the VM instance. 25 | - **console:** Allows you to interact with the VM (a user's gamespace). 26 | - **stop:** Stops a powered on VM. 27 | - **revert:** Reverts to last saved state. 28 | - **delete:** Deletes a running VM instance. 29 | - **JSON:** Shows detailed information about the gamespace, including: answers to questions, variables associated with the challenge, submitted answers, challenge questions and expected answers, and if the participant answered questions correctly or incorrectly. 30 | - **Dispatcher:** Used to issue commands to a VM from TopoMojo provided that the TopoMojo agent program is running on that VM. The VM requires an internet connection which allows the agent program to establish a connection with TopoMojo. `target` is the hostname of the VM that you want to run the command on. `command` is any command you wish to run. See TopoMojo's [GitHub repository](https://github.com/cmu-sei/TopoMojo/tree/main/src/TopoMojo.Agent) for more information on TopoMojo's agent. 31 | 32 | ## Delete 33 | 34 | **Delete:** As you would expect, deletes the gamespace and associated VMs. 35 | -------------------------------------------------------------------------------- /docs/topomojo/admin-log.md: -------------------------------------------------------------------------------- 1 | # Admin Dashboard Log Tab 2 | 3 | The **Log** tab is useful from the admin point of view when trying to troubleshoot. The Log tab only shows errors here, not every log line. 4 | -------------------------------------------------------------------------------- /docs/topomojo/admin-machines.md: -------------------------------------------------------------------------------- 1 | # Admin Machines 2 | 3 | This tab lists all VMs TopoMojo is tracking and the gamespaces they belong to, without using the vSphere Client. 4 | 5 | ![admin machine explanation](img/admin-machine.png) 6 | 7 | - `gamespace` tells you this is a *gamespace* VM. 8 | - `pc5-ubuntu-server-2204-594` is the name of the VM. 9 | - `#d9b090c92728424781537c66b3ee2f4b` after the hash tag is the gamespace GUID. 10 | 11 | The **Machines** tab is helpful when you want to find all the VMs related to a gamespace (e.g., `PC6 Stock Topology v1` in the screen print above). You can copy the gamespace GUID and paste it into the **Search** field. Note that you cannot interact with the VMs from this tab. 12 | 13 | ## "Orphaned" VMs 14 | 15 | VMs tagged with `__orphaned` are VMs that still exist; however, they are not connected to anything. TopoMojo may have attached these VMs to an expired gamespace, and when it tried to remove them vSphere failed to respond. Orphaned VMs should be manually deleted in vSphere. 16 | 17 | To identify orphaned VMs, search for "orphaned" in the Search field, identify the VMs to clean up in vSphere, and delete them. Once deleted in vSphere, they won't appear on the **Machines** tab again. 18 | -------------------------------------------------------------------------------- /docs/topomojo/admin-templates.md: -------------------------------------------------------------------------------- 1 | # Admin Templates 2 | 3 | The **Templates** tab is where you can view all of the templates that exist in TopoMojo. 4 | 5 | **Search:** Search for templates by workspace. Notice that you can apply filters here to further narrow down your search. In the screen print below, the filter is for linked VMs with a parent template of a VM called `kali-201901`. 6 | 7 | ![templates filter](img/templates-filter.png) 8 | 9 | You can filter for specific workspaces here too. Clicking the *name* of the of the workspace takes you directly to the workspace. 10 | 11 | !!! note "Linked and unlinked templates" 12 | 13 | The chain link icon next to a template name indicates the VM is *linked*. Use linked VMs when the prebuilt, stock templates included with TopoMojo meet your needs. Linked VMs save resources when VMs don't require custom configurations when deployed. Changes can't be saved to linked VMs when deployed. Changes can only be saved to *unlinked* VMs. 14 | 15 | ## Template Properties 16 | 17 | **Name:** The VM name can't contain spaces; TopoMojo will replace spaces in a name with a `-`. 18 | 19 | **Description:** Not visible to users; use the *Description* in a way that meets your needs. For example, include VM credentials here. 20 | 21 | **Networks:** A space delimited list of network names. When TopoMojo deploys a VM, it will have *one* network interface for each of the named networks. TopoMojo creates networks on the hypervisor at VM-deploy time if they don't already exist. 22 | 23 | TopoMojo appends the isolation tag of the workspace/gamespace to network names to ensure network isolation. 24 | 25 | TopoMojo does not append the isolation tag to persistent/shared networks listed here; the VM connects to the existing shared/persistent network. 26 | 27 | For more information on *isolation tags*, see "Isolation tags" in [TopoMojo concepts](about.md/#isolation-tag). 28 | 29 | **Guest Settings:** List key value pairs in the form of `key=value` to pass data into deployed VMs via VMware guestinfo Variables. The **Guest Settings** field uses VMware Guest Info Variables to inject content into virtual machines. Place key/value pairs here. The *key* is the name of the guest variable you want to define, and the *value* is value, information, setting, of the variable. For example, `var1=test` is a guest setting named "var1" with a value of "test". 30 | 31 | **Replicas:** *Replicas* indicates how many copies of the VM get deployed in a gamespace. This will vary according to your needs. You may need two copies of the VM per gamespace or you may need 10. E.g.: two users are working a TopoMojo lab together; we want to set Replicas to `2` to ensure that each user has their own VM to work with. If set to `1`, then the two users could encroach on each other's work on the single VM. 32 | 33 | When deciding how many replicas you need, keep resources in mind. If, as in our example above, we only need two copies of the VM at any given time don't set Replicas to `5`. TopoMojo will deploy five, two will get used, and the other three won't get used. 34 | 35 | `-1`: Setting Replicas to `-1` means TopoMojo will deploy one VM template copy per user. If there are two users, then TopoMojo deploys two copies; if there are 10 users, then 10 copies. TopoMojo does not deploy extra VMs. Use this setting in conjunction with the Gameboard app, where Gameboard informs TopoMojo on how many copies to make based upon the Gameboard team size. 36 | 37 | The value set in **Replicas** only applies to the template you are editing; not every template in the workspace. So, if you want the same number of copies deployed in a gamespace for each template, you'll have to edit each template individually. 38 | -------------------------------------------------------------------------------- /docs/topomojo/admin-users.md: -------------------------------------------------------------------------------- 1 | # Admin Users 2 | 3 | The **Users** tab shows all current TopoMojo users. You can create new users here and assign them permissions. The **Search** feature allows TopoMojo admins to search on the name of a TopoMojo user. To search for a user across all of TopoMojo, enter the term into the **Search** field or filter by *role* or *audience*. 4 | 5 | Recall from workspace Settings that "audience" is a list of clients who can launch the workspace as a gamespace. Selecting an audience filter results in users who are part of that audience. 6 | 7 | **View:** Select **View** to see the properties for the user. 8 | 9 | **Delete:** Deletes the user. 10 | 11 | ## Roles 12 | 13 | All permissions are *additive*; meaning a Creator can do everything a Builder can do and an Observer can do everything a Builder and Creator can do. 14 | 15 | - **Admin:** Highest level of permission in TopoMojo; can do everything the other roles can do. 16 | - **Observer:** Allows a user to view and use the Gamespaces tab. However, the *scope* of the user (see below) limits access too. An observer can deploy gamespaces with a matching *audience* and these are the only gamespaces the user can observe. 17 | - **Creator:** Can have as many workspaces and templates as wanted. 18 | - **Builder:** Can connect to bridge-net. 19 | - **User:** No extra permissions in TopoMojo. This is the TopoMojo default. 20 | - **Disabled:** No permissions in TopoMojo. 21 | 22 | ## Create a New User 23 | 24 | **Name:** Enter a new user name here. 25 | 26 | **Scope:** A space-delimited list of administrator-defined groups the user belongs to. Administrators can define a *scope* with any name here. A user's scope determines which workspaces they have permission to deploy gamespaces from. Users can only deploy a gamespace from a workspace if the user has a *scope* that matches an *audience* defined in the workspace. See also: [Building a new workspace](building-a-workspace.md). 27 | 28 | **Workspace Limit:** The maximum number of workspaces this user can manage. 29 | 30 | **Gamespace Limit:** The maximum number of concurrent gamespaces allowed for this user. 31 | 32 | **Gamespace Max Duration:** The maximum amount of minutes allowed for a gamespace. 33 | 34 | **Gamespace Cleanup Grace time:** The number of "grace" minutes between the time the gamespace expires and when TopoMojo tears it down. 35 | 36 | **Generate ApiKey:** Generate API keys here. This allows users to programmatically interact with the TopoMojo API without needing to log in. 37 | -------------------------------------------------------------------------------- /docs/topomojo/admin-workspaces.md: -------------------------------------------------------------------------------- 1 | # Admin Workspaces 2 | 3 | The **Workspaces** tab is where the admin can search for workspaces and perform limited actions. Workspaces are where you build challenges and labs. Here, an admin can view every workspace. 4 | 5 | !!! note 6 | 7 | Only users who are admins can view the list of workspaces on the Admin panel. Non-admin users will use the search feature on the left navigation pane. 8 | 9 | In the left navigation pane, you can use the **Search** field to locate a workspace. However, searching here only returns workspaces you created or workspaces others invited you to join. 10 | 11 | **Create:** Create a new workspace from the Admin Workspaces panel. For additional help, see [Building a new workspace](building-a-workspace.md). 12 | 13 | Selecting a workspace takes you the **Settings** tab of that particular workspace where you can edit it. For additional help on the **Settings** tab, see [Building a new workspace](building-a-workspace.md). 14 | 15 | The *workspace identifier* is present here too. The workspace identifier matches the directory name used to store workspace files like unlinked virtual machines, Markdown documents, images, etc. Copying it to the clipboard is useful if you need to use it in a terminal when navigating the filesystem. 16 | 17 | ![workspace identifier](img/wksp-iden.png) 18 | 19 | ## View (Expanded) 20 | 21 | **Template Limit:** Defines the number of VMs that can be in the workspace. 22 | 23 | **Template Scope:** Limits a workspace to using templates that have the given scope. 24 | 25 | **Audience:** Limits who can deploy a gamespace as a workspace. 26 | 27 | **VMs:** Refresh, deploy, view the console, start/stop, revert and delete from here. 28 | - **Refresh**: Queries the state of the VM from the hypervisor. 29 | - **Deploy**: Deploys that virtual machine into your workspace. 30 | - **Console:** Opens the console for the virtual machine. 31 | - **Stop/Start:** Power off/on the VM, but leaves the resource deployed on the hypervisor. Clicking **stop** results in the hypervisor showing a deployed VM in a powered-off state. Clicking **start** powers on the deployed VM. 32 | - **Revert:** Reverts the VM to its last saved state. You will lose all changes made since the last commit. 33 | - **Delete:** Deletes a running VM instance. 34 | -------------------------------------------------------------------------------- /docs/topomojo/challenge.md: -------------------------------------------------------------------------------- 1 | # Challenge Tab 2 | 3 | The *Challenge* tab in the TopoMojo workspace is where event organizers integrate Gameboard and TopoMojo to execute a cyber competition. Here, you create random key/values, embed them in a *gamespace* at deploy time, and ask questions and answers of competitors (players). 4 | 5 | ## Transforms 6 | 7 | **Transforms** allow you to define dynamic variables that TopoMojo generates based on certain criteria or types. Transforms are also a key/value pair definition –- the **key** is the name of your transform and the **value** is the type of the transform. The screen print below shows a transform named "token1" that will have a value of 8 random hexadecimal characters. 8 | 9 | *Screen print 1:* 10 | 11 | ![transforms](img/transforms.png) 12 | 13 | To access transforms, use the referenced "*double-pounder-key* (`##key##`)" notation. When TopoMojo deploys a gamespace, the engine generates the random values for all transforms, looks for double-pounder-keys, then replaces them with the randomly generated values for that deployment. 14 | 15 | Any of the sections on the Challenge tab (e.g., Transforms, Markdown, Questions, Answers) can contain *double-pounder-keys* that TopoMojo replaces with transform values at deploy time. You can also use transform *double-pounder-keys* in the *Guest Settings* field of a template to inject random variables into VM guest info variables when deploying a gamespace. (Transforms aren't generated when deploying workspace VMs, so the value of the variable will be the *double-pounder-key*.) 16 | 17 | The screen print below shows the Guest Settings of a VM template configured to use two guest info variables: `var1` and `token1`. `Var1` has a value of "test" and `token1` will have a random 8-character hexadecimal string assigned when TopoMojo deploys a gamespace. 18 | 19 | *Screen print 2:* 20 | 21 | ![guest-settings](img/guest-settings.png) 22 | 23 | Click [here](building-a-workspace.md/#template-field-definitions) to learn more about Guest Settings. 24 | 25 | ## Markdown 26 | 27 | The markdown you enter here gets appended to the gamespace document. 28 | 29 | ## Variants 30 | 31 | A *variant* describes a different version of a challenge. Variants can contain different ISO attachments, different virtual machines, and different questions and answers. Each time TopoMojo deploys a challenge, a variant is randomly selected for the deployment. For example, two competitors can attempt the same challenge, but one competitor may receive *variant #1* and the other competitor may receive *variant #2*. When creating a challenge using variants, make sure all variants test the same competitor skills at the same difficulty level. That is, variant #1 should test the same skills as variant #2 and one variant shouldn't be harder to solve than another variant. 32 | 33 | ## Question Set 34 | 35 | **Move Up, Move Down, Remove:** These functions are self-explanatory. Use them to position the question in the sequence of questions for that set or remove it. 36 | 37 | **Question:** Enter the question you expect the participant to answer here. Your question should be specific, so that there is only one correct answer. 38 | 39 | **Answer:** Enter the correct answer that the competitor must submit to earn a score. 40 | 41 | You will see these options when you select **Detail**. 42 | 43 | **Hidden:** Select **Hidden** to prevent the question from appearing when playing the challenge. Hidden questions do not appear when playing in TopoMojo or via Gameboard. 44 | 45 | **Grader:** Select the grading type here. The Grader determines if players submitted the correct answer to a question. Select one of four types: 46 | 47 | - `Match`: The submission must exactly match what is in the **Answer** field. Use this when there is exactly one possible answer to a question. 48 | - `MatchAny`: The submission must match one of the pipe-delimited answers in the **Answer** field. Use this when there is more than one possible answer to a question. 49 | - `MatchAll`: The submission must match all of the pipe-delimited answers in the **Answer** field. Use this for questions expecting a list of answers. 50 | - `MatchAlpha`: The submission must exactly match what is in the **Answer** field *after* the grader removes all non-alphanumeric characters. This is useful if the user might submit symbols that don't affect the validity of an answer. For example, `C:/Users` and `C:\Users` are both valid answers and the symbols (`/` vs `\`) don't matter. 51 | 52 | The Grader converts all answers and submissions to lowercase before comparing them to the expected answer. All four grader types are case-insensitive. 53 | 54 | ### Weight 55 | 56 | Weight is the percentage of total for this question. The value should be between `0 and 1` or `0 and 100`. The weights of all questions within the set must add up to 100% or one (1). TopoMojo calculates zero (`0`) values evenly. 57 | 58 | ### Example 59 | 60 | Providing an example answer helps players understand the required answer format. For instance, sometimes a file needs both the name and the extension, while other times only the name is necessary. 61 | -------------------------------------------------------------------------------- /docs/topomojo/copy-paste.md: -------------------------------------------------------------------------------- 1 | # Copy and Paste 2 | 3 | The procedures below show you how to: 4 | 5 | - Copy text from a local machine (an *out of game* computer) and paste it into an *in game* virtual machine 6 | - Copy text from a virtual machine and paste it into a local machine 7 | 8 | *The VM console cog icon:* 9 | 10 | ![console-cog](img/console-cog.png) 11 | 12 | ## From Local ("Out of Game") to "In Game" 13 | 14 | 1. On your local machine select, then copy, the content you want to place into a launched virtual machine. 15 | 2. In the VM console tab, select the cog icon (the **Tools**). Under **Clipboard** paste in the clip using right-click Paste or `ctrl+V`. 16 | 3. In the VM, select where you want the copied text to go (this can be a new file or an open application, etc.). 17 | 4. Under **Clipboard**, click **Paste**. This inserts the copied content into the virtual machine. 18 | ![console-paste](img/console-paste.png) 19 | 20 | ## From "In Game" to "Out of Game" 21 | 22 | 1. On the VM, select the content you would like to copy. Copy the content *first* to the VM's clipboard (right-click Copy or `ctrl+C`). 23 | 2. Once you've copied your text to the VM clipboard select the cog icon (the **Tools**), place your cursor in that clipboard, and click **Copy**. This transfers the VM clip to your local clipboard. 24 | ![console-copy](img/console-copy.png) 25 | 3. On your local machine, paste the copied text into an application using right-click Paste or `ctrl+V`. 26 | -------------------------------------------------------------------------------- /docs/topomojo/files.md: -------------------------------------------------------------------------------- 1 | # Files 2 | 3 | The **Files** page in the TopoMojo workspace allows you to upload files from your system to TopoMojo to include in your lab. You can use these files as ISOs to attach to VMs in the workspace. If your files aren't already in an ISO file format, TopoMojo wraps them in an ISO after upload. 4 | 5 | !!! note 6 | 7 | For ISO uploads to work, TopoMojo needs an NFS (Network File System) datastore presented to vSphere and TopoMojo must be able to access it. 8 | 9 | The **Files** tab in TopoMojo is where you upload ISO files to attach to virtual machines. Supply the ISO you want to attach to your VM. The ISO adds extra resources that the original VM might not include. ISO files are disk images TopoMojo mounts as virtual CD drives on the VM. You want to attach an ISO when you need additional software, datasets, or other resources. 10 | 11 | **Drag and Drop:** Admins drag their ISO file into the box on Files tab or browse to locate it on their own device. 12 | 13 | By default, the **Local** filter only displays ISOs available in the current workspace. 14 | 15 | When you upload an ISO file, TopoMojo creates a folder with *this* GUID--called out in green in screen print 1 below--in the folder name in the NFS datastore. TopoMojo puts your ISO in that folder. Only the current workspace, that is, *your* workspace has access to the ISO file. 16 | 17 | Screen print 1: GUID and Local filter applied 18 | 19 | ![iso-drag](img/iso-drag.png) 20 | 21 | When you remove the **Local** filter, you can see *all* of the ISOs in the global folder on the NFS data store. (The folder name will contain a GUID of all zeros.) These global ISOs are available to every workspace in TopoMojo. 22 | 23 | You can attach an ISO to a VM in the challenge workspace **Templates** tab. See "Adding and editing templates" in the [Building a new Workspace](building-a-workspace.md) chapter of this guide. When you select an ISO here, TopoMojo attaches the ISO to the VM upon its deployment. 24 | 25 | You can also attach an ISO to a VM using the workspace **Challenge** tab's **Variant Detail** function. This "dynamic ISO attachment" gives you the ability to attach a variant-specific ISO file to a template. You *must* specify a target(s) here. See also "Variants" in the [Challenge tab](challenge.md) chapter of this guide. 26 | -------------------------------------------------------------------------------- /docs/topomojo/finding-a-space.md: -------------------------------------------------------------------------------- 1 | # Finding a Space 2 | 3 | Once you're in TopoMojo, you can browse for existing TopoMojo workspaces and gamespaces. In the left panel (`Ctrl-L`) , enter terms into the **Search** field. TopoMojo automatically searches for a workspace or a gamespace that matches your terms. Click **workspace** or **gamespace** to filter results. TopoMojo sorts labs alphabetically by name. 4 | 5 | Select a gamespace, then click **Start**. You can "play" the lab now -- start by reading the instructions and launching a gamespace resource. You can end play by clicking **End**. You can invite others to play in your gamespace. Click **Invite** to copy an invitation link. Provide the other person(s) with the link. 6 | 7 | ![end and invite](img/end-invite-timer.png) 8 | 9 | The timer counts down how much remaining time you have before the gamespace expires. 10 | -------------------------------------------------------------------------------- /docs/topomojo/getting-started.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | ## What's New 4 | 5 | Get the latest TopoMojo source code and its accompanying release notes [here](https://github.com/cmu-sei/TopoMojo). 6 | 7 | ## Installing 8 | 9 | Installing TopoMojo is a matter of installing the Helm chart found [here](https://github.com/cmu-sei/helm-charts/tree/main/charts/topomojo) on the SEI's GitHub page. The CMU-SEI Helm charts repo is a public repository on GitHub for anyone to access and use. The TopoMojo chart contains two sub-charts: `topomojo-api` and `topomojo-ui`. The `api` and the `ui` are different apps and you should deploy them separately. 10 | 11 | !!! info 12 | 13 | This structure is consistent with the other Foundry apps: there is an `api` piece and a `ui` piece. 14 | 15 | **`TopoMojo values.yaml`:** Contains default configurations for the `api` and the `ui`. To deploy TopoMojo, configure the **`Values.yaml`** file according to your needs and `helm install` TopoMojo. 16 | 17 | ## Persistent/Shared Networks 18 | 19 | We recommend having a persistent/shared network available to all TopoMojo workspaces/gamespaces. The administrator defines a persistent/shared network at the time they deploy the TopoMojo API. 20 | 21 | For example, you could create a persistent/shared network that provides internet access to all TopoMojo VMs that specify the network name. `bridge-net` typically signifies bridging the traditionally isolated TopoMojo VM to the internet. 22 | 23 | Use the `Pod__Vlan__Reservations` environment variable to define the name of a persistent/shared network. See screen print 1 below. 24 | 25 | - `Pod__Vlan__Reservations__0__Id:` defines the vlan Id (from the hypervisor) that corresponds to the shared/persistent network. 26 | - `Pod__Vlan__Reservations__0__Name:` defines the name of the persistent/shared network. 27 | 28 | You can define more than one shared/persistent network by incrementing the variable name (`Pod__Vlan__Reservations__1__Id` and `Pod__Vlan__Reservations__1__Name`). To connect VMs to shared/persistent networks, users must have at least **Builder** permissions. 29 | 30 | !!! note "A note about bridge-net" 31 | 32 | "bridge-net" is not always reserved. It is reserved by the SEI because we configured it that way, and it is convenient to refer to in the TopoMojo documentation. 33 | 34 | *Screen print 1:* 35 | 36 | ![bridge-net](img/bridge-net.png) 37 | -------------------------------------------------------------------------------- /docs/topomojo/img/admin-gamespaces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/admin-gamespaces.png -------------------------------------------------------------------------------- /docs/topomojo/img/admin-machine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/admin-machine.png -------------------------------------------------------------------------------- /docs/topomojo/img/andrew-carnegie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/andrew-carnegie.png -------------------------------------------------------------------------------- /docs/topomojo/img/bridge-net.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/bridge-net.png -------------------------------------------------------------------------------- /docs/topomojo/img/console-cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/console-cog.png -------------------------------------------------------------------------------- /docs/topomojo/img/console-copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/console-copy.png -------------------------------------------------------------------------------- /docs/topomojo/img/console-paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/console-paste.png -------------------------------------------------------------------------------- /docs/topomojo/img/end-invite-timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/end-invite-timer.png -------------------------------------------------------------------------------- /docs/topomojo/img/guest-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/guest-settings.png -------------------------------------------------------------------------------- /docs/topomojo/img/iso-drag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/iso-drag.png -------------------------------------------------------------------------------- /docs/topomojo/img/iso-tag-gs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/iso-tag-gs.png -------------------------------------------------------------------------------- /docs/topomojo/img/iso-tag-url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/iso-tag-url.png -------------------------------------------------------------------------------- /docs/topomojo/img/iso-tag-ws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/iso-tag-ws.png -------------------------------------------------------------------------------- /docs/topomojo/img/markdown-editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/markdown-editor.png -------------------------------------------------------------------------------- /docs/topomojo/img/markdown-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/markdown-preview.png -------------------------------------------------------------------------------- /docs/topomojo/img/other-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/other-icons.png -------------------------------------------------------------------------------- /docs/topomojo/img/refresh-deploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/refresh-deploy.png -------------------------------------------------------------------------------- /docs/topomojo/img/templates-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/templates-edit.png -------------------------------------------------------------------------------- /docs/topomojo/img/templates-filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/templates-filter.png -------------------------------------------------------------------------------- /docs/topomojo/img/templates-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/templates-save.png -------------------------------------------------------------------------------- /docs/topomojo/img/transforms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/transforms.png -------------------------------------------------------------------------------- /docs/topomojo/img/vm-ware-tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/vm-ware-tools.png -------------------------------------------------------------------------------- /docs/topomojo/img/wksp-iden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmu-sei/crucible/1ad262cd8ee18fee66b56f46b87299e0ca0fd7b2/docs/topomojo/img/wksp-iden.png -------------------------------------------------------------------------------- /docs/topomojo/lab-document.md: -------------------------------------------------------------------------------- 1 | # Lab Document 2 | 3 | The **Document** tab in a TopoMojo workspace is where you write the instructions that correspond with your lab. You author instructions in Markdown using TopoMojo's built-in editor. Authoring in Markdown enables you to create a nicely formatted document without writing HTML. 4 | 5 | The TopoMojo editor is a collaborative editor. Multiple people can work on the documentation at the same time. As long as you are "connected" (see the top-right corner) TopoMojo saves your updates to the document. 6 | 7 | For more information about Markdown, including the syntax guide, see [markdownguide.org](https://www.markdownguide.org/). 8 | 9 | ## Inserting an Image 10 | 11 | To insert an image into your document: 12 | 13 | 1. Click **Images**, then click **Browse** (you can drag and drop too). 14 | 2. After browsing to upload an image, you should see a preview of the image. 15 | 3. Place your cursor in the document where you want the image, hover over the image, and click **Insert**. 16 | 17 | ## Previewing the Doc 18 | 19 | To see how your instructions will look to players when they "play" your lab, click the **Preview** button. The first screen capture shows the Markdown editor. The second screen capture shows the document in preview mode. 20 | 21 | ![markdown-editor](img/markdown-editor.png) 22 | 23 | and 24 | 25 | ![markdown-preview](img/markdown-preview.png) 26 | -------------------------------------------------------------------------------- /docs/topomojo/play.md: -------------------------------------------------------------------------------- 1 | # Play 2 | 3 | The **Play** page is where you can interact with your lab in the same way others will when they launch your content or "play" through your challenge. Play deploys a read-only copy of all virtual machines in the workspace; this gives the player their own deployed configurations. 4 | 5 | **Variant:** Specify which variant of the challenge you wish to play (if it is a *variant* challenge). 6 | 7 | **Max Attempts:** The maximum number of submission attempts allowed when answering questions. 8 | 9 | **Max Minutes:** The maximum number of minutes permitted to play before the gamespace expires. 10 | 11 | **Point Value:** The point value assigned for this challenge when used with Gameboard in a cyber competition scenario. 12 | 13 | **Start:** Starts up the gamespace which includes setting the timer, deploying virtual machines, displaying the Markdown document, and making challenge questions available. Individuals get their own Play tab, so when playing, the gamespace environment is unique to you. 14 | 15 | **Reset:** Resets the gamespace. 16 | -------------------------------------------------------------------------------- /material/overrides/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | 4 | {% block extrahead %} 5 | 6 | 7 | {% set title = config.site_name %} 8 | {% if page and page.title and not page.is_homepage %} 9 | {% set title = config.site_name ~ " - " ~ page.title | striptags %} 10 | {% endif %} 11 | 12 | 13 | {% set image = config.site_url ~ 'assets/images/illustrations/banner.png' %} 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | {% endblock %} -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: Crucible Documentation 2 | site_description: "CRUCIBLE is an open-source application framework for creating and managing virtual environments and events." 3 | site_author: "Crucible Team" 4 | copyright: > 5 | Copyright © 2024 Carnegie Mellon University. All rights reserved. 6 | extra_css: 7 | - stylesheets/extra.css 8 | theme: 9 | name: material 10 | custom_dir: material/overrides 11 | features: 12 | - navigation.tabs 13 | - navigation.tabs.sticky 14 | - navigation.sections 15 | - navigation.indexes 16 | - toc.integrate 17 | - content.code.copy 18 | - content.code.annotate 19 | logo: assets/img/crucible-icon-c-alpha.svg 20 | favicon: assets/img/crucible-icon-c-alpha.svg 21 | palette: 22 | # Palette toggle for light mode 23 | - scheme: default 24 | toggle: 25 | icon: material/brightness-7 26 | name: Switch to dark mode 27 | primary: red 28 | 29 | # Palette toggle for dark mode 30 | - scheme: slate 31 | toggle: 32 | icon: material/brightness-4 33 | name: Switch to light mode 34 | primary: red 35 | markdown_extensions: 36 | - pymdownx.highlight: 37 | anchor_linenums: true 38 | line_spans: __span 39 | pygments_lang_class: true 40 | - pymdownx.emoji: 41 | emoji_index: !!python/name:material.extensions.emoji.twemoji 42 | emoji_generator: !!python/name:material.extensions.emoji.to_svg 43 | - pymdownx.inlinehilite 44 | - pymdownx.snippets 45 | - pymdownx.details 46 | - pymdownx.superfences 47 | - admonition 48 | - attr_list 49 | extra: 50 | features: 51 | - content.icons 52 | social: 53 | - icon: material/message-question 54 | link: https://github.com/cmu-sei/Crucible/issues/new?template=question.md 55 | name: Ask a Question 56 | - icon: fontawesome/solid/bug 57 | link: https://github.com/cmu-sei/crucible/issues/new?template=bug_report.md 58 | name: Report a Problem 59 | - icon: material/lightbulb-on 60 | link: https://github.com/cmu-sei/crucible/issues/new?template=feature_request.md 61 | name: Request a Feature 62 | - icon: fontawesome/regular/comments 63 | link: https://github.com/cmu-sei/crucible/discussions 64 | name: Community Discussions 65 | - icon: fontawesome/brands/github 66 | link: https://github.com/cmu-sei/crucible 67 | name: cmu-sei/Crucible on Github 68 | - icon: fontawesome/regular/envelope 69 | link: mailto:info@sei.cmu.edu?subject=Crucible%20Feedback 70 | name: Email Crucible Team 71 | - icon: fontawesome/solid/house 72 | link: https://www.sei.cmu.edu/ 73 | name: Software Engineering Institute 74 | nav: 75 | - Home: index.md 76 | - Player: player/index.md 77 | - Caster: caster/index.md 78 | - Steamfitter: steamfitter/index.md 79 | - Alloy: alloy/index.md 80 | - TopoMojo: 81 | - About: topomojo/about.md 82 | - Getting started with TopoMojo: topomojo/getting-started.md 83 | - Finding an existing space: topomojo/finding-a-space.md 84 | - Building a new space: 85 | - Settings and Templates: topomojo/building-a-workspace.md 86 | - Document: topomojo/lab-document.md 87 | - Challenge: topomojo/challenge.md 88 | - Files: topomojo/files.md 89 | - Play: topomojo/play.md 90 | - Admin features: 91 | - Admin Dashboard: topomojo/admin-dashboard.md 92 | - Gamespaces: topomojo/admin-gamespaces.md 93 | - Workspaces: topomojo/admin-workspaces.md 94 | - Templates: topomojo/admin-templates.md 95 | - Machines: topomojo/admin-machines.md 96 | - Users: topomojo/admin-users.md 97 | - Log: topomojo/admin-log.md 98 | - Copy and paste: topomojo/copy-paste.md 99 | - Gameboard: 100 | - Playing games: 101 | - About the Gameboard: gameboard/index.md 102 | - Profile screen: gameboard/profile.md 103 | - Home screen and Lobby: gameboard/home-and-lobby.md 104 | - Giving feedback: gameboard/player-feedback-form.md 105 | - Practicing challenges: gameboard/practice-area.md 106 | - Getting in-game support: gameboard/support.md 107 | - Using Reports: gameboard/reports.md 108 | - Administering games: 109 | - Administration: gameboard/admin.md 110 | - Game Center: gameboard/game-center.md 111 | - Practice Area: gameboard/admin-practice-area.md 112 | - Users: gameboard/admin-users.md 113 | - Players: gameboard/admin-players.md 114 | - Sponsors: gameboard/admin-sponsors.md 115 | - Challenges: gameboard/admin-challenges.md 116 | - Support: gameboard/admin-support.md 117 | - Notifications: gameboard/admin-notifications.md 118 | - Permissions: gameboard/admin-roles.md 119 | - Configuring Player Feedback Templates: gameboard/admin-feedback-form.md 120 | - Configuring Certificate Templates: gameboard/admin-completion-certificates.md 121 | - Blueprint: blueprint/index.md 122 | - CITE: cite/index.md 123 | - Gallery: gallery/index.md 124 | - Integrations: integrations/index.md 125 | - Overview Install: install/index.md 126 | repo_url: "https://github.com/cmu-sei/crucible" 127 | repo_name: "cmu-sei/Crucible" -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | mkdocs-material 2 | Pygments 3 | pillow 4 | cairosvg 5 | vale 6 | --------------------------------------------------------------------------------