<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>tplat</title>
    <link>/</link>
    <description>Recent content on tplat</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Creating Attack Trees</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/creating-attack-trees/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/creating-attack-trees/</guid>
      <description>&lt;h1 id=&#34;creating-attack-trees&#34;&gt;Creating Attack Trees&lt;a class=&#34;anchor&#34; href=&#34;#creating-attack-trees&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Creating attack trees helps structure your thinking about threats.&lt;/p&gt;&#xA;&lt;h2 id=&#34;core-steps&#34;&gt;Core Steps&lt;a class=&#34;anchor&#34; href=&#34;#core-steps&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Decide on a representation&lt;/li&gt;&#xA;&lt;li&gt;Create a root node&lt;/li&gt;&#xA;&lt;li&gt;Create subnodes&lt;/li&gt;&#xA;&lt;li&gt;Consider completeness&lt;/li&gt;&#xA;&lt;li&gt;Prune the tree&lt;/li&gt;&#xA;&lt;li&gt;Check presentation&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-decide-on-a-representation&#34;&gt;1. Decide on a Representation&lt;a class=&#34;anchor&#34; href=&#34;#1-decide-on-a-representation&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Choose:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;OR tree (most common)&lt;/strong&gt;: any child achieves the parent&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;AND tree&lt;/strong&gt;: all children required&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Also decide:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Graphical vs outline format&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;2-create-a-root-node&#34;&gt;2. Create a Root Node&lt;a class=&#34;anchor&#34; href=&#34;#2-create-a-root-node&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Two common approaches:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Attacker goal&lt;/strong&gt; (recommended)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;System component&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Best practice:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data Flow Diagrams</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/data-flow-diagrams/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/data-flow-diagrams/</guid>
      <description>&lt;h1 id=&#34;data-flow-diagrams&#34;&gt;Data Flow Diagrams&lt;a class=&#34;anchor&#34; href=&#34;#data-flow-diagrams&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Data flow models are often the most effective way to perform threat modeling because security issues tend to follow &lt;strong&gt;data flow&lt;/strong&gt;, not control flow. They can be applied to both networked systems and standalone software.&lt;/p&gt;&#xA;&lt;p&gt;A Data Flow Diagram (DFD) is a structured representation of how data moves through a system. DFDs model:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Processes&lt;/strong&gt; (running code)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data stores&lt;/strong&gt; (where data is held)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data flows&lt;/strong&gt; (communication paths)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;External entities&lt;/strong&gt; (outside the system boundary)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;../dfd.png&#34; alt=&#34;A modern DFD&#34; /&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Distributions</title>
      <link>/docs/projects_linux_linux.output/distributions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_linux_linux.output/distributions/</guid>
      <description>&lt;h1 id=&#34;distributions&#34;&gt;Distributions&lt;a class=&#34;anchor&#34; href=&#34;#distributions&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;A Linux distribution (distro) is an operating system built on the Linux kernel, bundled with userland tools, package management, and system utilities.&lt;/p&gt;&#xA;&lt;p&gt;There are 600+ distributions, typically differentiated by:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Package management systems (e.g., APT, DNF, Pacman)&lt;/li&gt;&#xA;&lt;li&gt;Default toolchains and utilities&lt;/li&gt;&#xA;&lt;li&gt;Desktop environments / UI&lt;/li&gt;&#xA;&lt;li&gt;Target use case (desktop, server, embedded, security)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;popular-distributions&#34;&gt;Popular Distributions&lt;a class=&#34;anchor&#34; href=&#34;#popular-distributions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;general-purpose&#34;&gt;General Purpose&lt;a class=&#34;anchor&#34; href=&#34;#general-purpose&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ubuntu — beginner-friendly, strong desktop ecosystem&lt;/li&gt;&#xA;&lt;li&gt;Fedora — modern packages, upstream-focused&lt;/li&gt;&#xA;&lt;li&gt;Debian — stability-focused&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;enterprise&#34;&gt;Enterprise&lt;a class=&#34;anchor&#34; href=&#34;#enterprise&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Red Hat Enterprise Linux — commercial support, enterprise standard&lt;/li&gt;&#xA;&lt;li&gt;CentOS — RHEL-compatible (community-driven variants)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;security--offensive-tooling&#34;&gt;Security / Offensive Tooling&lt;a class=&#34;anchor&#34; href=&#34;#security--offensive-tooling&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Kali Linux — extensive preinstalled security tools&lt;/li&gt;&#xA;&lt;li&gt;Parrot OS — security, privacy, development focus&lt;/li&gt;&#xA;&lt;li&gt;BlackArch — large penetration testing toolkit&lt;/li&gt;&#xA;&lt;li&gt;Pentoo — Gentoo-based security distro&lt;/li&gt;&#xA;&lt;li&gt;BackBox — Ubuntu-based security distro&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;specialized--other&#34;&gt;Specialized / Other&lt;a class=&#34;anchor&#34; href=&#34;#specialized--other&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Raspberry Pi OS — optimized for ARM devices&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;focus-debian&#34;&gt;Focus: Debian&lt;a class=&#34;anchor&#34; href=&#34;#focus-debian&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;anchor&#34; href=&#34;#overview&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Debian is a widely adopted distribution known for &lt;strong&gt;stability&lt;/strong&gt;, &lt;strong&gt;reliability&lt;/strong&gt;, and &lt;strong&gt;strict free software principles&lt;/strong&gt;. It is commonly used across:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Focusing on Assets</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_approaches_approaches.output/focusing-on-assets/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_approaches_approaches.output/focusing-on-assets/</guid>
      <description>&lt;h1 id=&#34;focusing-on-assets&#34;&gt;Focusing on Assets&lt;a class=&#34;anchor&#34; href=&#34;#focusing-on-assets&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;An asset-focused approach to threat modeling-centering on “things of value&amp;quot; seems intuitive but is often less effective than expected.&lt;/p&gt;&#xA;&lt;h2 id=&#34;method&#34;&gt;Method&lt;a class=&#34;anchor&#34; href=&#34;#method&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;identify assets;&lt;/li&gt;&#xA;&lt;li&gt;map them to systems;&lt;/li&gt;&#xA;&lt;li&gt;model interactions;&lt;/li&gt;&#xA;&lt;li&gt;analyse threats.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;limitations&#34;&gt;Limitations&lt;a class=&#34;anchor&#34; href=&#34;#limitations&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Definition ambiguity:&lt;/strong&gt; “Assets” can mean three overlapping things:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Things attackers want (e.g., passwords, financial data)&lt;/li&gt;&#xA;&lt;li&gt;Things you want to protect (often intangible, like reputation)&lt;/li&gt;&#xA;&lt;li&gt;Stepping stones to other assets (e.g., systems that provide access)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;venn-beta&#xA;  title &amp;#34;The overlapping definitions of assets&amp;#34;&#xA;  set A[&amp;#34;Things you protect&amp;#34;]&#xA;  set B[&amp;#34;Stepping stones&amp;#34;]&#xA;  set C[&amp;#34;Things attackers want&amp;#34;]&#xA;  union A,B,C&#xA;  union A,B&#xA;  union B,C&#xA;  union A,C&lt;/pre&gt;&lt;p&gt;Teams often lack a shared definition, leading to confusion or unproductive discussions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foundational</title>
      <link>/docs/projects_cryptography_docs_docs.output/foundational/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_cryptography_docs_docs.output/foundational/</guid>
      <description>&lt;h1 id=&#34;foundational&#34;&gt;Foundational&lt;a class=&#34;anchor&#34; href=&#34;#foundational&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Cryptography&lt;/strong&gt; is the practice and study of techniques for securing communication in the presence of adversaries. The primary goal is to &lt;strong&gt;conceal a message&lt;/strong&gt; so that only intended recipients can understand it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;on-security&#34;&gt;On Security&lt;a class=&#34;anchor&#34; href=&#34;#on-security&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;The &lt;strong&gt;principles of information security&lt;/strong&gt; provide a framework for protecting data. &lt;strong&gt;Confidentiality&lt;/strong&gt; ensures that information is only accessible to authorized users, for example, encrypting emails so only the intended recipient can read them. &lt;strong&gt;Integrity&lt;/strong&gt; guarantees that data is accurate and unaltered, such as using a checksum to verify a downloaded file has not been tampered with. &lt;strong&gt;Availability&lt;/strong&gt; ensures that information and systems are accessible when needed, like maintaining redundant servers so a website remains online during outages. &lt;strong&gt;Authentication&lt;/strong&gt; confirms the identity of users or systems, for instance, requiring a username and password before accessing an account. &lt;strong&gt;Non-repudiation&lt;/strong&gt; prevents parties from denying their actions, such as using digital signatures to prove the sender authored a document.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Foundational</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/foundational/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/foundational/</guid>
      <description>&lt;h1 id=&#34;foundational&#34;&gt;Foundational&lt;a class=&#34;anchor&#34; href=&#34;#foundational&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Everybody threat models. For example, when you leave your parked car you lock the door and hide your valuables. This decision is derived from a subconcious action of threat modelling whereby you consider where your car is parked and what threats it may face (i.e., somebody breaking in). When your car is parked in secure garage, you might not think it necessary to hide your valuables. But when your car is parked on a secluded street in a sketchy part of town, your threat model is probably different and, thus, so is the precautions that you take.&lt;/p&gt;</description>
    </item>
    <item>
      <title>If $n$ is even, then $n^2$ is even</title>
      <link>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/projects_math_docs_pure_proofs_proofs.output/if-n-is-even-then-n2-is-even/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/projects_math_docs_pure_proofs_proofs.output/if-n-is-even-then-n2-is-even/</guid>
      <description>&lt;h1 id=&#34;if--is-even-then--is-even&#34;&gt;If $n$ is even, then $n^2$ is even&lt;a class=&#34;anchor&#34; href=&#34;#if--is-even-then--is-even&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Claim:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If $n$ is even, then $n^2$ is even.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Proof:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Assume $n$ is even. Then, by definition, there exists an integer $k$ such that:&lt;/p&gt;&#xA;$$&#xA;n=2k&#xA;$$&lt;p&gt;Then:&lt;/p&gt;&#xA;$$&#xA;n^2=(2k)^2&#xA;=4k^2&#xA;=2(2k)^2&#xA;$$&lt;p&gt;Since $2k^2$ is an integer, $n^2$ is divisible by $2$. Therefore, by direct example, $n^2$ is even.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Claim:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If $n^2$ is even, then $n$ is even.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Proof:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Assume $n$ is odd. Then, by definition, there exists integer $k$ such that:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remote Photoplethysmography</title>
      <link>/docs/projects_research_research.output/remote-photoplethysmography/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_research_research.output/remote-photoplethysmography/</guid>
      <description>&lt;h1 id=&#34;remote-photoplethysmography&#34;&gt;Remote Photoplethysmography&lt;a class=&#34;anchor&#34; href=&#34;#remote-photoplethysmography&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;../thesis.pdf&#34;&gt;DepthPhys: Near-Infrared Remote Photoplethysmography in Driver Monitoring Systems&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Subtle variations in the body can be used to detect underlying physiological signals from&#xA;camera video data. Existing research in this space is largely focused on extracting physiological signals from traditional two-dimensional planar video data. This project explores how the addition of depth data may be used to augment the results of these approaches. In particular, a novel optical pathway is proposed for camera-based physiological sensing and is validated on a new dataset consisting of seven hours of three-dimensional volumetric near-infrared monochromatic video data. Both two-dimensional and three-dimensional signals are extracted from this dataset and the results of either approach are compared using state-of-the-art camera-based physiological sensing neural methods. These findings provide valuable and novel insight into the utility of three-dimensional signals for camera-based physiological sensing, as well as the capability and limitations of existing camera-based physiological sensing solutions when applied in a driver monitoring system application context.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sets</title>
      <link>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/sets/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/sets/</guid>
      <description>&lt;h1 id=&#34;sets&#34;&gt;Sets&lt;a class=&#34;anchor&#34; href=&#34;#sets&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;A set is just a collection of distinct objects.&lt;/p&gt;&#xA;&lt;p&gt;Examples:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;$\mathbb{R}$: real numbers&lt;/li&gt;&#xA;&lt;li&gt;$\{1,2,3\}$&lt;/li&gt;&#xA;&lt;li&gt;solutions to an equation&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In pure math, you define things by properties, not construction.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Shell Prompt</title>
      <link>/docs/projects_linux_linux.output/projects_linux_shell_shell.output/shell-prompt/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_linux_linux.output/projects_linux_shell_shell.output/shell-prompt/</guid>
      <description>&lt;h1 id=&#34;shell-prompt&#34;&gt;Shell Prompt&lt;a class=&#34;anchor&#34; href=&#34;#shell-prompt&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;shell prompt&lt;/strong&gt; is the textual indicator that the shell is ready to accept input. It typically encodes contextual information such as the current user, host, and working directory.&lt;/p&gt;&#xA;&lt;h2 id=&#34;default-format&#34;&gt;Default Format&lt;a class=&#34;anchor&#34; href=&#34;#default-format&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;username&amp;gt;@&amp;lt;hostname&amp;gt;&amp;lt;current-working-directory&amp;gt;$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user@host&lt;span style=&#34;color:#ff6ac1&#34;&gt;[&lt;/span&gt;/path/to/dir&lt;span style=&#34;color:#ff6ac1&#34;&gt;]&lt;/span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;common-symbols&#34;&gt;Common Symbols&lt;a class=&#34;anchor&#34; href=&#34;#common-symbols&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Symbol&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;~&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;User’s home directory&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;$&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Regular (non-root) user&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;#&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Root (privileged) user&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;examples&#34;&gt;Examples&lt;a class=&#34;anchor&#34; href=&#34;#examples&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user@host&lt;span style=&#34;color:#ff6ac1&#34;&gt;[&lt;/span&gt;~&lt;span style=&#34;color:#ff6ac1&#34;&gt;]&lt;/span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;root@host&lt;span style=&#34;color:#ff6ac1&#34;&gt;[&lt;/span&gt;/root&lt;span style=&#34;color:#ff6ac1&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#78787e&#34;&gt;#&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;prompt-configuration-ps1&#34;&gt;Prompt Configuration (&lt;code&gt;PS1&lt;/code&gt;)&lt;a class=&#34;anchor&#34; href=&#34;#prompt-configuration-ps1&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The prompt is controlled by the &lt;code&gt;PS1&lt;/code&gt; environment variable.&lt;/p&gt;&#xA;&lt;h3 id=&#34;example&#34;&gt;Example&lt;a class=&#34;anchor&#34; href=&#34;#example&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff5c57&#34;&gt;PS1&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;\u@\h[\w]\$ &amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;common-escape-sequences&#34;&gt;Common Escape Sequences&lt;a class=&#34;anchor&#34; href=&#34;#common-escape-sequences&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Sequence&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\u&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Username&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\h&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Hostname (short)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\H&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Hostname (full)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\w&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Current working directory&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\d&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Date (e.g., Mon Feb 6)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\D{format}&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Custom date format&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\t&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Time (24-hour)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\T&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Time (12-hour)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\@&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Time (AM/PM format)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\j&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Number of jobs&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\s&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Shell name&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Newline&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\r&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Carriage return&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;customisation&#34;&gt;Customisation&lt;a class=&#34;anchor&#34; href=&#34;#customisation&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Prompt configuration is typically defined in:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spoofing</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/spoofing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/spoofing/</guid>
      <description>&lt;h1 id=&#34;spoofing&#34;&gt;Spoofing&lt;a class=&#34;anchor&#34; href=&#34;#spoofing&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Spoofing is pretending to be something or someone you’re not. Spoofing violates authentication.&lt;/p&gt;&#xA;&lt;p&gt;Typical victims include processes, external entities, or people.&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-threats&#34;&gt;Example Threats&lt;a class=&#34;anchor&#34; href=&#34;#example-threats&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Spoofing a person&lt;/li&gt;&#xA;&lt;li&gt;spoofing a process&lt;/li&gt;&#xA;&lt;li&gt;spoofing a &amp;ldquo;file&amp;rdquo; on disk&lt;/li&gt;&#xA;&lt;li&gt;spoofing a network address&lt;/li&gt;&#xA;&lt;li&gt;spoofing a machine&lt;/li&gt;&#xA;&lt;li&gt;spoofing a role.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Verilog</title>
      <link>/docs/projects_fpga_docs_docs.output/verilog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_fpga_docs_docs.output/verilog/</guid>
      <description>&lt;h1 id=&#34;verilog&#34;&gt;Verilog&lt;a class=&#34;anchor&#34; href=&#34;#verilog&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;keywords&#34;&gt;Keywords&lt;a class=&#34;anchor&#34; href=&#34;#keywords&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;wire&#34;&gt;wire&lt;a class=&#34;anchor&#34; href=&#34;#wire&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;code&gt;wire&lt;/code&gt; keyword represents a physical wire in a circuit and is used to connect gates or modules.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;wire&lt;/code&gt; is a type of net that describes digital signals connecting multiple hardware elements.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;wire&lt;/code&gt; does not store its value but must be driven by a continuous assignment statement &lt;code&gt;assign&lt;/code&gt; or by connecting it to the output of a gate or module.&lt;/p&gt;&#xA;&lt;p&gt;Value of a wire can be read or assigned inside a module but &lt;strong&gt;never inside procedural code&lt;/strong&gt; such as &lt;code&gt;intial&lt;/code&gt; or &lt;code&gt;always&lt;/code&gt; blocks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>1-bit MUX</title>
      <link>/docs/projects_fpga_docs_docs.output/1-bit-mux/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_fpga_docs_docs.output/1-bit-mux/</guid>
      <description>&lt;h1 id=&#34;1-bit-mux&#34;&gt;1-bit MUX&lt;a class=&#34;anchor&#34; href=&#34;#1-bit-mux&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;A multiplexer (MUX) is an electronic switch that conencts one of several inputs to the output based on a selection signal S. The truth table for a 1-bit MUX is shown in &lt;strong&gt;Table 1&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Table 1:&lt;/strong&gt; Truth table of a 1-bit MUX.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;X&lt;/th&gt;&#xA;          &lt;th&gt;Y&lt;/th&gt;&#xA;          &lt;th&gt;S&lt;/th&gt;&#xA;          &lt;th&gt;Z&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;xx&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;xx&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;xx&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;xx&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;As shown in Table 1, when the selector signal is 1, the output signal mirrors input signal X. Conversely, when the selector signal is 0 the output signal mirrors the input signal Y.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Focusing on Attackers</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_approaches_approaches.output/focusing-on-attackers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_approaches_approaches.output/focusing-on-attackers/</guid>
      <description>&lt;h1 id=&#34;focusing-on-attackers&#34;&gt;Focusing on Attackers&lt;a class=&#34;anchor&#34; href=&#34;#focusing-on-attackers&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;An attacker-focused approach to threat modeling—starting from “who might attack us and why”-is intuitive but generally not very effective.&lt;/p&gt;&#xA;&lt;h2 id=&#34;method&#34;&gt;Method&lt;a class=&#34;anchor&#34; href=&#34;#method&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Create attacker profiles (from simple lists to detailed personas).&lt;/li&gt;&#xA;&lt;li&gt;Use these to guide brainstorming about possible attacks.&lt;/li&gt;&#xA;&lt;li&gt;Often shifts toward human-centric scenarios (e.g., social engineering).&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;strong&gt;Appeal and use cases:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It feels logical: if attackers drive risk, understanding them should help.&lt;/li&gt;&#xA;&lt;li&gt;It can work for experienced security practitioners, for incorporating less-technical input, and for communicating risk or prioritisation.&lt;/li&gt;&#xA;&lt;li&gt;Makes threats more tangible, especially for non-technical stakeholders.&lt;/li&gt;&#xA;&lt;li&gt;Useful for explaining &lt;em&gt;who&lt;/em&gt; might attack and &lt;em&gt;why&lt;/em&gt;, aiding communication and buy-in.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;limitations&#34;&gt;Limitations&lt;a class=&#34;anchor&#34; href=&#34;#limitations&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Discussions easily get bogged down in debating attacker capabilities (e.g., “state-sponsored or not?”).&lt;/li&gt;&#xA;&lt;li&gt;Personas lack enough structure to reliably derive concrete threats.&lt;/li&gt;&#xA;&lt;li&gt;Engineers may project their own assumptions onto attackers, leading to bias and missed risks.&lt;/li&gt;&#xA;&lt;li&gt;Human-centric scenarios can be hard to translate into actionable system security measures.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Attacker-centric modelling &lt;strong&gt;does not produce consistent or systematic threat identification.&lt;/strong&gt; It does not reliably answer the key question: &lt;em&gt;what will attackers actually do to the system?&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Functions</title>
      <link>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/functions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/functions/</guid>
      <description>&lt;h1 id=&#34;functions&#34;&gt;Functions&lt;a class=&#34;anchor&#34; href=&#34;#functions&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;A function $f: A \to B$ is:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;a set $A$ (domain)&lt;/li&gt;&#xA;&lt;li&gt;a set $B$ (codomain)&lt;/li&gt;&#xA;&lt;li&gt;a rule assigning &lt;strong&gt;each element&lt;/strong&gt; of $A$ to &lt;strong&gt;exactly one&lt;/strong&gt; element of $B$&#xA;&lt;ul&gt;&#xA;&lt;li&gt;many elements of $A$ may beassigned to one element of $B$, but to &lt;strong&gt;only one element&lt;/strong&gt; of $B$&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>If $n$ is odd, then $n^2$ is odd</title>
      <link>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/projects_math_docs_pure_proofs_proofs.output/if-n-is-odd-then-n2-is-odd/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/projects_math_docs_pure_proofs_proofs.output/if-n-is-odd-then-n2-is-odd/</guid>
      <description>&lt;h1 id=&#34;if--is-odd-then--is-odd&#34;&gt;If $n$ is odd, then $n^2$ is odd&lt;a class=&#34;anchor&#34; href=&#34;#if--is-odd-then--is-odd&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Claim:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If $n$ is odd, then $n^2$ is odd.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Proof:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Assume $n$ is odd. Then, by definition, there exists an integer $k$ such that:&lt;/p&gt;&#xA;$$&#xA;n=2k+1&#xA;$$&lt;p&gt;Then:&lt;/p&gt;&#xA;$$&#xA;n^2=(2k+1)^2&#xA;=(2k+1)(2k+1)&#xA;=4k^2+4k+1&#xA;=2(2k^2+2k)+1&#xA;$$&lt;p&gt;Let $m=2k^2+2k$, which is an integer. Then:&lt;/p&gt;&#xA;$$&#xA;n^2=2m+1&#xA;$$&lt;p&gt;Therefore, by direct example, $n^2$ is odd.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Claim:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If $n^2$ is odd, then $n$ is odd.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Proof:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Consider the contrapositive; if $n$ is odd, then $n^2$ is odd. We have already shown this to be true. Therefore, by contrapositive, $n$ is odd.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Permissions</title>
      <link>/docs/projects_linux_linux.output/permissions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_linux_linux.output/permissions/</guid>
      <description>&lt;h1 id=&#34;permissions&#34;&gt;Permissions&lt;a class=&#34;anchor&#34; href=&#34;#permissions&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Linux permissions control access to files and directories via a &lt;strong&gt;user–group–others&lt;/strong&gt; model. Each filesystem object is associated with:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Owner (user)&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Permissions&lt;/strong&gt; defining allowed operations&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Users can belong to multiple groups, inheriting access rights accordingly.&lt;/p&gt;&#xA;&lt;h2 id=&#34;permission-types&#34;&gt;Permission Types&lt;a class=&#34;anchor&#34; href=&#34;#permission-types&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Symbol&lt;/th&gt;&#xA;          &lt;th&gt;Name&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;r&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Read&lt;/td&gt;&#xA;          &lt;td&gt;View file contents or list directory contents&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;w&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Write&lt;/td&gt;&#xA;          &lt;td&gt;Modify file or directory contents&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;x&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Execute&lt;/td&gt;&#xA;          &lt;td&gt;Run file or traverse directory&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;permission-scope&#34;&gt;Permission Scope&lt;a class=&#34;anchor&#34; href=&#34;#permission-scope&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Permissions are defined for three classes:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Representing Attack Trees</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/representing-attack-trees/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/representing-attack-trees/</guid>
      <description>&lt;h1 id=&#34;representing-attack-trees&#34;&gt;Representing Attack Trees&lt;a class=&#34;anchor&#34; href=&#34;#representing-attack-trees&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Attack trees can be represented in different formats depending on the audience and purpose.&lt;/p&gt;&#xA;&lt;h2 id=&#34;graphical-representation&#34;&gt;Graphical Representation&lt;a class=&#34;anchor&#34; href=&#34;#graphical-representation&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;    A[Attack system]&#xA;&#xA;    A --&amp;gt;|AND| B[Gather knowledge]&#xA;    A --&amp;gt;|AND| C[Gain access]&#xA;&#xA;    B --&amp;gt;|OR| B1[From insider]&#xA;    B --&amp;gt;|OR| B2[From components]&#xA;&#xA;    C --&amp;gt;|OR| C1[Vendor access]&#xA;    C --&amp;gt;|OR| C2[Illegal entry]&lt;/pre&gt;&lt;h2 id=&#34;outline-format&#34;&gt;Outline Format&lt;a class=&#34;anchor&#34; href=&#34;#outline-format&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Attack system (AND)&lt;/p&gt;&#xA;&lt;p&gt;1.1 Gather knowledge (OR)&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Insider&lt;/li&gt;&#xA;&lt;li&gt;Components&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;1.2 Gain access (OR)&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Vendor&lt;/li&gt;&#xA;&lt;li&gt;Illegal entry&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;structured-representations&#34;&gt;Structured Representations&lt;a class=&#34;anchor&#34; href=&#34;#structured-representations&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Attack trees can also be treated as data structures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Subsurface Scattering</title>
      <link>/docs/projects_research_research.output/subsurface-scattering/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_research_research.output/subsurface-scattering/</guid>
      <description>&lt;h1 id=&#34;subsurface-scattering&#34;&gt;Subsurface Scattering&lt;a class=&#34;anchor&#34; href=&#34;#subsurface-scattering&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;../vcsel.pdf&#34;&gt;Harnessing coherent illuminator properties to detect subsurface scattering&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The coherent light output by a laser yields unique interference properties in comparison&#xA;to incoherent light sources. This project harnesses these unique properties to discern bare skin from other categories present on the face within the constraints defined by a driver monitoring software (DMS) application context. More specifically, the project uses various laser speckle imaging techniques on vertical-cavity surface-emitting laser illuminated images to perform clustering of bare skin. Three distinct methods are investigated: beam profile analysis, laser speckle variation analysis and laser speckle contrast imaging (LSCI). All methods are evaluated and a comparison is made highlighting the respective benefits and drawbacks of each technique in a DMS application context. In the final implementation, a convolutional neural network is trained to use temporal LSCI processed images to effectively classify skin. A comparison of models trained on light-emitting diode (LED) versus VCSEL illuminated datasets is presented and a consistent improvement in classification performance is demonstrated for the VCSEL models. Finally, a comprehensive evaluation is provided into the limitations of this model.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tampering</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/tampering/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/tampering/</guid>
      <description>&lt;h1 id=&#34;tampering&#34;&gt;Tampering&lt;a class=&#34;anchor&#34; href=&#34;#tampering&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Tampering is modifying something you’re not supposed to modify. Tampering violates integrity. It can include packets on the wire (or wireless), bits on disk, or the bits in memory.&lt;/p&gt;&#xA;&lt;p&gt;Typical victims include data stores, data flows, or processes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-threats&#34;&gt;Example Threats&lt;a class=&#34;anchor&#34; href=&#34;#example-threats&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Tampering with a file&lt;/li&gt;&#xA;&lt;li&gt;racing to create a file (tampering with the file system)&lt;/li&gt;&#xA;&lt;li&gt;tampering with a network packet&lt;/li&gt;&#xA;&lt;li&gt;tampering with memory.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Unified Modeling Language</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/unified-modeling-language/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/unified-modeling-language/</guid>
      <description>&lt;h1 id=&#34;unified-modeling-language&#34;&gt;Unified Modeling Language&lt;a class=&#34;anchor&#34; href=&#34;#unified-modeling-language&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Unified Modeling Language (UML)&lt;/strong&gt; diagrams can be adapted for threat modeling, especially if they are already part of the development workflow. In this case, you need only &lt;strong&gt;add trust boundaries&lt;/strong&gt; to highlight security-relevant separations between components.&lt;/p&gt;&#xA;&lt;h2 id=&#34;advantages&#34;&gt;Advantages&lt;a class=&#34;anchor&#34; href=&#34;#advantages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Leverages existing artifacts (presuming you are already using UML in your project)&lt;/strong&gt;: No need to redraw system models&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Expressive and detailed&lt;/strong&gt;: UML supports a wide range of diagram types:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Structure diagrams&lt;/li&gt;&#xA;&lt;li&gt;Behavior diagrams&lt;/li&gt;&#xA;&lt;li&gt;Interaction diagrams&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;limitations&#34;&gt;Limitations&lt;a class=&#34;anchor&#34; href=&#34;#limitations&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;High complexity&lt;/strong&gt;: UML includes many symbol conventions, requiring strong familiarity to interpet correctly&lt;/p&gt;</description>
    </item>
    <item>
      <title>1-bit Full Addder</title>
      <link>/docs/projects_fpga_docs_docs.output/1-bit-full-addder/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_fpga_docs_docs.output/1-bit-full-addder/</guid>
      <description>&lt;h1 id=&#34;1-bit-full-addder&#34;&gt;1-bit Full Addder&lt;a class=&#34;anchor&#34; href=&#34;#1-bit-full-addder&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;A full adder is an adder with carry-in and carry-out ports. The truth table for a 1-bit full adder is shown in &lt;strong&gt;Table 1&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Table 1:&lt;/strong&gt; Truth table for a 1-bit full adder.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;X&lt;/th&gt;&#xA;          &lt;th&gt;Y&lt;/th&gt;&#xA;          &lt;th&gt;C_in&lt;/th&gt;&#xA;          &lt;th&gt;Z&lt;/th&gt;&#xA;          &lt;th&gt;C_out&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;0&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;          &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;As shown in Table 1, the output $Z$ is the binary addition of $X + Y + C_{in}$, and the output $C_{out}$ is the carry bit of the addition.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elevation of Privlege</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/elevation-of-privlege/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/elevation-of-privlege/</guid>
      <description>&lt;h1 id=&#34;elevation-of-privlege&#34;&gt;Elevation of Privlege&lt;a class=&#34;anchor&#34; href=&#34;#elevation-of-privlege&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Elevation of Privelege is a game created by Adam Shostack in which&lt;/p&gt;</description>
    </item>
    <item>
      <title>Example Attack Tree</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/example-attack-tree/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/example-attack-tree/</guid>
      <description>&lt;h1 id=&#34;example-attack-tree&#34;&gt;Example Attack Tree&lt;a class=&#34;anchor&#34; href=&#34;#example-attack-tree&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;goal-access-a-building&#34;&gt;Goal: Access a Building&lt;a class=&#34;anchor&#34; href=&#34;#goal-access-a-building&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;This is a simple OR-based attack tree.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph TD&#xA;    A[Access building]&#xA;&#xA;    A --&amp;gt; B[Through a door]&#xA;    A --&amp;gt; C[Through a window]&#xA;    A --&amp;gt; D[Through a wall]&#xA;    A --&amp;gt; E[Other means]&#xA;&#xA;    %% Door branch&#xA;    B --&amp;gt; B1[Unlocked]&#xA;    B --&amp;gt; B2[Drill lock]&#xA;    B --&amp;gt; B3[Pick lock]&#xA;    B --&amp;gt; B4[Use key]&#xA;    B --&amp;gt; B5[Social engineering]&#xA;&#xA;    B1 --&amp;gt; B11[Get lucky]&#xA;    B1 --&amp;gt; B12[Block latch]&#xA;    B1 --&amp;gt; B13[Distract staff]&#xA;&#xA;    B4 --&amp;gt; B41[Find key]&#xA;    B4 --&amp;gt; B42[Steal key]&#xA;    B4 --&amp;gt; B43[Copy key]&#xA;    B4 --&amp;gt; B44[Social engineer key]&#xA;&#xA;    B5 --&amp;gt; B51[Follow someone in]&#xA;    B5 --&amp;gt; B52[Build relationship]&#xA;    B5 --&amp;gt; B53[Carry items to appear legitimate]&#xA;&#xA;    %% Window branch&#xA;    C --&amp;gt; C1[Break window]&#xA;    C --&amp;gt; C2[Lift window]&#xA;&#xA;    %% Wall branch&#xA;    D --&amp;gt; D1[Use tools]&#xA;    D --&amp;gt; D2[Use vehicle]&#xA;&#xA;    %% Other means&#xA;    E --&amp;gt; E1[Fire escape]&#xA;    E --&amp;gt; E2[Roof access]&#xA;    E --&amp;gt; E3[Another tenant]&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Focusing on Software</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_approaches_approaches.output/focusing-on-software/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_approaches_approaches.output/focusing-on-software/</guid>
      <description>&lt;h1 id=&#34;focusing-on-software&#34;&gt;Focusing on Software&lt;a class=&#34;anchor&#34; href=&#34;#focusing-on-software&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Shostack argues software-centric threat modelling (focusing on the system’s actual architecture and behavior) is more effective and practical than asset or attacker-centric modelling.&lt;/p&gt;&#xA;&lt;h2 id=&#34;method&#34;&gt;Method&lt;a class=&#34;anchor&#34; href=&#34;#method&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Model the software itself (architecture, data flows, components, APIs).&lt;/li&gt;&#xA;&lt;li&gt;Use diagrams or shared representations to build a common understanding of how the system works.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;advantages&#34;&gt;Advantages&lt;a class=&#34;anchor&#34; href=&#34;#advantages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Shared understanding:&lt;/strong&gt; Exposes mismatches in how team members think the system behaves, often revealing security gaps.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Handles complexity:&lt;/strong&gt; Helps untangle and make visible the accumulated complexity of long-running or large systems.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Surfaces assumptions:&lt;/strong&gt; Forces explicit identification of hidden or incorrect assumptions between components.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Immediate security value:&lt;/strong&gt; Even before identifying threats, aligning understanding improves security posture.&lt;/li&gt;&#xA;&lt;li&gt;Works across different types of software:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;“Boxed” software (clearly defined boundaries like apps or packages)&lt;/li&gt;&#xA;&lt;li&gt;Deployed systems (evolving infrastructure and services)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Developers are familiar with their own software. This is reliable, unlike assumptions about assets or attackers.&lt;/li&gt;&#xA;&lt;li&gt;Doesn’t rely on vague or inconsistent concepts (like “assets” or “attacker personas”).&lt;/li&gt;&#xA;&lt;li&gt;Provides a concrete, structured foundation for systematically identifying threats.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;takeaway&#34;&gt;Takeaway&lt;a class=&#34;anchor&#34; href=&#34;#takeaway&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Software-centric modeling works because it starts from something concrete, shared, and well-understood: the system itself. This makes it more reliable, reproducible, and effective for identifying and addressing threats than asset or attacker-focused approaches.&lt;/p&gt;</description>
    </item>
    <item>
      <title>If $x^2&gt;0$, then $x&gt;0$</title>
      <link>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/projects_math_docs_pure_proofs_proofs.output/if-x20-then-x0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/projects_math_docs_pure_proofs_proofs.output/if-x20-then-x0/</guid>
      <description>&lt;h1 id=&#34;if--then&#34;&gt;If $x^2&gt;0$, then $x&gt;0$&lt;a class=&#34;anchor&#34; href=&#34;#if--then&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Claim:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If $x^2&gt;0$, then $x&gt;0$&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Proof:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Let $x=-2$&lt;/p&gt;&#xA;&lt;p&gt;Then $x^2=4&gt;0$, but $x&gt;0$ is false.&lt;/p&gt;&#xA;&lt;p&gt;Therefore, by counterexample, the statement is false.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IoT Bushfire Detection</title>
      <link>/docs/projects_research_research.output/iot-bushfire-detection/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_research_research.output/iot-bushfire-detection/</guid>
      <description>&lt;h1 id=&#34;iot-bushfire-detection&#34;&gt;IoT Bushfire Detection&lt;a class=&#34;anchor&#34; href=&#34;#iot-bushfire-detection&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;../bushfire.pdf&#34;&gt;Power Requirements of Ground-Based Bushfire Detection Devices&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Recently, there has been increased interested in the use of ground-based Internet&#xA;of Things (IoT) sensors for bushfire detection applications. Such a system typically&#xA;comprises sensors and a gateway to collect information and relay it to a control&#xA;station. A key requirement of such systems is that devices are optimised for the&#xA;lowest possible power consumption. This paper will focus on the power requirements&#xA;of such a system and seek to evaluate the feasibility of various power sources. Power&#xA;consumption is investigated for various detection methods. This is used to calculate&#xA;lifetime power consumption for various combinations of detection methods (device&#xA;configurations) under different operating conditions. Finally, research is conducted&#xA;into several potential power sources. This concludes with a recommendation for a&#xA;secondary cell with a solar panel for visual detection methods and a primary cell&#xA;for all other detection methods.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Logic</title>
      <link>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/logic/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_math_docs_docs.output/projects_math_docs_pure_pure.output/logic/</guid>
      <description>&lt;h1 id=&#34;logic&#34;&gt;Logic&lt;a class=&#34;anchor&#34; href=&#34;#logic&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;implication&#34;&gt;Implication&lt;a class=&#34;anchor&#34; href=&#34;#implication&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;em&gt;If $P$, then $Q$&lt;/em&gt;; written as $P \implies Q$&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;Whenever $P$ is true, then $Q$ must also be true&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Repudiation</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/repudiation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/repudiation/</guid>
      <description>&lt;h1 id=&#34;repudiation&#34;&gt;Repudiation&lt;a class=&#34;anchor&#34; href=&#34;#repudiation&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Repudiation means claiming you didn’t do something (regardless of whether you did or not). Repudiation violates non-repudation.&lt;/p&gt;&#xA;&lt;p&gt;Typical victims include processes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-threats&#34;&gt;Example Threats&lt;a class=&#34;anchor&#34; href=&#34;#example-threats&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;No logs means you can&amp;rsquo;t prove anything&lt;/li&gt;&#xA;&lt;li&gt;logs come under attack&lt;/li&gt;&#xA;&lt;li&gt;logs as a channel for attack.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Swim Lane Diagrams</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/swim-lane-diagrams/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/swim-lane-diagrams/</guid>
      <description>&lt;h1 id=&#34;swim-lane-diagrams&#34;&gt;Swim Lane Diagrams&lt;a class=&#34;anchor&#34; href=&#34;#swim-lane-diagrams&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Swim lane diagrams are a visual method for modeling &lt;strong&gt;interactions between participants&lt;/strong&gt; in a system or protocol. They are particularly useful for understanding &lt;strong&gt;message flows over time&lt;/strong&gt;, or when modelling human + system interaction.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Each &lt;strong&gt;participant&lt;/strong&gt; (e.g., client, server) is represented by a vertical “lane”&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Time flows downward&lt;/strong&gt; along each lane&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Messages&lt;/strong&gt; are shown as horizontal arrows between participants&lt;/li&gt;&#xA;&lt;li&gt;Each lane is &lt;strong&gt;labeled&lt;/strong&gt; to identify the participant&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This layout resembles swimming lanes, hence the name.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Brainstorming</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/brainstorming/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/brainstorming/</guid>
      <description>&lt;h1 id=&#34;brainstorming&#34;&gt;Brainstorming&lt;a class=&#34;anchor&#34; href=&#34;#brainstorming&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;One of the most simple ways to identify threats is to host a brainstorming session. Brainstorming can be broken down into (1) a period of idea generation, and (2) a period of filtering where the best ideas are selected. Before brainstorming, it is often helpful to define the scope of attacks under consideration.&lt;/p&gt;&#xA;&lt;p&gt;On its own, brainstorming is not a sufficient form of threat modelling. This is because it is (deliberately) unstructured, and does not provide a high degree of confidence that all threats have been identified - i.e., did your brainstorming session end because you found all threats, or because you became tired / the meeting ended?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Core Linux Commands</title>
      <link>/docs/projects_linux_linux.output/core-linux-commands/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_linux_linux.output/core-linux-commands/</guid>
      <description>&lt;h1 id=&#34;core-linux-commands&#34;&gt;Core Linux Commands&lt;a class=&#34;anchor&#34; href=&#34;#core-linux-commands&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;man&#34;&gt;&lt;code&gt;man&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#man&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Display manual pages for commands:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;man ls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Comprehensive reference (syntax, options, behaviour)&lt;/li&gt;&#xA;&lt;li&gt;Organized into sections (e.g., user commands, system calls)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;apropos&#34;&gt;&lt;code&gt;apropos&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#apropos&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Search manual page descriptions by keyword:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apropos network&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Useful when you don’t know the exact command name&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;external-resource&#34;&gt;External Resource&lt;a class=&#34;anchor&#34; href=&#34;#external-resource&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;explainshell — explains command syntax interactively&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;common-system-commands&#34;&gt;Common System Commands&lt;a class=&#34;anchor&#34; href=&#34;#common-system-commands&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Command&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;whoami&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Print current user&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;id&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Show user and group IDs&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;hostname&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Get/set system hostname&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;uname&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;System/kernel information&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Print current directory&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;env&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Show or set environment variables&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;networking&#34;&gt;Networking&lt;a class=&#34;anchor&#34; href=&#34;#networking&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Command&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;ifconfig&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Configure/view network interfaces (legacy)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;ip&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Modern network configuration tool&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;netstat&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Network status (legacy)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;ss&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Socket inspection (modern replacement for netstat)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;process--system-inspection&#34;&gt;Process &amp;amp; System Inspection&lt;a class=&#34;anchor&#34; href=&#34;#process--system-inspection&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Command&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;ps&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Process status&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;who&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Logged-in users&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;lsof&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Open files by processes&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;hardware-inspection&#34;&gt;Hardware Inspection&lt;a class=&#34;anchor&#34; href=&#34;#hardware-inspection&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Command&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;lsblk&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Block devices (disks)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;lsusb&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;USB devices&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;lspci&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;PCI devices&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;file--path-utilities&#34;&gt;File &amp;amp; Path Utilities&lt;a class=&#34;anchor&#34; href=&#34;#file--path-utilities&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;ls&#34;&gt;&lt;code&gt;ls&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#ls&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;List directory contents:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hazards</title>
      <link>/docs/projects_fpga_docs_docs.output/hazards/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_fpga_docs_docs.output/hazards/</guid>
      <description>&lt;h1 id=&#34;hazards&#34;&gt;Hazards&lt;a class=&#34;anchor&#34; href=&#34;#hazards&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;../mux&#34;&gt;1-bit multiplexer&lt;/a&gt; and &lt;a href=&#34;../full-adder&#34;&gt;1-bit full adder&lt;/a&gt; exercises treat circuits as ideal, i.e., with instantaneous signal changes. However, transition times in digital circuits are non-zero. When designing asynchronous digital circuits, attention must be paid to the possible presence of hazards.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;All combinational circuits are asynchronous.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Consider the previously defined &lt;a href=&#34;../mux&#34;&gt;1-bit multiplexer&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;../mux-schematic.png&#34; alt=&#34;1-bit MUX&#34; /&gt;&#xA;&lt;strong&gt;Figure 1:&lt;/strong&gt; Schematic description of 1-bit MUX.&lt;/p&gt;&#xA;&lt;p&gt;Not all signal pathways corss the same number of gates, which means they will be affected by varying amounts of delay. This can introduce timing hazards.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Information Disclosure</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/information-disclosure/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/information-disclosure/</guid>
      <description>&lt;h1 id=&#34;information-disclosure&#34;&gt;Information Disclosure&lt;a class=&#34;anchor&#34; href=&#34;#information-disclosure&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Information Disclosure is about exposing information to people who are not authorised to see it. Information disclosure violates confidentiality.&lt;/p&gt;&#xA;&lt;p&gt;Typical victims include processes, data stores, or data flows.&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-threats&#34;&gt;Example Threats&lt;a class=&#34;anchor&#34; href=&#34;#example-threats&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Network monitoring&lt;/li&gt;&#xA;&lt;li&gt;directory of filename&lt;/li&gt;&#xA;&lt;li&gt;file contents&lt;/li&gt;&#xA;&lt;li&gt;API disclosure.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Real-World Attack Trees</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/real-world-attack-trees/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/real-world-attack-trees/</guid>
      <description>&lt;h1 id=&#34;real-world-attack-trees&#34;&gt;Real-World Attack Trees&lt;a class=&#34;anchor&#34; href=&#34;#real-world-attack-trees&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Several published attack trees provide valuable reference material.&lt;/p&gt;&#xA;&lt;h2 id=&#34;fraud-attack-tree&#34;&gt;Fraud Attack Tree&lt;a class=&#34;anchor&#34; href=&#34;#fraud-attack-tree&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;../fraud.png&#34; alt=&#34;Fraud attack tree created by the Association of Certified Fraud Examiners&#34; /&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;election-threat-trees&#34;&gt;Election Threat Trees&lt;a class=&#34;anchor&#34; href=&#34;#election-threat-trees&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;../election.png&#34; alt=&#34;Election attack tree created by the Elections Assitance Commission&#34; /&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;ssl-mind-map&#34;&gt;SSL Mind Map&lt;a class=&#34;anchor&#34; href=&#34;#ssl-mind-map&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;../mind-maps.png&#34; alt=&#34;SSL threat model by Ivan Ristic&#34; /&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;observations&#34;&gt;Observations&lt;a class=&#34;anchor&#34; href=&#34;#observations&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Flexible but less structured&lt;/li&gt;&#xA;&lt;li&gt;Harder to navigate visually&lt;/li&gt;&#xA;&lt;li&gt;Inconsistent categorisation&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>State Diagrams</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/state-diagrams/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/state-diagrams/</guid>
      <description>&lt;h1 id=&#34;state-diagrams&#34;&gt;State Diagrams&lt;a class=&#34;anchor&#34; href=&#34;#state-diagrams&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;State diagrams model a system as a set of &lt;strong&gt;states&lt;/strong&gt; and &lt;strong&gt;transitions&lt;/strong&gt; between those states. They are useful for analysing how a system behaves in response to inputs and how it enforces rules over time.&lt;/p&gt;&#xA;&lt;p&gt;A system is represented as a &lt;strong&gt;state machine&lt;/strong&gt; with:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;States&lt;/strong&gt; (current condition of the system)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Transitions&lt;/strong&gt; (movement between states)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Inputs/messages&lt;/strong&gt; that trigger transitions&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Internal data/memory&lt;/strong&gt; influencing behavior&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;stateDiagram-v2&#xA;    [*] --&amp;gt; Closed&#xA;&#xA;    Closed --&amp;gt; Opened: open&#xA;    Opened --&amp;gt; Closed: close&#xA;&#xA;    Closed --&amp;gt; Locked: lock&#xA;    Locked --&amp;gt; Closed: unlock&lt;/pre&gt;&lt;p&gt;From a threat modelling perspective, state diagrams can help to evaluate whether &lt;strong&gt;each transition enforces proper validation and security checks&lt;/strong&gt;, and to identify:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Denial of Service</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/denial-of-service/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/denial-of-service/</guid>
      <description>&lt;h1 id=&#34;denial-of-service&#34;&gt;Denial of Service&lt;a class=&#34;anchor&#34; href=&#34;#denial-of-service&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Denial of Service are attacks designed to prevent a system from providing service, including by crashing it, making it unusably slow, or filling all its storage. These threats often falls toward the bottom of the stack, because they primarily impact availability and not confidentiality or integrity. Denial of service violates availability.&lt;/p&gt;&#xA;&lt;p&gt;Typical threats include processes, data stores, or data flows.&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-threats&#34;&gt;Example Threats&lt;a class=&#34;anchor&#34; href=&#34;#example-threats&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Network flooding;&lt;/li&gt;&#xA;&lt;li&gt;program resources;&lt;/li&gt;&#xA;&lt;li&gt;system resources.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>File Descriptors and Redirection</title>
      <link>/docs/projects_linux_linux.output/file-descriptors-and-redirection/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_linux_linux.output/file-descriptors-and-redirection/</guid>
      <description>&lt;h1 id=&#34;file-descriptors-and-redirection&#34;&gt;File Descriptors and Redirection&lt;a class=&#34;anchor&#34; href=&#34;#file-descriptors-and-redirection&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;anchor&#34; href=&#34;#overview&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A &lt;strong&gt;file descriptor (FD)&lt;/strong&gt; is a kernel-managed handle that represents an open I/O resource (file, socket, pipe, etc.). It provides a uniform interface for reading and writing data streams.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;Windows equivalent: &lt;em&gt;file handle&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;standard-file-descriptors&#34;&gt;Standard File Descriptors&lt;a class=&#34;anchor&#34; href=&#34;#standard-file-descriptors&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;By convention, every process starts with three predefined descriptors:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;FD&lt;/th&gt;&#xA;          &lt;th&gt;Name&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;STDIN&lt;/td&gt;&#xA;          &lt;td&gt;Standard input stream&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;STDOUT&lt;/td&gt;&#xA;          &lt;td&gt;Standard output stream&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;STDERR&lt;/td&gt;&#xA;          &lt;td&gt;Standard error stream&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;basic-redirection&#34;&gt;Basic Redirection&lt;a class=&#34;anchor&#34; href=&#34;#basic-redirection&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Redirection operators control where data flows between streams and files.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Limitations and Perspective</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/limitations-and-perspective/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_attack_trees_attack_trees.output/limitations-and-perspective/</guid>
      <description>&lt;h1 id=&#34;limitations-and-perspective&#34;&gt;Limitations and Perspective&lt;a class=&#34;anchor&#34; href=&#34;#limitations-and-perspective&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Attack trees are useful but not without challenges.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-issues&#34;&gt;Key Issues&lt;a class=&#34;anchor&#34; href=&#34;#key-issues&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-completeness&#34;&gt;1. Completeness&lt;a class=&#34;anchor&#34; href=&#34;#1-completeness&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;No guarantee all attack paths are captured&lt;/li&gt;&#xA;&lt;li&gt;Missing a root node can omit entire threat classes&lt;/li&gt;&#xA;&lt;li&gt;Hard to know when you&amp;rsquo;re &amp;ldquo;done&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;2-scoping&#34;&gt;2. Scoping&lt;a class=&#34;anchor&#34; href=&#34;#2-scoping&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Some attacks fall outside your control&lt;/li&gt;&#xA;&lt;li&gt;Example: hardware-level attacks vs software systems&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You must define:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;What is in scope&lt;/li&gt;&#xA;&lt;li&gt;What is someone else&amp;rsquo;s responsibility&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;3-meaning-and-consistency&#34;&gt;3. Meaning and Consistency&lt;a class=&#34;anchor&#34; href=&#34;#3-meaning-and-consistency&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;AND/OR semantics often unclear&lt;/li&gt;&#xA;&lt;li&gt;Sequence rarely well-defined&lt;/li&gt;&#xA;&lt;li&gt;Different authors use different conventions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This increases cognitive load when interpreting trees.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Overflow Counter</title>
      <link>/docs/projects_fpga_docs_docs.output/overflow-counter/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_fpga_docs_docs.output/overflow-counter/</guid>
      <description>&lt;h1 id=&#34;overflow-counter&#34;&gt;Overflow Counter&lt;a class=&#34;anchor&#34; href=&#34;#overflow-counter&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;An overflow counter is a counter that can overflow back to zero when it fills up.&lt;/p&gt;&#xA;&lt;p&gt;In the overflow counter subfolder, a 32-bit overflow counter is implemented for a Basys 3 FPGA board, part number: xc7a35tcpg236-1.&lt;/p&gt;&#xA;&lt;p&gt;The counter has 3 inputs: (1) &lt;code&gt;clk&lt;/code&gt;, (2) &lt;code&gt;reset&lt;/code&gt;, and (3) &lt;code&gt;enable&lt;/code&gt; with the output being a 16-bit bus entity called &lt;code&gt;led&lt;/code&gt;. The counter has the following behaviour:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;At every positive (i.e., rising) edge of the &lt;code&gt;clk&lt;/code&gt; signal, the counter&amp;rsquo;s value increases by 1. This is achieved using a procedural block that will be edge-triggered by the clock. This is specified by the condition &lt;code&gt;posedge clk&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;For condition &lt;code&gt;reset == 1&lt;/code&gt;, the counter&amp;rsquo;s value resets to 0. When &lt;code&gt;reset == 0&lt;/code&gt;, the counter increments.&lt;/li&gt;&#xA;&lt;li&gt;The counter increments when enabled (i.e., &lt;code&gt;enable == 1&lt;/code&gt;) and stops incrementing when disbled (&lt;code&gt;enable == 0&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The full procedural block describing this behaviour is given by:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Trust Boundaries</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/trust-boundaries/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_model_model.output/projects_threat_modelling_docs_model_diagrams_diagrams.output/trust-boundaries/</guid>
      <description>&lt;h1 id=&#34;trust-boundaries&#34;&gt;Trust Boundaries&lt;a class=&#34;anchor&#34; href=&#34;#trust-boundaries&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;A &lt;strong&gt;trust boundary&lt;/strong&gt; is any point where entities with different privileges or trust levels interact.&lt;/p&gt;&#xA;&lt;p&gt;Every system has at least one trust boundary because all computation occurs in some context.&lt;/p&gt;&#xA;&lt;p&gt;If no boundaries are visible:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Either everything is incorrectly assumed to have equal privilege&lt;/li&gt;&#xA;&lt;li&gt;Or the model is missing structure&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In the extreme case where everything truly shares the same trust level, draw one boundary around the entire system and move on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clock Division</title>
      <link>/docs/projects_fpga_docs_docs.output/clock-division/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_fpga_docs_docs.output/clock-division/</guid>
      <description>&lt;h1 id=&#34;clock-division&#34;&gt;Clock Division&lt;a class=&#34;anchor&#34; href=&#34;#clock-division&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;../overflow-counter&#34;&gt;overflow counter&lt;/a&gt; project uses a 100 MHz clock signal. In many cases, it is necessary to generate clock signals slower than 100 Hz. A very efficient way to do this is to perform clock division using an overflow counter.&lt;/p&gt;&#xA;&lt;h2 id=&#34;clock-division-using-an-overflow-counter&#34;&gt;Clock Division using an Overflow Counter&lt;a class=&#34;anchor&#34; href=&#34;#clock-division-using-an-overflow-counter&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The simplest way to generate a clock divided by a factor of $2^n$ is to output the (n-1)th  bit of an overflow counter (n-1 because bus indexing starts at 0).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Elevation of Privelege</title>
      <link>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/elevation-of-privelege/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_threat_modelling_docs_docs.output/projects_threat_modelling_docs_identify_identify.output/projects_threat_modelling_docs_identify_stride_stride.output/elevation-of-privelege/</guid>
      <description>&lt;h1 id=&#34;elevation-of-privelege&#34;&gt;Elevation of Privelege&lt;a class=&#34;anchor&#34; href=&#34;#elevation-of-privelege&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Elevation of Privilege is when a program or user is technically able to do things that they’re not supposed to do. These threats are almost always going to fall into the highest priority category, because when they’re exploited they lead to so much damage. Denial of service violates authorisation.&lt;/p&gt;&#xA;&lt;p&gt;Typical victims include processes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-threats&#34;&gt;Example Threats&lt;a class=&#34;anchor&#34; href=&#34;#example-threats&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Data/code confusion;&lt;/li&gt;&#xA;&lt;li&gt;control flow/memory corruption attacks;&lt;/li&gt;&#xA;&lt;li&gt;command injection attacks.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>SSH</title>
      <link>/docs/projects_linux_linux.output/ssh/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_linux_linux.output/ssh/</guid>
      <description>&lt;h1 id=&#34;ssh&#34;&gt;SSH&lt;a class=&#34;anchor&#34; href=&#34;#ssh&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Secure Shell (SSH) refers to a protocol that allows clients to access and execute commands or actions on remote computers. On Linux-based hosts and servers, as well as other Unix-like operating systems, SSH is one of the permanently installed standard tools and is the preferred choice for many administrators to configure and maintain a computer through remote access. It is an older and very proven protocol that does not require or offer a graphical user interface (GUI). For this reason, it works very efficiently and occupies very few resources.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Regular Expressions (Regex)</title>
      <link>/docs/projects_linux_linux.output/regular-expressions-regex/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_linux_linux.output/regular-expressions-regex/</guid>
      <description>&lt;h1 id=&#34;regular-expressions-regex&#34;&gt;Regular Expressions (Regex)&lt;a class=&#34;anchor&#34; href=&#34;#regular-expressions-regex&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Regular Expressions (&lt;strong&gt;regex&lt;/strong&gt;) are patterns used to match and filter text. In Linux, they are commonly used with tools like &lt;code&gt;grep&lt;/code&gt;, &lt;code&gt;sed&lt;/code&gt;, and &lt;code&gt;awk&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;Practical note: Regex is dense but composable—focus on common patterns and reuse.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id=&#34;core-constructs&#34;&gt;Core Constructs&lt;a class=&#34;anchor&#34; href=&#34;#core-constructs&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Pattern&lt;/th&gt;&#xA;          &lt;th&gt;Meaning&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Any character&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;0 or more of previous&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;+&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;1 or more of previous&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;?&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;0 or 1 of previous&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;^&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Start of line&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;$&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;End of line&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\b&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Word boundary&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;\w&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Word character (&lt;code&gt;[a-zA-Z0-9_]&lt;/code&gt;)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Character class&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;()&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Grouping&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;|&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;OR operator&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;grep-modes&#34;&gt;&lt;code&gt;grep&lt;/code&gt; Modes&lt;a class=&#34;anchor&#34; href=&#34;#grep-modes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Option&lt;/th&gt;&#xA;          &lt;th&gt;Description&lt;/th&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Basic regex&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;grep -E&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Extended regex (preferred; enables &lt;code&gt;+&lt;/code&gt;, `&lt;/td&gt;&#xA;          &lt;td&gt;`, etc.)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;grep -v&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;Invert match&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;exercises&#34;&gt;Exercises&lt;a class=&#34;anchor&#34; href=&#34;#exercises&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-exclude-lines-containing-&#34;&gt;1. Exclude Lines Containing &lt;code&gt;#&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#1-exclude-lines-containing-&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat /etc/ssh/sshd_config | grep -v &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;-v&lt;/code&gt; → invert match (exclude comments)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;2-words-starting-with-permit&#34;&gt;2. Words Starting with &lt;code&gt;Permit&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#2-words-starting-with-permit&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grep -E &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;\bPermit\w*&amp;#39;&lt;/span&gt; /etc/ssh/sshd_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;\bPermit&lt;/code&gt; → word starts with &amp;ldquo;Permit&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;\w*&lt;/code&gt; → remaining characters&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;3-words-ending-with-authentication&#34;&gt;3. Words Ending with &lt;code&gt;Authentication&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#3-words-ending-with-authentication&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grep -E &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;\w*Authentication\b&amp;#39;&lt;/span&gt; /etc/ssh/sshd_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;\w*&lt;/code&gt; → prefix&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Authentication\b&lt;/code&gt; → word ends with target&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;4-lines-containing-key&#34;&gt;4. Lines Containing &lt;code&gt;Key&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#4-lines-containing-key&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e2e4e5;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grep &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#39;Key&amp;#39;&lt;/span&gt; /etc/ssh/sshd_config&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;Simple substring match (no regex needed)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;5-lines-starting-with-password-and-containing-yes&#34;&gt;5. Lines Starting with &lt;code&gt;Password&lt;/code&gt; &lt;strong&gt;and&lt;/strong&gt; Containing &lt;code&gt;yes&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#5-lines-starting-with-password-and-containing-yes&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;⚠️ Original pattern is incorrect (&lt;code&gt;^Password|yes&lt;/code&gt; = OR logic)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Seven Segment Display</title>
      <link>/docs/projects_fpga_docs_docs.output/seven-segment-display/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/projects_fpga_docs_docs.output/seven-segment-display/</guid>
      <description>&lt;h1 id=&#34;seven-segment-display&#34;&gt;Seven Segment Display&lt;a class=&#34;anchor&#34; href=&#34;#seven-segment-display&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The Basys 3 board features a four-digit common anode seven-segment LED display. Each of the four digits is comprised of seven segments, with an LED embedded in each segment. Segment LEDs can be individually illuminated. Any of the 128 (2^7) patterns can be displayed on a digit by illuminating certain LED segments and leaving the others dark.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;../ssd.png&#34; alt=&#34;Seven segment display&#34; /&gt;&#xA;&lt;strong&gt;Figure 1:&lt;/strong&gt; Seven segment display.&lt;/p&gt;&#xA;&lt;p&gt;The anodes of the seven LED segments are tied together to form one &lt;em&gt;common anode&lt;/em&gt; circuit node. The common anode signals are available as four digit enable input signals (i.e., 1000 will enable the first anode, but not the other three). The cathode circuit connections are shared amongst the four digits. There are only eight cathode signals that are drivable from the FPGA chip, called CA, CB, &amp;hellip;, CG and DP (decimal point), and there are connected to all four digits on the display.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
