Compare commits
25 Commits
bacbd48d30
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe0adef332 | ||
|
|
8efe0b7836 | ||
|
|
52e2f446d1 | ||
|
|
7b3dce9bc8 | ||
|
|
bc00607685 | ||
|
|
c03c37f691 | ||
|
|
c4634c0a0c | ||
|
|
35cd103751 | ||
|
|
eddd70c701 | ||
|
|
4d1eae0b25 | ||
|
|
e8a0831809 | ||
|
|
5ed4acf7bf | ||
|
|
4e35dabde7 | ||
|
|
f6f192da26 | ||
|
|
ebb6aa0f56 | ||
|
|
cf6fc0da33 | ||
|
|
427c3b6427 | ||
|
|
13d7676ff4 | ||
|
|
e9b1a95b9a | ||
|
|
48d27184be | ||
|
|
c41f3a0286 | ||
|
|
d6a1d30747 | ||
|
|
35f0edbc83 | ||
|
|
f22fb410ab | ||
|
|
58e972e65f |
3
.env
3
.env
@@ -1,4 +1,5 @@
|
|||||||
obsidian_vault=/home/venus/Documents/Personal-Wiki
|
obsidian_vault=/home/venus/Documents/Personal-Wiki
|
||||||
obsidian_vault_url=https://git.riverrooks.dev/Personal-Wiki
|
obsidian_vault_url=git.riverrooks.dev/Personal-Wiki
|
||||||
|
OBSIDIAN_VAULT_URL=git.riverrooks.dev/Personal-Wiki
|
||||||
obsidian_vault_token=bd8cd9301ae2c1c5bacfb3340492acb5e862686a
|
obsidian_vault_token=bd8cd9301ae2c1c5bacfb3340492acb5e862686a
|
||||||
|
|
||||||
|
|||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1 +1,5 @@
|
|||||||
app/__pychache__
|
app/__pychache__
|
||||||
|
public-vault
|
||||||
|
compose.yml
|
||||||
|
content/
|
||||||
|
public-vault/
|
||||||
|
|||||||
23
Dockerfile
23
Dockerfile
@@ -1,13 +1,26 @@
|
|||||||
FROM python:3.14-slim
|
FROM python:3.14-slim
|
||||||
|
|
||||||
ARG DEBUG_MODE=0
|
#install git
|
||||||
ENV FLASK_DEBUG=$DEBUG_MODE
|
RUN apt-get update && apt-get install -y \
|
||||||
ENV FLASK_APP=app
|
git \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
RUN mkdir /app
|
#install dependencies
|
||||||
|
RUN mkdir /app
|
||||||
COPY app/requirements.txt /app
|
COPY app/requirements.txt /app
|
||||||
RUN pip3 install -r /app/requirements.txt
|
RUN pip3 install -r /app/requirements.txt
|
||||||
|
|
||||||
|
#parse from .env file
|
||||||
|
ARG DEBUG_MODE=0
|
||||||
|
ARG obsidian_vault=/home/venus/Documents/Personal-Wiki
|
||||||
|
ARG OBSIDIAN_VAULT_URL=git.riverrooks.dev/venus/Personal-Wiki
|
||||||
|
ARG obsidian_vault_token=bd8cd9301ae2c1c5bacfb3340492acb5e862686a
|
||||||
|
|
||||||
|
ENV FLASK_DEBUG=$DEBUG_MODE
|
||||||
|
ENV FLASK_APP=app
|
||||||
|
# ENV OBSIDIAN_VAULT=$obsidian_vault
|
||||||
|
ENV OBSIDIAN_VAULT_URL=$OBSIDIAN_VAULT_URL
|
||||||
|
ENV OBSIDIAN_VAULT_TOKEN=$obsidian_vault_token
|
||||||
|
|
||||||
COPY app /app
|
COPY app /app
|
||||||
|
|
||||||
ENTRYPOINT ["flask"]
|
ENTRYPOINT ["flask"]
|
||||||
|
|||||||
@@ -2,22 +2,28 @@ from flask import Flask
|
|||||||
from app import build
|
from app import build
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import markdown
|
import markdown
|
||||||
|
import os
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
CONTENT_DIR = Path("/content")
|
PRIVATE_VAULT_DIR = Path("/vault")
|
||||||
|
PUBLIC_VAULT_DIR = "/content"
|
||||||
|
|
||||||
|
build.obsidian_vault(PRIVATE_VAULT_DIR) # initialize the private obsidian repo
|
||||||
|
build.public_vault(PRIVATE_VAULT_DIR, PUBLIC_VAULT_DIR) # initialize the public notes from the private repo
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
def index():
|
def index():
|
||||||
# Write your markdown content
|
|
||||||
md_content = "# Welcome to my blog!\nThis is rendered from **Markdown**.\n##[test](http://localhost/test)"
|
md_content = "# Welcome to my blog!\nThis is rendered from **Markdown**.\n##[test](http://localhost/test)"
|
||||||
# Convert it to HTML
|
|
||||||
html_content = markdown.markdown(md_content)
|
html_content = markdown.markdown(md_content)
|
||||||
return html_content
|
return build.html_file("index.md", PUBLIC_VAULT_DIR)
|
||||||
|
@app.route("/api/vault-update", methods=['POST', 'GET']) #webhook for vault updated
|
||||||
@app.route ("/<filename>")
|
def update_vault():
|
||||||
|
# TODO SECURE THIS WITH SECRETTTTT or auth header
|
||||||
|
build.obsidian_vault(PRIVATE_VAULT_DIR) # initialize the private obsidian repo
|
||||||
|
build.public_vault(PRIVATE_VAULT_DIR, PUBLIC_VAULT_DIR)# initialize the public notes from the private repo
|
||||||
|
return "vault-rebuilt"
|
||||||
|
@app.route ("/<filename>") # renders a filename if not otherwise specified
|
||||||
def render_post(filename):
|
def render_post(filename):
|
||||||
return build.render_file(filename, CONTENT_DIR)
|
return build.html_file(filename, PUBLIC_VAULT_DIR)
|
||||||
# return "test"
|
|
||||||
|
|
||||||
# return rm(filename)
|
|
||||||
|
|||||||
61
app/build.py
61
app/build.py
@@ -2,10 +2,11 @@ from obsidian_parser import Vault
|
|||||||
import shutil
|
import shutil
|
||||||
import markdown
|
import markdown
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
def render_file(filename: str, contentPath: Path): #renders markwown from filename
|
def html_file(filename, contentPath): #renders markwown from filename
|
||||||
filePath = contentPath / f"{filename}.md"
|
filePath = Path(f"{contentPath}/{filename}.md")
|
||||||
# 3. Protect against missing files
|
# 3. Protect against missing files
|
||||||
if not filePath.is_file():
|
if not filePath.is_file():
|
||||||
return f"<h1>404</h1><p>Could not find {filename}.md in {filePath}</p>", 404
|
return f"<h1>404</h1><p>Could not find {filename}.md in {filePath}</p>", 404
|
||||||
@@ -16,24 +17,46 @@ def render_file(filename: str, contentPath: Path): #renders markwown from filena
|
|||||||
htmlContent = markdown.markdown(textContent)
|
htmlContent = markdown.markdown(textContent)
|
||||||
return htmlContent
|
return htmlContent
|
||||||
|
|
||||||
print("build imported")
|
|
||||||
# def clone_gittea_repo(url: str, token: str = "", dest: str): # clone a gittea repo using optional security token into dest dirand return a path to the directory
|
|
||||||
# return dest
|
|
||||||
|
|
||||||
# def public_notes(src: str): # return a list of notes tagged with public from an obsidian directory
|
def obsidian_vault(dest = "/vault"): # makes sure there is a vault in dest
|
||||||
# # build vault from source
|
from git import Repo
|
||||||
# vault = Vault(src)
|
url = os.getenv("OBSIDIAN_VAULT_URL")
|
||||||
# if vault:
|
token = os.getenv("OBSIDIAN_VAULT_TOKEN")
|
||||||
# print ("found vault")
|
if not(token):
|
||||||
# else:
|
print ("token not found, cant build vault")
|
||||||
# print("could not find vault")
|
raise NameError("tokenNotFound")
|
||||||
# return []
|
return 0
|
||||||
|
|
||||||
# # return a list ofnotes
|
url = f"https://{token}@{url}"
|
||||||
# return vault.get_notes_with_tag("public")
|
|
||||||
|
|
||||||
|
if os.path.exists(os.path.join(dest, '.git')):
|
||||||
|
#TODO handle merge conflictsjjj
|
||||||
|
print (f"pulling vault from {url} in {dest}")
|
||||||
|
repo = Repo(dest)
|
||||||
|
origin = repo.remotes.origin
|
||||||
|
origin.fetch()
|
||||||
|
origin.pull(strategy_option='theirs')
|
||||||
|
print ("vault updated")
|
||||||
|
return 1
|
||||||
|
|
||||||
# def buld_public_vault(src: str, dest: str): # build the public vault in dest from an obsidian repo in src
|
print (f"building vault from {url} in {dest}")
|
||||||
# for note in public_notes(src):
|
Repo.clone_from(url, dest)
|
||||||
# print(note.title)
|
print("cloned vault!")
|
||||||
# shutil.copy2(f"{note.path}", dest)
|
return 1
|
||||||
|
|
||||||
|
def public_vault(privateVault = "/vault", dest = "/content"): # build the public vault in dest from an obsidian repo in src
|
||||||
|
#TODO delete old documents
|
||||||
|
vault = Vault(privateVault)
|
||||||
|
if not(vault):
|
||||||
|
print("could not find vault")
|
||||||
|
raise NameError("vaultNotFound")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
print(f"valid vault{vault}")
|
||||||
|
|
||||||
|
publicNotes = vault.get_notes_with_tag("public")
|
||||||
|
|
||||||
|
print(f"publicNotes: {publicNotes}")
|
||||||
|
for note in publicNotes:
|
||||||
|
print(note.title)
|
||||||
|
shutil.copy2(f"{note.path}", dest)
|
||||||
|
|||||||
@@ -2,4 +2,4 @@ flask
|
|||||||
markdown
|
markdown
|
||||||
obsidianmd-parser
|
obsidianmd-parser
|
||||||
GitPython
|
GitPython
|
||||||
py-gitea
|
python-dotenv
|
||||||
|
|||||||
26
compose.yml
26
compose.yml
@@ -1,14 +1,24 @@
|
|||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
|
container_name: blog
|
||||||
build:
|
build:
|
||||||
args:
|
args:
|
||||||
- DEBUG_MODE=1
|
- DEBUG_MODE=1
|
||||||
ports:
|
- obsidian_vault_url=https://git.riverrooks.dev/Personal-Wiki
|
||||||
- '80:80'
|
- obsidian_vault_token=${VAULT_TOKEN}
|
||||||
volumes:
|
volumes:
|
||||||
- ./content:/content
|
- ./content:/content #public
|
||||||
# public_vault_builder:
|
- ./public-vault:/vault #private
|
||||||
# build:
|
labels:
|
||||||
# context: public_vault_builder
|
- "traefik.enable=true"
|
||||||
# volumes:
|
- "traefik.http.routers.blog.rule=Host(`riverrooks.dev`)"
|
||||||
# - ./public_vault:/content
|
- "traefik.http.routers.blog.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.blog.tls.certresolver=myresolver"
|
||||||
|
- "traefik.http.services.blog.loadbalancer.server.port=80"
|
||||||
|
- "traefik.docker.network=traefik"
|
||||||
|
networks:
|
||||||
|
- traefik
|
||||||
|
|
||||||
|
networks:
|
||||||
|
traefik:
|
||||||
|
external: true
|
||||||
|
|||||||
171
content/AWK cheatsheet.md
Normal file
171
content/AWK cheatsheet.md
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- AI
|
||||||
|
- notes
|
||||||
|
- coding-notes
|
||||||
|
- docs
|
||||||
|
- public
|
||||||
|
---
|
||||||
|
### 1. Basic Syntax
|
||||||
|
|
||||||
|
The standard structure of an `awk` command:
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk [options] 'BEGIN { initialization } pattern { action } END { finalization }' file
|
||||||
|
```
|
||||||
|
commands
|
||||||
|
- **`BEGIN { ... }`**: Runs _once_ before the first line is read. Great for setting variables or printing headers.
|
||||||
|
|
||||||
|
- **`pattern`**: A condition (regex or math) that must be met for the action to run.
|
||||||
|
|
||||||
|
- **`{ action }`**: The command(s) executed on each line that matches the pattern.
|
||||||
|
|
||||||
|
- **`END { ... }`**: Runs _once_ after the last line is processed. Great for printing totals or summaries.
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. Common Command-Line Flags
|
||||||
|
|
||||||
|
|**Flag**|**Description**|**Example**|
|
||||||
|
|---|---|---|
|
||||||
|
|`-F`|Defines the field separator (default is space/tab)|`awk -F"," '{print $1}' file.csv`|
|
||||||
|
|`-v`|Assigns an external variable to use inside AWK|`awk -v max=100 '$1 > max' file`|
|
||||||
|
|`-f`|Reads AWK commands from a script file|`awk -f script.awk input.txt`|
|
||||||
|
|`-i inplace`|Edits the file in place (requires GNU awk)|`gawk -i inplace '{print $1}' file`|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. Built-in Variables
|
||||||
|
|
||||||
|
|**Variable**|**Meaning**|**Example Use Case**|
|
||||||
|
|---|---|---|
|
||||||
|
|`$0`|The entire current line|`print $0`|
|
||||||
|
|`$1, $n`|The 1st, 2nd... _n_th field (column)|`print $2, $4`|
|
||||||
|
|`NR`|Number of Records (Current line number)|`NR > 1` (Skip headers)|
|
||||||
|
|`NF`|Number of Fields (Total columns in current line)|`print $NF` (Print the last column)|
|
||||||
|
|`FS`|Input Field Separator (Same as `-F`)|`BEGIN { FS=":" }`|
|
||||||
|
|`OFS`|Output Field Separator|`BEGIN { OFS="," }`|
|
||||||
|
|`RS`|Input Record Separator (Default: newline)|`BEGIN { RS="" }` (Paragraph mode)|
|
||||||
|
|`ORS`|Output Record Separator (Default: newline)|`BEGIN { ORS="\n\n" }` (Double space)|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. Operators & Conditionals
|
||||||
|
|
||||||
|
**Relational & Logical Operators:**
|
||||||
|
|
||||||
|
- `==`, `!=`, `<`, `>`, `<=`, `>=` (Standard math comparisons)
|
||||||
|
|
||||||
|
- `~` (Matches regular expression)
|
||||||
|
|
||||||
|
- `!~` (Does not match regular expression)
|
||||||
|
|
||||||
|
- `&&` (AND), `||` (OR), `!` (NOT)
|
||||||
|
|
||||||
|
|
||||||
|
**Control Structures (used inside action blocks):**
|
||||||
|
|
||||||
|
```
|
||||||
|
# If/Else Statement
|
||||||
|
{ if ($1 > 50) print "Pass"; else print "Fail" }
|
||||||
|
|
||||||
|
# For Loop
|
||||||
|
{ for (i=1; i<=NF; i++) print $i }
|
||||||
|
|
||||||
|
# While Loop
|
||||||
|
{ i=1; while (i<=NF) { print $i; i++ } }
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. Essential Built-in Functions
|
||||||
|
|
||||||
|
|**Function**|**Description**|**Example**|
|
||||||
|
|---|---|---|
|
||||||
|
|`length(str)`|Returns the length of a string|`length($0) > 80`|
|
||||||
|
|`tolower(str)`|Converts string to lowercase|`print tolower($1)`|
|
||||||
|
|`toupper(str)`|Converts string to uppercase|`print toupper($1)`|
|
||||||
|
|`substr(s,p,l)`|Extracts substring from _s_ starting at _p_ with length _l_|`print substr($1, 1, 3)`|
|
||||||
|
|`gsub(r,s,t)`|Globally replaces regex _r_ with string _s_ in target _t_|`gsub(/apple/, "orange", $0)`|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 6. Handy Everyday One-Liners
|
||||||
|
|
||||||
|
**Printing & Filtering:**
|
||||||
|
|
||||||
|
- **Print the last column of every line:**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk '{ print $NF }' file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Print lines longer than 80 characters:**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk 'length($0) > 80' file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Print lines matching "Error" or "Warning":**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk '/Error|Warning/' file.log
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
**Math & Summaries:**
|
||||||
|
|
||||||
|
- **Sum the values in the first column:**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk '{ sum += $1 } END { print sum }' numbers.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Calculate the average of the first column:**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk '{ sum += $1 } END { print sum / NR }' numbers.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Count the number of empty lines:**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk '/^$/ { count++ } END { print count }' file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
**Text Manipulation:**
|
||||||
|
|
||||||
|
- **Remove duplicate consecutive lines (simulates `uniq`):**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk 'a != $0; { a = $0 }' file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Number each line (simulates `cat -n`):**
|
||||||
|
|
||||||
|
Bash
|
||||||
|
|
||||||
|
```
|
||||||
|
awk '{ print NR, $0 }' file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
42
content/C++.md
Normal file
42
content/C++.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- code
|
||||||
|
- notes
|
||||||
|
- docs
|
||||||
|
- School
|
||||||
|
- coding-notes
|
||||||
|
- CS-101
|
||||||
|
- public
|
||||||
|
---
|
||||||
|
# overview
|
||||||
|
OOP language
|
||||||
|
C code runs *almost* unchanged from C
|
||||||
|
```embed
|
||||||
|
title: "cplusplus.com"
|
||||||
|
image: "https://cplusplus.com/favicon.ico"
|
||||||
|
description: ""
|
||||||
|
url: "https://cplusplus.com/"
|
||||||
|
favicon: ""
|
||||||
|
```
|
||||||
|
```embed
|
||||||
|
title: "W3Schools.com"
|
||||||
|
image: "https://www.w3schools.com/images/w3schools_logo_436_2.png"
|
||||||
|
description: "W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more."
|
||||||
|
url: "https://www.w3schools.com/cpp/cpp_intro.asp"
|
||||||
|
favicon: ""
|
||||||
|
aspectRatio: "52.293577981651374"
|
||||||
|
```
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
#include <iostream>
|
||||||
|
#include <stdexcept
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
class Vector{
|
||||||
|
private:
|
||||||
|
T* data:
|
||||||
|
size_t sz;
|
||||||
|
size_t cap;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
$\approx$
|
||||||
15
content/Capture The Flag.md
Normal file
15
content/Capture The Flag.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#public
|
||||||
|
|
||||||
|
all non-osint CTF challenges can be solved through recursive steps until a flag is found
|
||||||
|
# 1. Explore
|
||||||
|
Analyze any data in plain text for a flag, or for the next command to run such as the results of a program.
|
||||||
|
>`cat problem.txt`
|
||||||
|
> `xxd -d asdasd238uasdkh`
|
||||||
|
> `curl challenge.org/asd`
|
||||||
|
|
||||||
|
Either solve the challenge with the flag, or determine the next program to execute
|
||||||
|
# 2 replicate
|
||||||
|
Build an isolated environment to replicate only the next program, and solve that step locally
|
||||||
|
# 3 Inject
|
||||||
|
Inject the payload that works on in the isolated environment
|
||||||
|
repeat Step 1
|
||||||
76
content/Cyber-Crime.md
Normal file
76
content/Cyber-Crime.md
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
#public
|
||||||
|
- **Cyber Crime**: Use computer/digital device to further illegal ends
|
||||||
|
> "nothings black and white in what we do, everything's got some gray"
|
||||||
|
# Types of crime
|
||||||
|
- **Crimes Against People**: A digital crime where the victim is a person
|
||||||
|
- **Crimes Against Property**: A digital crime that damages, or illegally interacts with property
|
||||||
|
- **Crimes Against Government**: A digital crime to undermine the efficacy of a government
|
||||||
|
> Life is not Black and White, Consider what the greatest impact is
|
||||||
|
|
||||||
|
| Crime | category |
|
||||||
|
| --- | --- |
|
||||||
|
| Harrassement | People |
|
||||||
|
| Stalking | People |
|
||||||
|
| Credit Card fraud | People |
|
||||||
|
| Id theft | People |
|
||||||
|
| DOS attack | Property |
|
||||||
|
| Hacking | Property |
|
||||||
|
| Vandalism | Property |
|
||||||
|
| Cyber Warfare | Government|
|
||||||
|
| Cyber Terrorism | Government|
|
||||||
|
|
||||||
|
> Online Harassment is a growing field, stalking, bullying, doxing, etc.
|
||||||
|
|
||||||
|
> Modern wars be started with infrastructure hacks, Power grid hacks of Ukraine, Iran, Etc.
|
||||||
|
|
||||||
|
### Cyber-stalking and bullying
|
||||||
|
- **Cyber Bulling**: People attacking reputation and self esteem of other people trough online means like social media campaigns.
|
||||||
|
- **Cyber Stalking**: Stalking someone through their online footprint. Often to find information with which to exploit the victim.
|
||||||
|
> Typically older person stalking a younger person. As opposed to bullying, which is usually across the same age
|
||||||
|
### Cyber Terrorism
|
||||||
|
- **Cyber Terrorism**: Politically motivated attacks on major infrastructure Money can be a factor, but usually the political is the primary motivation
|
||||||
|
- Instill fear in a society to elicit some reaction
|
||||||
|
- financial/reputation gain
|
||||||
|
- revenge
|
||||||
|
- etc.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
Stux-Net
|
||||||
|
Nation-state attacks on power grids before Wars
|
||||||
|
|
||||||
|
- **Sneaker Net**: Moving information across barriers physicality
|
||||||
|
> proving an attack is one of the hardest questions to answer
|
||||||
|
# U.S. National cyber strategy
|
||||||
|
- **U.S. National cyber strategy**: annually updated policy document from the white house detailing the national cyber objectives
|
||||||
|
|
||||||
|
> it has been similar last few years
|
||||||
|
|
||||||
|
- promote American people
|
||||||
|
- promoting American prosperity
|
||||||
|
- preserve peace through strength
|
||||||
|
- deterrent
|
||||||
|
- advanced American cyber influence
|
||||||
|
- strong alliances
|
||||||
|
- promote international policies
|
||||||
|
- Shaping adversary behavior
|
||||||
|
- regulatory environment
|
||||||
|
- Federal government security
|
||||||
|
- critical infrastructure security
|
||||||
|
- cyber skills workforce gap
|
||||||
|
|
||||||
|
> How can you deter people outside of your country and laws? [[attack back]]
|
||||||
|
> number of cyber jobs in US is increasing faster than the rate of new PHD grads
|
||||||
|
|
||||||
|
# Identity Theft
|
||||||
|
- **Identity Theft**: Unlawful use of another's [Personally Identifiable Information][Definitiona/Personally Identifiable Information]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
8
content/Discord ICS.md
Normal file
8
content/Discord ICS.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
People submit week-at-a-galnce screenshots, or some form of their calendar.
|
||||||
|
Turn that into an ICS
|
||||||
|
Plugin discord bot that recognizes
|
||||||
|
>/schedule @p1 @p2
|
||||||
|
|
||||||
|
And finds available times to select. Then sends dm to users, emails them, and optional creates discord event
|
||||||
|
|
||||||
|
#public
|
||||||
45
content/Formulas.md
Normal file
45
content/Formulas.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#public
|
||||||
|
# Work and energy
|
||||||
|
| Formula | equation | Usage |
|
||||||
|
| -------------------------------------- | ----------------------------------------------- | ----------------------------------- |
|
||||||
|
| Gravitational Potential Energy ($U_g$) | $U_g=mgh$ | Changes in height |
|
||||||
|
| Kinetic Energy | $K=\frac{1}{2}mv^2$ | Energy of motion |
|
||||||
|
| Work-Energy Theorem | $\Delta E_{mec} = \Delta K+\Delta U=W_{other}*$ | calculating the effects of friction |
|
||||||
|
|
||||||
|
|
||||||
|
| Variable | Symbol | SI Unit | Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| Mass | m | kg | Convert from grams (g) if necessary. |
|
||||||
|
| Height / Distance | h,d | m | Measures vertical or horizontal displacement. |
|
||||||
|
| Velocity / Speed | v | m/s | Convert from km/h by dividing by 3.6.+3 |
|
||||||
|
| Gravity | g | m/s2 | Earth's standard is approximately 9.8 m/s2. |
|
||||||
|
| Energy / Work | $U_g$,K,W | J | 1 Joule = 1 kg⋅m2/s2. |
|
||||||
|
|
||||||
|
# Center Of Mass (CM)
|
||||||
|
| Formula | equation | Usage |
|
||||||
|
| -------------------------------------- | ----------------------------------------------- | ----------------------------------- |
|
||||||
|
| Position of COM X| $x_{com}=\frac{1}{M}\sum_{i=1}^{n}M_ix_i$ | find COM X|
|
||||||
|
| Position of COM Y| $y_{com}=\frac{1}{M}\sum_{i=1}^{n}M_iy_i$ | find COM Y|
|
||||||
|
| velocity of COM | $v_{com}=\frac{\sum m_iv_i}{M}$ | find the Velocity of COM |
|
||||||
|
|
||||||
|
| Variable | Symbol | SI Unit | Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| Position (X or Y) | $x_{com},y_{com}$ | m | Coordinates on the Cartesian plane.+ 1|
|
||||||
|
| Total Mass | M | kg | The sum of all individual masses (m1+m2+…) |
|
||||||
|
| Velocity of CM | vcom | m/s | The speed at which the entire system's balance point moves |
|
||||||
|
# Linear Momentum and impulse
|
||||||
|
| Formula | equation | Usage |
|
||||||
|
| -------------------------------------- | ----------------------------------------------- | ----------------------------------- |
|
||||||
|
| Linear Momentum | p = mv | find linear momentum |
|
||||||
|
| Impulse | $J=\Delta p=F_{avg}\Delta t=\int F(t)dt$ | change in momentum. Also area under Force-time graph |
|
||||||
|
| Conservation Law | $P_{initial}=P_{final}$ | if net external force is 0, totoal momentum is constant |
|
||||||
|
| Elastic Collisions (1D) | $v_{1f}=(\frac{m_1-m_2}{m_1+m_2})v_i+(\frac{2m_2}{m_1+m_2})v_2i$| momentum and kinetic energy are conserved |
|
||||||
|
| completely inelastic collisions | $m_1v_{1i}+m_2v_{2i}=(m_1+m_2)v_f$ | find situation where the objects stick together |
|
||||||
|
|
||||||
|
|
||||||
|
| Variable | Symbol | SI Unit | Notes |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| Momentum | p | kg⋅m/s | Calculated as mass × velocity. |
|
||||||
|
| Impulse | J | N⋅s | Also equivalent to kg⋅m/ s.|
|
||||||
|
| Force | F | N | 1 Newton = 1 kg⋅m/s2.+2 |
|
||||||
|
| Time | t,$\Delta$t | s | The duration of the force application.+1|
|
||||||
79
content/Homework.md
Normal file
79
content/Homework.md
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#public
|
||||||
|
# Homework
|
||||||
|
|
||||||
|
Questions (P7.)
|
||||||
|
1. a
|
||||||
|
1. A. True
|
||||||
|
2. B. Order does not matter in sets
|
||||||
|
2. MISSISSIPPI
|
||||||
|
3.
|
||||||
|
1. $\subseteq$
|
||||||
|
2. $\in$
|
||||||
|
3. $\subseteq$
|
||||||
|
4. $\in$
|
||||||
|
5. $\in$ x wrong $\emptyset$ is a $\subseteq$ of all sets
|
||||||
|
6. $\subseteq$
|
||||||
|
4. 9.
|
||||||
|
1. a) $\{S_4, S_5, S_9\}$
|
||||||
|
2. b) **??**
|
||||||
|
3. c) quadrillion
|
||||||
|
4. d)
|
||||||
|
1. F
|
||||||
|
2. T (if order does not matter)
|
||||||
|
3. T
|
||||||
|
4. F
|
||||||
|
5. T
|
||||||
|
6. T
|
||||||
|
7. F
|
||||||
|
8. F
|
||||||
|
9. F
|
||||||
|
10. T
|
||||||
|
11. F
|
||||||
|
12. F
|
||||||
|
13. T
|
||||||
|
14. F
|
||||||
|
15. T
|
||||||
|
16. T
|
||||||
|
5. 10.
|
||||||
|
1. $D_1=\{1\}, D_2=\{1,2\}, D_{10}=\{1,2,5\}$
|
||||||
|
2. b)
|
||||||
|
1. T
|
||||||
|
2. F
|
||||||
|
3. T
|
||||||
|
4. T
|
||||||
|
5. T?
|
||||||
|
6. F
|
||||||
|
7. T
|
||||||
|
8. F
|
||||||
|
9. F
|
||||||
|
10. F
|
||||||
|
11. F
|
||||||
|
12. T
|
||||||
|
3. c) $|D_{10}|=3$, $|D_{19}|=2$
|
||||||
|
4. D) $|\mathcal{D}|=9$
|
||||||
|
|
||||||
|
|
||||||
|
| Questions | Answer |
|
||||||
|
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
|
||||||
|
| 1. <br> 1. (a) True or false? {red, white, blue} = {white, blue, red}. <br> 2. (b) What is wrong with this statement: Red is the first element of the set {red, white, blue}? | a. True<br>b. Order does not matter in sets |
|
||||||
|
| 2. Which has the larger cardinality? The set of letters in the word MISSISSIPPI or the set of letters in the word FLORIDA ? | MISSIPPI |
|
||||||
|
| 3. Fill in the blank with the appropriate symbol, ∈ or ⊆. <br> 1. (a) {1, 2, 3} {1, 2, 3, 4} <br> 2. (b) 3 {1, 2, 3, 4} <br> 3. (c) {3} {1, 2, 3, 4} <br> 4. (d) {𝑎} {{𝑎}, {𝑏}, {𝑎, 𝑏}} <br> 5. (e) ∅ {{𝑎}, {𝑏}, {𝑎, 𝑏}} <br> 6. (f) {{𝑎}, {𝑏}} {{𝑎}, {𝑏}, {𝑎, 𝑏}} | |
|
||||||
|
| 9. Let 𝑆1 = {𝑜, 𝑛, 𝑒}, 𝑆2 = {𝑡, 𝑤, 𝑜}, 𝑆3 = {𝑡, ℎ, 𝑟, 𝑒, 𝑒}, and so on. <br> 1. (a) Find all 𝑘 ∈ {1, 2, . . . , 10} with \|𝑆𝑘\| = 4. <br> 2. (b) Find distinct indices 𝑗, 𝑘 ∈ ℕ with 𝑆𝑗 = 𝑆𝑘. <br> 3. (c) Find the smallest value of 𝑘 ∈ ℕ with 𝑎 ∈ 𝑆𝑘. <br> 4. (d) Let 𝒮 = {𝑆𝑘}40 𝑘=1. Determine whether the following statements are true or false. <br> 1. (i) 𝑆13 = {𝑛, 𝑒, 𝑖, 𝑡, ℎ, 𝑒, 𝑟} <br> 2. (ii) {𝑛, 𝑒, 𝑡} ⊆ 𝑆20 <br> 3. (iii) 𝑆1 ∈ 𝒮 <br> 4. (iv) 𝑆3 ⊆ 𝒮 <br> 5. (v) ∅ ∈ 𝒮 <br> 6. (vi) ∅ ⊂ 𝒮 <br> 7. (vii) ∅ ⊆ 𝒮 <br> 8. (viii) 𝑆1 ⊆ 𝑆11 <br> 9. (ix) 𝑆1 ⊆ 𝑆21 <br> 10. (x) 𝑆1 ⊂ 𝑆21<br> 11. (xi) {𝑛, 𝑖, 𝑒} ∈ 𝒮 <br> 12. (xii) {{𝑓, 𝑜, 𝑢, 𝑟}} ⊆ 𝒮 <br> 13. (xiii) 𝑢 ∈ 𝑆40 <br> 14. (xiv) 𝒫(𝑆9) ⊆ 𝒫(𝑆19) <br> 15. (xv) {𝑠, 𝑖} ∈ 𝒫(𝑆6) <br> 16. (xvi) 𝑤 ∈ 𝒫(𝑆2) | |
|
||||||
|
| 10. For 𝑘 ∈ {1, 2, . . . , 20}, let 𝐷𝑘 = {𝑥 ∣ 𝑥 is a prime number which divides 𝑘} and let 𝒟 = {𝐷𝑘 ∣ 𝑘 ∈ {1, 2, . . . , 20}}.<br> 1. (a) Find 𝐷1, 𝐷2, 𝐷10, and 𝐷20. <br> 2. (b) True or False: <br> 1. (i) 𝐷2 ⊂ 𝐷10 <br> 2. (ii) 𝐷7 ⊆ 𝐷10 <br> 3. (iii) 𝐷10 ⊂ 𝐷20 <br> 4. (iv) ∅ ∈ 𝒟 <br> 5. (v) ∅ ⊂ 𝒟 <br> 6. (vi) 5 ∈ 𝒟 <br> 7. (vii) {5} ∈ 𝒟 <br> 8. (viii) {4, 5} ∈ 𝒟 <br> 9. (ix) {{3}} ⊆ 𝒟 <br> 10. (x) 𝒫(𝐷9) ⊆ 𝒫(𝐷6) <br> 11. (xi) 𝒫({3, 4}) ⊆ 𝒟 <br> 12. (xii) {2, 3} ∈ 𝒫(𝐷12) <br> 3. (c) Find \|𝐷10\| and \|𝐷19\|. <br> 4. (d) Find \|𝒟\| | |
|
||||||
|
# Unit 1
|
||||||
|
## Krish Hw 2
|
||||||
|
1. A = {1, 2, 3}, B = {2, 3, 4} and C = {1, 2, 4}. List the elements of the specified set
|
||||||
|
1. (a) A ∩ B; | {2,3}
|
||||||
|
2. (b) A ∪ B; | {1,2,3,4}
|
||||||
|
3. (c) C\A; | {1}
|
||||||
|
4. (d) A ∪ (B ∩ C); | {2,1,3}
|
||||||
|
5. (e) (A ∩ C) ∪ (B ∩ C); | {1,2,4}
|
||||||
|
6. (f) A × B; | {(1,2),(1,3),(1,4),(2,3),(2,2),(2,4),(3,2),(3,3),(3,4)}
|
||||||
|
7. (g) B × A; | {(2,1),(2,2),(2,3),(3,1),(3,2),(3,3),(4,1),(4,2) ,(4,3)}
|
||||||
|
8. (h) (A × B) ∩ (B × A). | {(2,2),(3,3)}
|
||||||
|
2. $M_2$ = {2, 4, 6, 8, 10, · · · } and $M_3$ = {3, 6, 9, 12, 15, · · · }. Find:
|
||||||
|
1. (a) $M_2$ ∩ $M_3$;
|
||||||
|
1. $M_6$
|
||||||
|
2. (b) $M_3 \backslash M_2$
|
||||||
|
1. $\{x|x=6k-3 \space\forall\space k \in\mathbb{N}\}$
|
||||||
|
|
||||||
9
content/Index.md
Normal file
9
content/Index.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- public
|
||||||
|
---
|
||||||
|
# River Rooks.dev
|
||||||
|
## Home for all of my creations ... eventually
|
||||||
|
# Check out my notes
|
||||||
|
|
||||||
|
# See [my git server](https://git.riverrooks.dev/venus) for all of my projects and dotfiles
|
||||||
57
content/Malware and cybersecurity.md
Normal file
57
content/Malware and cybersecurity.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
#public
|
||||||
|
## Malware
|
||||||
|
Malicious software:
|
||||||
|
> Software written to Do [[Harm]]
|
||||||
|
## Harm
|
||||||
|
- Devices
|
||||||
|
- Data
|
||||||
|
- Alter
|
||||||
|
- Modify
|
||||||
|
- Delete
|
||||||
|
- Corruption
|
||||||
|
# Limit Access To Information
|
||||||
|
## Privacy
|
||||||
|
Limit the amount you permit to be shared
|
||||||
|
### Healthcare
|
||||||
|
I don't want public access to my info
|
||||||
|
Choose certain info to release or not
|
||||||
|
A trip to a crisis center is private
|
||||||
|
### Personally Identifiable Information (PII)
|
||||||
|
- Info that points Directly to you
|
||||||
|
- Protect as Cyber Prof.
|
||||||
|
|
||||||
|
## CIA Triad
|
||||||
|
### Confidentiality
|
||||||
|
Keep data hidden from those who should not access it
|
||||||
|
- Encryption
|
||||||
|
- People who can see it, can't understand if there not supposed to
|
||||||
|
- Hiding Existence
|
||||||
|
Not the same as [[Malware and cybersecurity#Privacy|Privacy]]
|
||||||
|
**Keep those who don't have access from having access**
|
||||||
|
### Integrity
|
||||||
|
Ensuring that Data and System Resources are trustworthy.
|
||||||
|
Eliminate unauthorized tampering
|
||||||
|
Eliminate accidental or malicious modifications.
|
||||||
|
Examples:
|
||||||
|
Financial Records
|
||||||
|
Medical Records
|
||||||
|
Can be more important than Confidentiality.
|
||||||
|
Banking must be accurate, may be public
|
||||||
|
#### 3 Categories of integrity
|
||||||
|
##### Data Integrity
|
||||||
|
Ensuring that the data is trustworthy
|
||||||
|
##### Origin Integrity
|
||||||
|
Understanding the author and verifying the source
|
||||||
|
The author created data and it has not been changed
|
||||||
|
##### System Integrity
|
||||||
|
Securing the processes that modify the data
|
||||||
|
Eliminate Accidental, deliberate, or malicious modifications of data through systems controlling that data
|
||||||
|
### Availability
|
||||||
|
Dealing with systems and data being available for use when needed
|
||||||
|
|
||||||
|
## Secrecy
|
||||||
|
Information that should not be disclosed outside of an in-group
|
||||||
|
`Maximum Secrecy = Minimun Availability`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
310
content/Malware.md
Normal file
310
content/Malware.md
Normal file
@@ -0,0 +1,310 @@
|
|||||||
|
#public
|
||||||
|
# Malware/malicious software
|
||||||
|
- **Malware**: software written with intent to do HARM
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[Data] <---> B[People]
|
||||||
|
A <---> C[Devices]
|
||||||
|
B <---> C
|
||||||
|
```
|
||||||
|
> Greatest Vulnerability is People
|
||||||
|
## Malware types
|
||||||
|
- **Worm**: program that spreads itself
|
||||||
|
> diff b/t virus and worm is method of movement
|
||||||
|
- **Ransomware**: require payment to remove (often in exchange for decryption key)
|
||||||
|
- **Phishing**: Faking identity in order to build trust to encourage specific user behavior
|
||||||
|
- **DOS/DDOS**: (distributed) denial of service to overwhelm services and prevent legitimate activity from getting through
|
||||||
|
## Virus
|
||||||
|
- **Virus:** program to modify other programs
|
||||||
|
### Trojan
|
||||||
|
- **Trojan**: an innocent program that hides malware inside
|
||||||
|
looks benign and can be anything from a bad link to a malicious PDF file.
|
||||||
|
Can contain any kind of other malware such as
|
||||||
|
- key loggers
|
||||||
|
- webcams
|
||||||
|
### Examples
|
||||||
|
#### I love you
|
||||||
|
[wiki](https://en.wikipedia.org/wiki/ILOVEYOU)
|
||||||
|
- $10 billion in damages,
|
||||||
|
- 10% of worldwide competition
|
||||||
|
- attacked other computers after spreading
|
||||||
|
> at it's height, a third of the worlds computers were infected
|
||||||
|
|
||||||
|
|
||||||
|
# Threat Actors
|
||||||
|
| Group | Motivations |
|
||||||
|
| ---------------- | -------------------------------------------------------- |
|
||||||
|
| Nation States | Intelligence Infrastructure |
|
||||||
|
| Groups of people | Intimidate, org-goals |
|
||||||
|
| Individuals | ego, \$\$\$, etc |
|
||||||
|
| Insider Threats | Those inside of an organization who abuse trusted access |
|
||||||
|
>Insider Threats are the Greatest challenge in cyber-sec
|
||||||
|
|
||||||
|
> There is an upward trend in the amount of malware and damage done in USD. 5 month avg for identifying breaches
|
||||||
|
|
||||||
|
# CIA TRIAD
|
||||||
|
```mermaid
|
||||||
|
flowchart TD
|
||||||
|
A[Confidentiality] <---> B[Integrity]
|
||||||
|
A <---> C[Accessibility]
|
||||||
|
B <---> C
|
||||||
|
````
|
||||||
|
True security manages all 3, our job is to find the right balance
|
||||||
|
## CONFIDENTIALITY
|
||||||
|
Ensuring that only authorized users can access data
|
||||||
|
### 3 Types of confidentiality
|
||||||
|
| type | definition | exampe | |
|
||||||
|
| --------------- | -------------------------------------------------------------------------- | ------------------------- | --- |
|
||||||
|
| Confidentiality | limiting access to information including the existence of such information | "What conversation" | |
|
||||||
|
| Privacy | Limit the information shared | Not giving away PII | |
|
||||||
|
| Secrecy | Data not to be shared beyond small circle | Restricting access to PII | |
|
||||||
|
- **PII**: personally identifiable information
|
||||||
|
## INTEGRITY
|
||||||
|
Ensure data and system resources are trustworthy
|
||||||
|
Trustworthy: known author, not maliciously modified
|
||||||
|
|
||||||
|
| Catagory | definition |
|
||||||
|
| --- | --- |
|
||||||
|
| Data integrity | Data has not been modified or overwritten |
|
||||||
|
| Origin Integrity | maintaining the authorship and chain of editors |
|
||||||
|
| System integrity | overall design of processes that work with data |
|
||||||
|
> While confidentiality is often considered the "Traditional" focus of security, Integrity can be considred just as important
|
||||||
|
## AVAILABILITY
|
||||||
|
Authorized users can access data and systems when needed.
|
||||||
|
Confilicts directly with Confidentiality, this balance is our job.
|
||||||
|
DDOS/DOS attacks affect availibility.
|
||||||
|
> "If one person can have access, many have access"
|
||||||
|
|
||||||
|
# What is security?
|
||||||
|
> Just fire-walling/encrypting your system $\neq$ security
|
||||||
|
|
||||||
|
**Security is a systems issue**, good security is a heuristic endeavor encompassing the following questions:
|
||||||
|
1. What are we protecting?
|
||||||
|
2. What can go wrong?
|
||||||
|
3. What are we going to do about it?
|
||||||
|
4. Did we do a good job?
|
||||||
|
|
||||||
|
You need to deal with policy and procedure. E.G. talking to non-tech savvy people or encouraging more scrutiny of strange emails
|
||||||
|
|
||||||
|
- **Forensics:** determine what was done when
|
||||||
|
```mermaid
|
||||||
|
mindmap
|
||||||
|
id))system((
|
||||||
|
id(Hardware(
|
||||||
|
id(Software(
|
||||||
|
id)networking(
|
||||||
|
|
||||||
|
```
|
||||||
|
# The Five As
|
||||||
|
| [[Malware#Authentication]] | Verification of a user's Identity | static password |
|
||||||
|
| ------------------------ | -------------------------------------------- | ------------------------- |
|
||||||
|
| Access control | control who is allowed access to something | ACT card |
|
||||||
|
| [[Malware#Accounting]] | keeping track of activity | logs of command history |
|
||||||
|
| [[Malware#Auditing]] | checking for suspicious behavior or failures | log analysis |
|
||||||
|
| Action | taking action on a threat | changing a users password |
|
||||||
|
|
||||||
|
|
||||||
|
## Authentication
|
||||||
|
> How do we know who you say you are? j do we know you're authorized?
|
||||||
|
### 3 mechanism of authentication:
|
||||||
|
| something you **know** | Static username and passwd |
|
||||||
|
| ---------------------- | -------------------------------------------------------------------- |
|
||||||
|
| something you **have** | one time password (OTP) --> usually **2nd device** as authentication |
|
||||||
|
| something you **are** | Biometric credential |
|
||||||
|
|
||||||
|
## Accounting
|
||||||
|
- cant have $\infty$ storage, so what do you keep?
|
||||||
|
## Auditing
|
||||||
|
You need to know your system is compromised if you're taksed to protect it.
|
||||||
|
"Did something happen?"
|
||||||
|
This is looking at logs created and making policies to take action of some kind
|
||||||
|
you also need to determine the action to take
|
||||||
|
# measures and countermeasures
|
||||||
|
| prevention | measures to **stop breaches** | Gaurd at the gate, strong authentication policy | |
|
||||||
|
| ---------- | --------------------------------- | ----------------------------------------------- | --- |
|
||||||
|
| detection | measures to **detect breaches** | beggining, ongoing, or afterwords | |
|
||||||
|
| Reaction | measures to **recover of assets** | Rebuild, Repair, Pursue | |
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart TB
|
||||||
|
id1[Passwords are easy to guess] --> id2[Password policies] --> id3[Users write down passwds] --> id4[etc]
|
||||||
|
|
||||||
|
```
|
||||||
|
# Insider threats
|
||||||
|
- **Threat**: An event of condition that has the potential to cause loss or undesirable consequences
|
||||||
|
- **Insider Threat**: threat caused by someone inside of the organization
|
||||||
|
- Disgruntled employee
|
||||||
|
- Careless employee
|
||||||
|
|
||||||
|
| |IT sabatoge| Theft of IP | Fraud | Espionage |
|
||||||
|
| --- | --- | --- | --- | --- |
|
||||||
|
| WHO | techinal/priveleged access | scientists, programmers, engineers, sales | fincacial pros, low/mid developers, customer service | anybody |
|
||||||
|
| WHEN | on/before termination | ~60 days b4 leaving | Long period of time | long period of time |
|
||||||
|
| WHY | revenge | new job, start company | Greed, financial need | dissatisfaction, greed, financial need |
|
||||||
|
|
||||||
|
## Identifying Insider Threats:
|
||||||
|
- Who has the most access?
|
||||||
|
> Don't assume sysadmin is the villan, just be aware of their access level
|
||||||
|
- become the insider. "Think like the attacker"
|
||||||
|
- most employees dont join to become insiders
|
||||||
|
## Lifecycle of an insider
|
||||||
|
1. Recruitment/tipping point
|
||||||
|
2. Search/Reconnisance
|
||||||
|
3. Acquisition/collection
|
||||||
|
4. Exfiltration/Action
|
||||||
|
|
||||||
|
# Threat Modeling
|
||||||
|
> The equifax breach exploited a known vulnerability that equifax didn't patch for months. $1.4 Billion in damages
|
||||||
|
## The fundamental security problem
|
||||||
|
There are more attacks than can be reasonably stopped with limited time/money
|
||||||
|
## Why threat model
|
||||||
|
- Proactive vs Reactive
|
||||||
|
- Prioritization
|
||||||
|
- Systematic approach
|
||||||
|
- Find problem's you'd otherwise miss
|
||||||
|
- Legal compliance
|
||||||
|
## The cost of a vulnerability
|
||||||
|
![[Diagram 2.svg]]
|
||||||
|
## What is threat modeling?
|
||||||
|
A structured process to identify, quantify, and address security risks in a system or process
|
||||||
|
## Key Questions
|
||||||
|
1. What are we protecting
|
||||||
|
2. What can go wrong
|
||||||
|
3. What are we going to do about it
|
||||||
|
4. did we do a good job
|
||||||
|
## Steps
|
||||||
|
### 1. define scopes and assets
|
||||||
|
### 2. Create architecture diagram
|
||||||
|
- Data flow
|
||||||
|
- Network diagram
|
||||||
|
- Component diagram
|
||||||
|
- Trust breakdown diagram
|
||||||
|
### 3. Identify threats
|
||||||
|
| S | spoofing Identity |
|
||||||
|
| --- | --- |
|
||||||
|
| T | Tampering with data |
|
||||||
|
| R | Repudation |
|
||||||
|
| I | Information disclosure |
|
||||||
|
| D | Denial of servie |
|
||||||
|
| E | Escalation of privelege |
|
||||||
|
> [[Malware#CIA Triad]]
|
||||||
|
|
||||||
|
### 4. Rank and prioritize threats
|
||||||
|
|
||||||
|
#### DREAD
|
||||||
|
on a scale of 1 - 10
|
||||||
|
Risk = (D+R+E+A+D)/5
|
||||||
|
|
||||||
|
| D | Damage potential |
|
||||||
|
| --- | --- |
|
||||||
|
| R | Reproducability |
|
||||||
|
| E | Exploitability |
|
||||||
|
| A | Affected Users |
|
||||||
|
| D | Discoverability |
|
||||||
|
|
||||||
|
Ex: Mybama SQLI
|
||||||
|
|
||||||
|
| D | 10 |
|
||||||
|
| --- | --- |
|
||||||
|
| R | 10 |
|
||||||
|
| E | 7 |
|
||||||
|
| A | 10 |
|
||||||
|
| D | 8 |
|
||||||
|
R 9 = (10 + 10 + 7 + 10 + 8) / 5
|
||||||
|
9 is a **Critical threat**
|
||||||
|
#### Impact/likelyhood table
|
||||||
|
|
||||||
|
| likelyhood | low | med | high |
|
||||||
|
| ---------- | --- | --- | ---- |
|
||||||
|
| low | 1 | 2 | 3 |
|
||||||
|
| med | 2 | 4 | 6 |
|
||||||
|
| high | 3 | 6 | 9 |
|
||||||
|
|
||||||
|
| < 3 | < 6 | 9 |
|
||||||
|
| --- | --- |---|
|
||||||
|
| low, fix when possible | Vulnerable. Fix ASAP | HUGE PROBLEM |
|
||||||
|
|
||||||
|
### 5. Determine Mitigation
|
||||||
|
1. **Eliminate**: remove the vuln --> unused admin page
|
||||||
|
2. **Mitigate**: Reduce likelihood of attack --> Sanitize SQL inputs
|
||||||
|
3. **Transfer**: Move to somewhere else --> send it to your SSO
|
||||||
|
4. **Accept**: It's good enough --> password logins (using microsoft)
|
||||||
|
|
||||||
|
## Why it works:
|
||||||
|
1. Systematic, not random
|
||||||
|
2. Visual
|
||||||
|
3. Collaborative
|
||||||
|
4. Proactive
|
||||||
|
5. Prioritized
|
||||||
|
6. Documented
|
||||||
|
|
||||||
|
# Encryption
|
||||||
|
## Symmetric V. Asymmetric
|
||||||
|
- **Symmetric encryption**: Uses a single key
|
||||||
|
- **Asymmetric encryption**: Uses two keys
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
stateDiagram-v2
|
||||||
|
|
||||||
|
state symmetric{
|
||||||
|
plaintext
|
||||||
|
}
|
||||||
|
state asymmetric{
|
||||||
|
text
|
||||||
|
key
|
||||||
|
}
|
||||||
|
text --> encryption
|
||||||
|
key --> encryption
|
||||||
|
encryption --> cyphertext
|
||||||
|
plaintext --> encryption
|
||||||
|
cyphertext --> decryption
|
||||||
|
decryption --> Plaintext
|
||||||
|
|
||||||
|
```
|
||||||
|
### Asymmetric key encryption
|
||||||
|
> Asymmetric has 2 keys and is more computationally expensive
|
||||||
|
|
||||||
|
takes 2 keys, and runs the encryption algo on the combined input
|
||||||
|
1 is the private key, one is the public
|
||||||
|
how do you securely send the keys?
|
||||||
|
### Symmetric key encryption
|
||||||
|
Cheaper, older and more common
|
||||||
|
> Block cipher
|
||||||
|
- **DES**: Data Encryption Standard
|
||||||
|
- Oldest standard
|
||||||
|
- originally labbeled by NIST
|
||||||
|
- **AES**: Advanced Encryption Standard
|
||||||
|
- updated DES, more computationally signifigant for modern computing
|
||||||
|
- **3DES**: 3 Data Encryption Standard
|
||||||
|
- does DES 3 times
|
||||||
|
- **TLS**: Transport Layer security
|
||||||
|
- for high level web traffic
|
||||||
|
- **SSL**: Secure Socket layer
|
||||||
|
- for secure communication between machine
|
||||||
|
## Feistel block cipher
|
||||||
|
Takes initial input, splits in half, encrypts left half, and switches. Repeats
|
||||||
|
The key is used in encryption through a reversable algorithm.
|
||||||
|
![[Pasted image 20260217083518.png]]
|
||||||
|
|
||||||
|
## Diffie Heiman Key exchange
|
||||||
|
Symmetric means you have to pass around the key,
|
||||||
|
Asymmetric is computationally expensive
|
||||||
|
Diffie-Heiman is a solution
|
||||||
|
1. Publish your public key
|
||||||
|
2. Send hash function with any work you then publish
|
||||||
|
3. Your public key can be used to verify integrety of any published work
|
||||||
|
3a. verifying file downloads
|
||||||
|
3b. git commits
|
||||||
|
You can aslo force 1-way encryption with a block cipher so:
|
||||||
|
data --> hash
|
||||||
|
but not:
|
||||||
|
hash --> data
|
||||||
|
any slight change of input, dramatically changes output (Avalance effect)
|
||||||
|
> since encryption methods take any size and hash it to a fixed size, collisions are possible. Furthermore, Collisions are going to be vastly different inputs
|
||||||
|
|
||||||
|
## Hash functions
|
||||||
|
- Md5
|
||||||
|
- Sha1
|
||||||
|
- Sha3
|
||||||
|
- Sha256
|
||||||
|
- RSA
|
||||||
157
content/Unit 1 Sets and Logic.md
Normal file
157
content/Unit 1 Sets and Logic.md
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- Math-301
|
||||||
|
- Math
|
||||||
|
- School
|
||||||
|
- notes
|
||||||
|
- Spring-25
|
||||||
|
- public
|
||||||
|
Slides: "[[Wed 1-7.pdf]]"
|
||||||
|
Topic: Sets and Logic
|
||||||
|
Unit: 1.1 - 1.6
|
||||||
|
---
|
||||||
|
# 1.1 Basic definitions
|
||||||
|
A set is a collection of objects. The objects in a set are called its elements or members.
|
||||||
|
> Let A={a,b,c}.
|
||||||
|
> $a\in A$ -- means *a* is an element of *A*
|
||||||
|
> $d \notin A$ -- means *d* is not an element of *A*
|
||||||
|
|
||||||
|
**Def**. the [[Cardinality]] of a finite set `S`, demoted `|S|`. is the number of elements in `S`.
|
||||||
|
In the example, `|A| = 3`.
|
||||||
|
|
||||||
|
### Notation for some sets of numbers
|
||||||
|
> Natural numbers: $\mathbb{N}$ = {1,2,3,...}
|
||||||
|
> Whole Numbers: $\mathbb{W}$ = {0,1,2,3,...}
|
||||||
|
> The set of integers: $\mathbb{Z}$ = {...-3,-2,-1,0,1,2,3,} = {0,1,-1,2,-2,3,-3...}
|
||||||
|
> Rational Numbers: $\mathbb{Q}$ = $\{\frac{a}{b}\vert a,b\in\mathbb{Z},b\neq0\}$
|
||||||
|
> Set of real numbers: $\mathbb{R}$
|
||||||
|
---
|
||||||
|
## 2 subsets
|
||||||
|
|
||||||
|
- Let *A* and *B* be sets. We say that *B* is a [[subset]] of *A*, if every element of *B* is also an element of *A*, denoted $B\subseteq A$
|
||||||
|
- Two sets are [[equal]], denoted $A = B$, if $A\subseteq B$ and $B\subseteq A$
|
||||||
|
>Ex. Let *A* = $\{x\vert x\in\mathbb{Z}\hspace{7px}and\hspace{7px}0\lt x\lt6\}$.
|
||||||
|
>We see that $A=\{1,2,3,4,5\}$.
|
||||||
|
>Note: $1\in A, 4\in A$, but $6\notin A$.
|
||||||
|
>$\{1,3,5\}\subseteq A,\{2\}\subseteq A$, but $\{2\}\notin A$
|
||||||
|
>{2,4,6}$\subsetneq A$ since $6 \notin A$
|
||||||
|
>|A| = 5.
|
||||||
|
>Ex. $\mathbb{N}\subseteq \mathbb{W} \subseteq \mathbb{Z} \subseteq \mathbb{Q} \subseteq \mathbb{R}$
|
||||||
|
|
||||||
|
[[Proper subset]]: $B\subset A$ if $B\subseteq A$ and $B\neq A$
|
||||||
|
|
||||||
|
### Intervals of $\mathbb{R}$
|
||||||
|
> (a,b) = {x$\in \mathbb{R}$ | a < x < b}, where $-\infty\le a \le b \le\infty$
|
||||||
|
> \[a,b] = {x$\in \mathbb{R}$ | a $\le$ x $\le$ b}, where $-\infty\lt a \le b \lt\infty$
|
||||||
|
> \[a,b) = \{x$\in \mathbb{R}$ | a $\le$ x < b}, where $-\infty\lt a \lt b \le\infty$
|
||||||
|
> \(a,b] = \{x$\in \mathbb{R}$ | a $\lt$ x $\le$ b}, where $-\infty\le a \lt b \lt\infty$
|
||||||
|
|
||||||
|
## 3. Collections of Sets
|
||||||
|
The elements of a set may themselves be sets, and so is is a collections of sets
|
||||||
|
> Ex. $\mathcal{C}$ = { {1}, {1, 2}, {1, 2, 3} }. Note that
|
||||||
|
> {1} $\in \mathcal{C}$, {1,2} $\notin\mathcal{C}$, {1,2,3} $\in\mathcal{C}$ **??**
|
||||||
|
> {1} $\subsetneq\mathcal{C}$ since $1\notin\mathcal{C}$
|
||||||
|
> {{1}, {1,2}} $\subseteq\mathcal{C}$
|
||||||
|
> {{1}, {1,2}} $\notin\mathcal{C}$.
|
||||||
|
|
||||||
|
### Indexed Collection of Sets
|
||||||
|
Let `I` be a set. Suppose $S_i$ is a set for each `i` $\in$ `I`.
|
||||||
|
Then we say that $\{S_i\}_{i\in I}$ = $\{S_i|i\in I\}$ Is called a [[collection of sets indexed]] by `I`.
|
||||||
|
> Ex. Let $S_n$ = (n-1, n) for each $n\in\mathbb{N}$. Then
|
||||||
|
> $\{S_n\}_{n=1}^{3}$ = {$S_1,S_2,S_3$} = $\{(0,1), (1,2), (2,3)\}$
|
||||||
|
> $\{S_n\}_{n\in\mathbb{N}}$ = $\{(0,1), (1,2), (2,3),...\}$
|
||||||
|
|
||||||
|
## 4. The Empty Set
|
||||||
|
Let `E` be a set with no elements. Then for any Set `A`, we have `E`$\subseteq$`A` [[(Vacuously True)]].
|
||||||
|
If `E'` is another set with no elements, then `E`$\subseteq$`E'` `E'`$\subseteq$`E`
|
||||||
|
So `E`=`E'` Therefore, there is a unique set with no elements. We call it the [[empty set]], denoted by $\emptyset$ = {}.
|
||||||
|
**Property: For every set `A`, $\emptyset\subseteq$`A`.**
|
||||||
|
|
||||||
|
## 5. The Power Set of a Set
|
||||||
|
the [[power set]] of a set `S` is the collection of all subsets of `S` and is denoted $\wp(S)$.
|
||||||
|
> $\wp(S) = \{A | A \subseteq S\}$.
|
||||||
|
|
||||||
|
>Ex. Let $A$ = $\{a,b,c\}$. Then
|
||||||
|
>$\wp(A)\{\emptyset\,\{a\},\{b\},\{c\},\{a,b\},\{a,c\},\{b,c\},\{a,b,c\}\}$
|
||||||
|
>Note: |$\wp(A)$ = 8 = $2^3$ = $2^{|A|}$.
|
||||||
|
|
||||||
|
## 6. Summarizing example
|
||||||
|
Consider the set:
|
||||||
|
> $S = \{1,2,\emptyset,\{a,b\}\}$. Then
|
||||||
|
> $2\in S, 2\subsetneq S$
|
||||||
|
> ${2}\notin S, 2\subseteq S$
|
||||||
|
> > $\emptyset, 2\subsetneq S$
|
||||||
|
|
||||||
|
|
||||||
|
# 1.2 Set Operations
|
||||||
|
## 1 Intersections and Unions
|
||||||
|
>Let `A` and `B` be sets. The [[Intersection]] of `A` and `B` is the set.
|
||||||
|
>$A\cap B$ {X | x $\in$ A and x $\in$ B}
|
||||||
|
>![[Pasted image 20260114205835.png]]
|
||||||
|
|
||||||
|
The [[Union]] of `A` and `B` is the set
|
||||||
|
> $A \cup B$ = {x | $\in$ a A or x $\in$ B } ## "Or" is the "Inclusive or"
|
||||||
|
> ![[Pasted image 20260114210548.png]]
|
||||||
|
|
||||||
|
> Ex. Let `A`={0,2,4,6,8}, `B`={0,3,6,9}, and C={1,2,3,4,5,6,8,9}. Then
|
||||||
|
> (a) $A\cap B$ = {0,6}
|
||||||
|
> (b) $A\cup B = \{0,2,4,6,8,3,9\}=\{0,2,3,4,6,8,9\}$
|
||||||
|
> (c) $B\cap C$ = {3}
|
||||||
|
> (d) $A\cup(B\cap C) = \{0,2,3,4,6,8\}$
|
||||||
|
> (e) $(A\cup B)\cap C = \{2,3,4\}$
|
||||||
|
> Note: $A\cup(B\cap C)\neq(A\cup B)\cap C$
|
||||||
|
|
||||||
|
**Def. We say that two sets A and B and [[disjoint]] if $A\cap B=\emptyset$**
|
||||||
|
![[Pasted image 20260115174934.png]]
|
||||||
|
> **Theorem. Let `A` and `B` be finite sets.**
|
||||||
|
> (a) $|A\cup B|=|A|+|B|-|A\cup B|$
|
||||||
|
> ![[Pasted image 20260115175142.png]]
|
||||||
|
> (b) if `A` and `B` and disjoint then $|A\cup B| = |A| + |B|$
|
||||||
|
> ![[Pasted image 20260115175132.png]]
|
||||||
|
> (c) If $A\subseteq B, then |A|\leq|B|$
|
||||||
|
## 2 Arbitrary Collections
|
||||||
|
Let $\mathcal{C}=\{S_i|i\in I\}$ be a collection of sets indexed by a set `I` (Assume $I\neq0$.) Then the [[Intersection]] of $\mathcal{C}$ is defined as
|
||||||
|
> $\cap\mathcal{C}=\cap_{i\in I} S_i=\{x|x\in S_i$ for all $i\in I\}$.
|
||||||
|
|
||||||
|
The [[Union]] of the collection $\mathcal{C}$ is the set
|
||||||
|
>$\cup\mathcal{C}=$ $\cup_{i\in I}S_i=\{x|x\in S_i$ for at least one $i\in I\}$
|
||||||
|
|
||||||
|
For a finite collection of sets indeed by $I=\{1,2 ... , n\}$
|
||||||
|
we often write the intersection and unions of $\mathcal{C}=\{S_1,S_2, ... ,S_n\}$ as
|
||||||
|
> $\cap_{i=1}^n S_i = S_1\cap S_2\cap S_3\cap ... \cap S_n$
|
||||||
|
> $\cup_{i\in I}^n S_i=S_1\cup S_2\cup ... \cup S_n$
|
||||||
|
|
||||||
|
Def. Let $\{\S_i|i\in I\}$ be an indexed collection of sets.
|
||||||
|
> (a) The collection is [[Mutually disjoint]] if for all $i,j\in I$, if $S_i\neq S_j, then S_I =\cap S_j\space\emptyset$
|
||||||
|
> Equivalently: for all $i,j\in I$, $S_i=S_j\space or\space S_i\cap S_j=\emptyset$
|
||||||
|
> (b) The collection is [[nested]] if for all $i,j\in I$, $S_i\subseteq S_j$ or $S_j\subseteq S_i$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$S=\{x\in\mathbb{W}|x\notin M_{5}, x\in M_3\}$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
> $B_n$ = $\{x\in\mathbb{R}\space\vert\space |x| < n\}$
|
||||||
|
|
||||||
|
$B_1$ = (-1,1)
|
||||||
|
$B_2$ = (-2,2)
|
||||||
|
$B_3$ =(-3, 3)
|
||||||
|
|
||||||
|
|
||||||
|
> [!note] incluse vs exclusion
|
||||||
|
$[-1,1]\neq (-1,1)$ where $n=\mathbb{R}$
|
||||||
|
let $A$ = $(-1,1)$
|
||||||
|
let $B$ = $[-1,1]$
|
||||||
|
$A\subseteq B$
|
||||||
|
$A\neq B$
|
||||||
|
|
||||||
|
| Q | P | A |
|
||||||
|
| ------------------ | ---------------------- | ------------------ |
|
||||||
|
| Mutually disjoint? | $B_n\subseteq B_{n+1}$ | False |
|
||||||
|
| Nested?<br> | $B_n\subseteq B_{n+1}$ | True |
|
||||||
|
| Intersect | $B\cap B_n$ | $B_1$ |
|
||||||
|
| Union<br> | $B\cup B_n$ | $(-\infty,\infty)$ |
|
||||||
82
content/Website Tutorial.md
Normal file
82
content/Website Tutorial.md
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
---
|
||||||
|
tags:
|
||||||
|
- public
|
||||||
|
- notes
|
||||||
|
- tutorial
|
||||||
|
- code
|
||||||
|
- project
|
||||||
|
- blog
|
||||||
|
---
|
||||||
|
# So you need a website
|
||||||
|
## Overview
|
||||||
|
1. How do websites work
|
||||||
|
2. 3 things that you need
|
||||||
|
3. What are your options
|
||||||
|
1. Premium
|
||||||
|
2. Custom
|
||||||
|
3. DIY
|
||||||
|
1. Registering a domain
|
||||||
|
1. What is DNS
|
||||||
|
2. Picking a domain
|
||||||
|
3. setting up a registrar
|
||||||
|
2. Building a frontend
|
||||||
|
1. Chat GPT
|
||||||
|
2. DeepSite
|
||||||
|
3. DIY options
|
||||||
|
4. UX and frontend resources
|
||||||
|
3. Setting up GH pages
|
||||||
|
1. GH account
|
||||||
|
2. Set up New Repo
|
||||||
|
3. Importing Code
|
||||||
|
4. Setting the DNS
|
||||||
|
## how do websites work
|
||||||
|
There are 3 main elements of the internet: your computer, the website's code, and the path between the two.
|
||||||
|
You can download [this page]() and open it in your computer. Notice how your browser's address doesn't say "Https://%url%" but instead shows a file location on your own machine.
|
||||||
|
The internet is the same phenomenon, but between multiple computers. URL, (the technical name for a link, or website address) simply stands for Universal Resource Locator and is just a way of telling your computer how to access a file on someone else's computer.*
|
||||||
|
There are lots of complicated standards for how computers actually talk to each other. The most relevant here is DNS, which stands for Domain Name System. It is how we assign internet-connected computers (called servers) with human readable names. There are special DNS servers which are responsible for telling your computer where in the world a specific website is stored.
|
||||||
|
A URL, a frontend, and server to host it are all that you need to create a website. I will explain how to simply and affordably (or even for free) set up each of these elements.
|
||||||
|
|
||||||
|
*url's can end in [.pdf](example), [.jpg](example), or other file extensions. Just like files on your computer.*
|
||||||
|
## What do you need
|
||||||
|
### A URL
|
||||||
|
Simply a link that is going to point to your website. You can buy one from a domain registrar and configure it in just a few minutes.
|
||||||
|
### A Website file to display
|
||||||
|
This is what people will see when they visit your website.
|
||||||
|
### A computer to display it on
|
||||||
|
There are myriad ways to accomplish this from renting a server from someone, to putting on in your house, to taking advantage of already free web hosting tools. I'm going to show you how to use GitHub's* free hosting service
|
||||||
|
|
||||||
|
*GitHub is owned by Microsoft and is the largest code distribution and hosting service. Most companies and developers rely on it's services daily.*
|
||||||
|
|
||||||
|
## Getting A Domain
|
||||||
|
The process of registering a domain takes only a few minutes, and a couple of steps.
|
||||||
|
|
||||||
|
There are a number of websites that control who has access to websites, and which servers they point to. They are all basically the same. I've picked out [namecheap](https://namecheap.com) for this tutorial.
|
||||||
|
|
||||||
|
To register a domain just head over to their site, find a domain that you want, and purchase it. Watch out for these:
|
||||||
|
1. First year prices are often discounted. Watch for a renewal rate.
|
||||||
|
2. Save your password somewhere. You will hopefully have this website for a long time, and you may have someone else manage it for you eventually.
|
||||||
|
3. Marketable domains are often short and easy to spell. Imagine verbally telling someone how to visit the website.
|
||||||
|
|
||||||
|
Make sure to verify your email and save your login information, as we will be needing to log back in shortly.
|
||||||
|
|
||||||
|
### Building a frontend
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3
content/odo-test.md
Normal file
3
content/odo-test.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#public
|
||||||
|
this is a doc
|
||||||
|
# Md rendered to html
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# This is a test
|
|
||||||
and this is p
|
|
||||||
*italics*
|
|
||||||
Reference in New Issue
Block a user