<?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>Berkeley Packet Filters</title>
				<link>/docs/networking/berkeley-packet-filters/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/berkeley-packet-filters/</guid>
				<description>&lt;h1 id=&#34;berkeley-packet-filters&#34;&gt;Berkeley Packet Filters&lt;a class=&#34;anchor&#34; href=&#34;#berkeley-packet-filters&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;BPF is a filtering syntax used to match traffic by host, network, port, protocol, and other packet attributes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;primitives&#34;&gt;Primitives&lt;a class=&#34;anchor&#34; href=&#34;#primitives&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Primitive filter&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Description&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;[src|dst] host &amp;lt;host&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches a host as the IP source, destination, or either.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ether [src|dst] host &amp;lt;ehost&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches a host as the Ethernet source, destination, or either.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;[src|dst] net &amp;lt;network&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches packets to or from the source and destination network, or either.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;[src|dst] net &amp;lt;network&amp;gt; mask &amp;lt;netmask&amp;gt;&lt;/code&gt; or &lt;code&gt;[src|dst] net &amp;lt;network&amp;gt;/&amp;lt;len&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches packets with a specific netmask.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;[src|dst] port &amp;lt;port&amp;gt;&lt;/code&gt; or &lt;code&gt;[tcp|udp] [src|dst] port &amp;lt;port&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches packets sent to or from a port.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;[src|dst] portrange &amp;lt;p1&amp;gt;-&amp;lt;p2&amp;gt;&lt;/code&gt; or &lt;code&gt;[tcp|udp] [src|dst] portrange &amp;lt;p1&amp;gt;-&amp;lt;p2&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches packets to or from a port range.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;less &amp;lt;length&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches packets less than or equal to the length.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;greater &amp;lt;length&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches packets greater than or equal to the length.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;(ether|ip|ip6) proto &amp;lt;protocol&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches an Ethernet, IPv4, or IPv6 protocol.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;(ip|ip6) protochain &amp;lt;protocol&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches IPv4 or IPv6 packets with a protocol header in the chain, for example &lt;code&gt;ip6 protochain 6&lt;/code&gt;.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;(ether|ip) broadcast&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches Ethernet or IPv4 broadcasts.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;(ether|ip|ip6) multicast&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches Ethernet, IPv4, or IPv6 multicasts.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;vlan [&amp;lt;vlan&amp;gt;]&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches 802.1Q frames with a VLAN ID.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;mpls [&amp;lt;label&amp;gt;]&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Matches MPLS packets with a label.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;protocols-and-operators&#34;&gt;Protocols and Operators&lt;a class=&#34;anchor&#34; href=&#34;#protocols-and-operators&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Common protocols include &lt;code&gt;arp&lt;/code&gt;, &lt;code&gt;ether&lt;/code&gt;, &lt;code&gt;fddi&lt;/code&gt;, &lt;code&gt;icmp&lt;/code&gt;, &lt;code&gt;ip&lt;/code&gt;, &lt;code&gt;ip6&lt;/code&gt;, &lt;code&gt;link&lt;/code&gt;, &lt;code&gt;ppp&lt;/code&gt;, &lt;code&gt;radio&lt;/code&gt;, &lt;code&gt;rarp&lt;/code&gt;, &lt;code&gt;slip&lt;/code&gt;, &lt;code&gt;tcp&lt;/code&gt;, &lt;code&gt;tr&lt;/code&gt;, &lt;code&gt;udp&lt;/code&gt;, and &lt;code&gt;wlan&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Creating Attack Trees</title>
				<link>/docs/threat-modelling/identify/attack-trees/creating-attack-trees/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/attack-trees/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/threat-modelling/model/diagrams/data-flow-diagrams/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/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;pre class=&#34;mermaid&#34;&gt;flowchart LR&#xA;    webClients[&amp;#34;Web Clients&amp;#34;]&#xA;    sqlClients[&amp;#34;SQL Clients&amp;#34;]&#xA;    dba[&amp;#34;DBA (Human)&amp;#34;]&#xA;    dbUsers[&amp;#34;DB Users (Human)&amp;#34;]&#xA;    logAnalysis[&amp;#34;Log Analysis&amp;#34;]&#xA;&#xA;    subgraph dbCluster[&amp;#34;DB Cluster&amp;#34;]&#xA;        subgraph sqlAccount[&amp;#34;Original SQL Account&amp;#34;]&#xA;            frontend([&amp;#34;Acme Front End(s)&amp;#34;])&#xA;            database([&amp;#34;Database&amp;#34;])&#xA;            dbAdmin([&amp;#34;DB Admin&amp;#34;])&#xA;        end&#xA;        data[(&amp;#34;Data&amp;#34;)]&#xA;        management[(&amp;#34;Management&amp;#34;)]&#xA;        logs[(&amp;#34;Logs&amp;#34;)]&#xA;    end&#xA;&#xA;    webClients &amp;lt;--&amp;gt; frontend&#xA;    sqlClients &amp;lt;--&amp;gt; frontend&#xA;    frontend &amp;lt;--&amp;gt; database&#xA;    database &amp;lt;--&amp;gt; dbAdmin&#xA;    dba &amp;lt;--&amp;gt; database&#xA;    dba &amp;lt;--&amp;gt; dbAdmin&#xA;    dbUsers &amp;lt;--&amp;gt; logAnalysis&#xA;    database &amp;lt;--&amp;gt; data&#xA;    database &amp;lt;--&amp;gt; management&#xA;    database &amp;lt;--&amp;gt; logs&#xA;    logs --&amp;gt; logAnalysis&#xA;    dba &amp;lt;--&amp;gt; logAnalysis&#xA;&#xA;style dbCluster stroke-dasharray: 5 5&#xA;style sqlAccount stroke-dasharray: 5 5&lt;/pre&gt;&lt;p&gt;They are especially effective because they:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Distributions</title>
				<link>/docs/linux/distributions/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/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 is the Linux kernel bundled with userland tools, package management, and defaults.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;Distros differ by package manager, default tools, desktop environment, and target use case&lt;/li&gt;&#xA;&lt;li&gt;Common use cases include desktop, server, embedded, and security tooling&lt;/li&gt;&#xA;&lt;li&gt;The same kernel can feel very different depending on the distribution&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;common-distributions&#34;&gt;Common distributions&lt;a class=&#34;anchor&#34; href=&#34;#common-distributions&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Category&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Examples&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;General purpose&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ubuntu, Fedora, Debian&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Enterprise&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Red Hat Enterprise Linux, CentOS&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Security tooling&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Kali Linux, Parrot OS, BlackArch, Pentoo, BackBox&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Specialized&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Raspberry Pi OS&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;debian-focus&#34;&gt;Debian focus&lt;a class=&#34;anchor&#34; href=&#34;#debian-focus&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Known for stability, reliability, and conservative defaults&lt;/li&gt;&#xA;&lt;li&gt;Common in servers, desktops, and embedded systems&lt;/li&gt;&#xA;&lt;li&gt;Uses the APT ecosystem for installs, upgrades, and dependency resolution&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Property&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Notes&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Stability&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Conservative package updates&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Release cycle&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Long-term support style releases&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Security&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dedicated security updates&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Flexibility&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Highly configurable&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Learning curve&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Higher than beginner-focused distros&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;trade-offs&#34;&gt;Trade-offs&lt;a class=&#34;anchor&#34; href=&#34;#trade-offs&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Pros: predictable behaviour, strong security track record, large package repository&lt;/li&gt;&#xA;&lt;li&gt;Cons: older package versions, more manual configuration, less beginner-friendly UX&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A distro is an opinionated bundle around the same kernel&lt;/li&gt;&#xA;&lt;li&gt;The right choice depends on environment and workflow&lt;/li&gt;&#xA;&lt;li&gt;Most trade-offs come down to stability versus freshness and control versus convenience&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Focusing on Assets</title>
				<link>/docs/threat-modelling/model/structured-approaches/focusing-on-assets/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/structured-approaches/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/cryptography/foundational/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/cryptography/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/threat-modelling/foundational/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/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/mathematics/pure-math/proofs/if-n-is-even-then-n2-is-even/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/mathematics/pure-math/proofs/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>Nmap</title>
				<link>/docs/networking/network-traffic-analysis/tools/nmap/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/network-traffic-analysis/tools/nmap/</guid>
				<description>&lt;h1 id=&#34;nmap&#34;&gt;Nmap&lt;a class=&#34;anchor&#34; href=&#34;#nmap&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Network Mapper (Nmap) is an open-source network scanning and security auditing tool. It uses raw packets to identify live hosts, open ports, services, and, when possible, operating system details.&lt;/p&gt;&#xA;&lt;h2 id=&#34;host-discovery&#34;&gt;Host Discovery&lt;a class=&#34;anchor&#34; href=&#34;#host-discovery&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Nmap can test whether hosts are reachable before performing a full port scan. A common discovery-only scan is &lt;code&gt;-sn&lt;/code&gt;. On local networks, Nmap often uses ARP requests; on routed networks, it typically falls back to ICMP and other probes.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Physical Layer</title>
				<link>/docs/networking/osi-network-model/physical-layer/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/osi-network-model/physical-layer/</guid>
				<description>&lt;h1 id=&#34;physical-layer&#34;&gt;Physical Layer&lt;a class=&#34;anchor&#34; href=&#34;#physical-layer&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The physical layer defines the electrical, mechanical, and procedural interface to the transmission medium. It covers connectors, signalling, line coding, frequencies, and other low-level transmission details.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Remote Photoplethysmography</title>
				<link>/docs/research/remote-photoplethysmography/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/research/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;em&gt;DepthPhys: Near-Infrared Remote Photoplethysmography in Driver Monitoring Systems&lt;/em&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;./docs/research/thesis-concise.pdf&#34;&gt;&lt;strong&gt;Concise version&lt;/strong&gt;&lt;/a&gt; (15 pages)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;./docs/research/thesis.pdf&#34;&gt;&lt;strong&gt;Full thesis&lt;/strong&gt;&lt;/a&gt; (63 pages)&lt;/li&gt;&#xA;&lt;/ul&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/mathematics/pure-math/sets/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/mathematics/pure-math/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/linux/shell/shell-prompt/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/shell/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 shell prompt shows that the shell is ready for input and often encodes the current user, host, and directory.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;Prompt format usually includes user, host, and working directory&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;PS1&lt;/code&gt; controls most Bash prompt formatting&lt;/li&gt;&#xA;&lt;li&gt;The ending symbol usually signals privilege level&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;common-symbols&#34;&gt;Common symbols&lt;a class=&#34;anchor&#34; href=&#34;#common-symbols&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Symbol&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;~&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Home directory&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;$&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Regular user&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;#&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Root user&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;ps1&#34;&gt;&lt;code&gt;PS1&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#ps1&#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;-webkit-text-size-adjust:none;&#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;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Escape&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\u&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Username&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\h&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Short hostname&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\H&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Full hostname&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\w&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Current working directory&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\d&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Date&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\D{format}&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Custom date format&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\t&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;24-hour time&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\T&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;12-hour time&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\@&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;AM/PM time&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\j&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Number of jobs&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\s&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Shell name&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Newline&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\r&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Carriage return&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;customisation-and-logging&#34;&gt;Customisation and logging&lt;a class=&#34;anchor&#34; href=&#34;#customisation-and-logging&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Prompt settings usually live in &lt;code&gt;~/.bashrc&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;~/.bash_history&lt;/code&gt; stores previously executed commands&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;script&lt;/code&gt; records a full terminal session&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;minimal-prompts&#34;&gt;Minimal prompts&lt;a class=&#34;anchor&#34; href=&#34;#minimal-prompts&#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;-webkit-text-size-adjust:none;&#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;$&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Prompt = context plus readiness indicator&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;PS1&lt;/code&gt; defines the formatting&lt;/li&gt;&#xA;&lt;li&gt;Symbols such as &lt;code&gt;$&lt;/code&gt; and &lt;code&gt;#&lt;/code&gt; show privilege level&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Spoofing</title>
				<link>/docs/threat-modelling/identify/stride/spoofing/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/stride/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>User Management</title>
				<link>/docs/linux/system-management/user-management/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/system-management/user-management/</guid>
				<description>&lt;h1 id=&#34;user-management&#34;&gt;User Management&lt;a class=&#34;anchor&#34; href=&#34;#user-management&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;User management covers accounts, groups, passwords, and privilege elevation.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;Users can be created, modified, grouped, and removed&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;sudo&lt;/code&gt; is the standard way to run a command with elevated privileges without logging in as root&lt;/li&gt;&#xA;&lt;li&gt;Group membership is a common way to grant shared access&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Command&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Purpose&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;sudo&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Run a command as another user, usually root&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;su&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Switch user and start a shell&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;useradd&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Create a user&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;userdel&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Remove a user&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;usermod&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Modify a user account&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;addgroup&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Add a group&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;delgroup&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Remove a group&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;passwd&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Change a password&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Users own access&lt;/li&gt;&#xA;&lt;li&gt;Groups share access&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;sudo&lt;/code&gt; provides controlled privilege escalation&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Verilog</title>
				<link>/docs/fpga/verilog/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/fpga/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/fpga/1-bit-mux/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/fpga/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;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;X&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Y&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;S&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Z&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;xx&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;xx&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;xx&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;xx&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&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>Data Link Layer</title>
				<link>/docs/networking/osi-network-model/data-link-layer/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/osi-network-model/data-link-layer/</guid>
				<description>&lt;h1 id=&#34;data-link-layer&#34;&gt;Data Link Layer&lt;a class=&#34;anchor&#34; href=&#34;#data-link-layer&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The data link layer transfers frames between devices on the same local network segment. It also defines how devices identify one another on the local link and how frames move across the physical medium.&lt;/p&gt;&#xA;&lt;p&gt;The data link layer handles:&#xA;The data link layer transfers frames between nodes on the same local network segment. It can also detect and sometimes correct errors from the physical layer.&lt;/p&gt;&#xA;&lt;p&gt;The data link layer handles:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Focusing on Attackers</title>
				<link>/docs/threat-modelling/model/structured-approaches/focusing-on-attackers/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/structured-approaches/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/mathematics/pure-math/functions/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/mathematics/pure-math/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/mathematics/pure-math/proofs/if-n-is-odd-then-n2-is-odd/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/mathematics/pure-math/proofs/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>Package Management</title>
				<link>/docs/linux/system-management/package-management/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/system-management/package-management/</guid>
				<description>&lt;h1 id=&#34;package-management&#34;&gt;Package Management&lt;a class=&#34;anchor&#34; href=&#34;#package-management&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Package managers install software, resolve dependencies, and keep systems updated.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;Packages bundle binaries, configuration, and dependency metadata&lt;/li&gt;&#xA;&lt;li&gt;Package managers add install, remove, upgrade, and repository workflows&lt;/li&gt;&#xA;&lt;li&gt;Debian-based systems commonly use &lt;code&gt;dpkg&lt;/code&gt; and &lt;code&gt;apt&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;common-tools&#34;&gt;Common tools&lt;a class=&#34;anchor&#34; href=&#34;#common-tools&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Command&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Purpose&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;dpkg&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Install and manage Debian package files&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;apt&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;High-level package manager for Debian-based systems&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;aptitude&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Alternative front end for Debian package management&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;snap&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Install and manage snap packages&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;gem&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Manage Ruby packages&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;pip&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Install Python packages&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;git&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Distributed version control and source retrieval&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;apt&#34;&gt;APT&lt;a class=&#34;anchor&#34; href=&#34;#apt&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;dpkg&lt;/code&gt; works with local &lt;code&gt;.deb&lt;/code&gt; files&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;apt&lt;/code&gt; handles dependency resolution through repositories&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;/etc/apt/sources.list&lt;/code&gt; defines the repositories a system can query&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;apt-cache&lt;/code&gt; searches the local package cache&lt;/li&gt;&#xA;&lt;/ul&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;-webkit-text-size-adjust:none;&#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;apt-cache search impacket&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use &lt;code&gt;dpkg&lt;/code&gt; for package files and &lt;code&gt;apt&lt;/code&gt; for dependency-aware installs&lt;/li&gt;&#xA;&lt;li&gt;Repository metadata is as important as the package itself&lt;/li&gt;&#xA;&lt;li&gt;Package managers trade manual effort for repeatable installation and updates&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Permissions</title>
				<link>/docs/linux/permissions/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/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 use an owner, group, and others model to control access to files and directories.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;Permission bits define read, write, and execute access&lt;/li&gt;&#xA;&lt;li&gt;Files and directories interpret those bits differently&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;chmod&lt;/code&gt;, &lt;code&gt;chown&lt;/code&gt;, and special bits modify access rules&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;permission-types&#34;&gt;Permission types&lt;a class=&#34;anchor&#34; href=&#34;#permission-types&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Symbol&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;r&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Read&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;w&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Write&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;x&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Execute&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;permission-scope&#34;&gt;Permission scope&lt;a class=&#34;anchor&#34; href=&#34;#permission-scope&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Scope&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;u&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Owner&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;g&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Group&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;o&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Others&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;file-vs-directory-semantics&#34;&gt;File vs directory semantics&lt;a class=&#34;anchor&#34; href=&#34;#file-vs-directory-semantics&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Object&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;code&gt;r&lt;/code&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;code&gt;w&lt;/code&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;&lt;code&gt;x&lt;/code&gt;&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;File&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Read contents&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Modify contents&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Execute file&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Directory&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;List entries&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Create or remove entries&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Traverse directory&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Directory traversal requires &lt;code&gt;x&lt;/code&gt;, even if &lt;code&gt;r&lt;/code&gt; is set&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;x&lt;/code&gt; on a directory does not mean you can execute files inside it&lt;/li&gt;&#xA;&lt;li&gt;Changing directory contents requires &lt;code&gt;w&lt;/code&gt; on the directory itself&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;representation&#34;&gt;Representation&lt;a class=&#34;anchor&#34; href=&#34;#representation&#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;-webkit-text-size-adjust:none;&#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;ls -l /etc/passwd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-rwxrw-r-- &lt;span style=&#34;color:#ff9f43&#34;&gt;1&lt;/span&gt; root root &lt;span style=&#34;color:#ff9f43&#34;&gt;1641&lt;/span&gt; May &lt;span style=&#34;color:#ff9f43&#34;&gt;4&lt;/span&gt; 23:42 /etc/passwd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Segment&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;File type&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rwx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Owner permissions&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rw-&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Group permissions&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;r--&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Others permissions&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hard link count&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;root root&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Owner and group&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;1641&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;File size&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;May 4 23:42&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Last modified&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;octal-notation&#34;&gt;Octal notation&lt;a class=&#34;anchor&#34; href=&#34;#octal-notation&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Value&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Permission&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;4&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Read&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Write&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Execute&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Example&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;7&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rwx&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;6&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;rw-&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;r-x&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;4&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;r--&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&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;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rwxrw-r-- = 764&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;modifying-permissions&#34;&gt;Modifying permissions&lt;a class=&#34;anchor&#34; href=&#34;#modifying-permissions&#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;-webkit-text-size-adjust:none;&#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;chmod a+r shell&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chmod &lt;span style=&#34;color:#ff9f43&#34;&gt;754&lt;/span&gt; shell&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;chown &amp;lt;user&amp;gt;:&amp;lt;group&amp;gt; &amp;lt;file-or-directory&amp;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;chmod&lt;/code&gt; adds or removes permissions with symbolic or numeric modes&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;chown&lt;/code&gt; changes the owner and optionally the group&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;special-bits&#34;&gt;Special bits&lt;a class=&#34;anchor&#34; href=&#34;#special-bits&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;SUID and SGID run a program with the file owner&amp;rsquo;s or group&amp;rsquo;s privileges&lt;/li&gt;&#xA;&lt;li&gt;The sticky bit prevents users from deleting files they do not own in shared directories&lt;/li&gt;&#xA;&lt;li&gt;In &lt;code&gt;ls -l&lt;/code&gt;, &lt;code&gt;s&lt;/code&gt; replaces &lt;code&gt;x&lt;/code&gt; for SUID or SGID, and &lt;code&gt;t&lt;/code&gt; marks the sticky bit&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ownership sets the baseline&lt;/li&gt;&#xA;&lt;li&gt;Groups extend access&lt;/li&gt;&#xA;&lt;li&gt;Permission bits gate operations&lt;/li&gt;&#xA;&lt;li&gt;Special bits change how execution and deletion behave&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Protocol Data Unit</title>
				<link>/docs/networking/protocol-data-unit/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/protocol-data-unit/</guid>
				<description>&lt;h1 id=&#34;protocol-data-unit&#34;&gt;Protocol Data Unit&lt;a class=&#34;anchor&#34; href=&#34;#protocol-data-unit&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;A protocol data unit (PDU) is a single unit of information transmitted among peer entities of a computer network.&lt;/p&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart LR&#xA;&#xA;subgraph Bit&#xA;    Physical&#xA;end&#xA;&#xA;subgraph Frame&#xA;    Link&#xA;end&#xA;&#xA;subgraph Packet&#xA;    Network&#xA;end&#xA;&#xA;subgraph Segment[Segment / Datagram]&#xA;    Transport&#xA;end&#xA;&#xA;subgraph Data&#xA;    Session&#xA;    Presentation&#xA;    Application&#xA;end&#xA;&#xA;Bit --&amp;gt; Frame --&amp;gt; Packet --&amp;gt; Segment --&amp;gt; Data&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Representing Attack Trees</title>
				<link>/docs/threat-modelling/identify/attack-trees/representing-attack-trees/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/attack-trees/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/research/subsurface-scattering/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/research/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;./docs/research/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/threat-modelling/identify/stride/tampering/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/stride/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>tcpdump</title>
				<link>/docs/networking/network-traffic-analysis/tools/tcpdump/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/network-traffic-analysis/tools/tcpdump/</guid>
				<description>&lt;h1 id=&#34;tcpdump&#34;&gt;tcpdump&lt;a class=&#34;anchor&#34; href=&#34;#tcpdump&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;tcpdump&lt;/code&gt; is a command-line packet sniffer that can capture and interpret data frames from a file or network interface. It supports &lt;a href=&#34;./docs/networking/berkeley-packet-filters/&#34;&gt;Berkeley Packet Filter&lt;/a&gt; syntax.&lt;/p&gt;&#xA;&lt;p&gt;To capture network traffic from the wire, it uses &lt;code&gt;pcap&lt;/code&gt; and &lt;code&gt;libpcap&lt;/code&gt; with an interface in promiscuous mode. This lets the program see packets sourced from or destined for any device on the local network, not just traffic addressed to the host.&lt;/p&gt;&#xA;&lt;blockquote class=&#39;book-hint &#39;&gt;&#xA;&lt;p&gt;In networking, promiscuous mode allows a network device, such as a network interface card (NIC), to intercept and read every data packet passing through its network segment rather than just packets specifically addressed to it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Unified Modeling Language</title>
				<link>/docs/threat-modelling/model/diagrams/unified-modeling-language/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/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/fpga/1-bit-full-addder/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/fpga/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;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;X&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Y&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;C_in&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Z&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;C_out&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;0&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;1&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&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/threat-modelling/identify/elevation-of-privlege/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/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/threat-modelling/identify/attack-trees/example-attack-tree/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/attack-trees/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/threat-modelling/model/structured-approaches/focusing-on-software/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/structured-approaches/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/mathematics/pure-math/proofs/if-x20-then-x0/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/mathematics/pure-math/proofs/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/research/iot-bushfire-detection/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/research/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;./docs/research/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/mathematics/pure-math/logic/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/mathematics/pure-math/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;&#xA;&lt;/blockquote&gt;</description>
			</item>
			<item>
				<title>Network Layer</title>
				<link>/docs/networking/osi-network-model/network-layer/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/osi-network-model/network-layer/</guid>
				<description>&lt;h1 id=&#34;network-layer&#34;&gt;Network Layer&lt;a class=&#34;anchor&#34; href=&#34;#network-layer&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The network layer is responsible for packet forwarding between hosts, including routing through intermediate routers. It provides:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Connectionless communication.&lt;/li&gt;&#xA;&lt;li&gt;Host addressing.&lt;/li&gt;&#xA;&lt;li&gt;Message forwarding.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;internet-protocol&#34;&gt;Internet Protocol&lt;a class=&#34;anchor&#34; href=&#34;#internet-protocol&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The Internet Protocol (IP), introduced in &lt;a href=&#34;https://tools.ietf.org/html/rfc791&#34;&gt;RFC 791&lt;/a&gt;, exists at the network layer. IP routes packets, encapsulates data, and fragments and reassembles datagrams when they reach the destination host. By design, IP is connectionless and provides no guarantee that data will reach its intended recipient.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Network Security</title>
				<link>/docs/networking/network-security/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/network-security/</guid>
				<description>&lt;h1 id=&#34;network-security&#34;&gt;Network Security&lt;a class=&#34;anchor&#34; href=&#34;#network-security&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Network security focuses on protecting availability, integrity, and confidentiality in connected systems. Common attacks target bandwidth, routing, name resolution, and device access, so defenses usually combine filtering, redundancy, and monitoring.&lt;/p&gt;&#xA;&lt;h2 id=&#34;firewalls&#34;&gt;Firewalls&lt;a class=&#34;anchor&#34; href=&#34;#firewalls&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A firewall controls traffic between network segments by applying a rule set to each connection attempt. It can be implemented in software, hardware, or both, and it decides whether packets are allowed, dropped, or blocked. The goal is to prevent unauthorized or unwanted connections.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Repudiation</title>
				<link>/docs/threat-modelling/identify/stride/repudiation/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/stride/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>Service and Process Management</title>
				<link>/docs/linux/system-management/service-and-process-management/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/system-management/service-and-process-management/</guid>
				<description>&lt;h1 id=&#34;service-and-process-management&#34;&gt;Service and Process Management&lt;a class=&#34;anchor&#34; href=&#34;#service-and-process-management&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Services and processes are background workloads controlled with &lt;code&gt;systemd&lt;/code&gt;, signals, and job control.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;Services can be started, stopped, restarted, enabled, and inspected&lt;/li&gt;&#xA;&lt;li&gt;Processes are identified by PIDs and may have parent processes&lt;/li&gt;&#xA;&lt;li&gt;Job control and command chaining are common shell workflows&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;systemctl&#34;&gt;&lt;code&gt;systemctl&lt;/code&gt;&lt;a class=&#34;anchor&#34; href=&#34;#systemctl&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;start&lt;/code&gt;, &lt;code&gt;stop&lt;/code&gt;, &lt;code&gt;restart&lt;/code&gt;, and &lt;code&gt;status&lt;/code&gt; control service state&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;enable&lt;/code&gt; makes a service start at boot&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;systemctl list-units --type=service&lt;/code&gt; shows active services&lt;/li&gt;&#xA;&lt;/ul&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;-webkit-text-size-adjust:none;&#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;systemctl list-units --type&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;service&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;process-control&#34;&gt;Process control&lt;a class=&#34;anchor&#34; href=&#34;#process-control&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Common states: running, waiting, stopped, zombie&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;kill&lt;/code&gt;, &lt;code&gt;pkill&lt;/code&gt;, &lt;code&gt;pgrep&lt;/code&gt;, and &lt;code&gt;killall&lt;/code&gt; send signals or locate processes&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;kill -l&lt;/code&gt; lists available signals&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;job-control&#34;&gt;Job control&lt;a class=&#34;anchor&#34; href=&#34;#job-control&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;Ctrl+Z&lt;/code&gt; suspends the current job&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;jobs&lt;/code&gt; lists suspended or background jobs&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;bg&lt;/code&gt; resumes a job in the background&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;fg &amp;lt;id&amp;gt;&lt;/code&gt; returns a job to the foreground&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;amp;&lt;/code&gt; runs a command in the background immediately&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;command-chaining&#34;&gt;Command chaining&lt;a class=&#34;anchor&#34; href=&#34;#command-chaining&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;;&lt;/code&gt; runs commands sequentially&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; runs the next command only on success&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;|&lt;/code&gt; sends stdout from one command to the next&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;systemd&lt;/code&gt; manages service lifecycle on most modern distributions&lt;/li&gt;&#xA;&lt;li&gt;PIDs identify running processes and &lt;code&gt;/proc&lt;/code&gt; exposes process details&lt;/li&gt;&#xA;&lt;li&gt;Signals request state changes; jobs manage interactive shell work&lt;/li&gt;&#xA;&lt;li&gt;Simple commands become more powerful when chained together&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Swim Lane Diagrams</title>
				<link>/docs/threat-modelling/model/diagrams/swim-lane-diagrams/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/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>Termshark</title>
				<link>/docs/networking/network-traffic-analysis/tools/termshark/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/network-traffic-analysis/tools/termshark/</guid>
				<description>&lt;h1 id=&#34;termshark&#34;&gt;Termshark&lt;a class=&#34;anchor&#34; href=&#34;#termshark&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Termshark is a text-based user interface (TUI) application that provides a Wireshark-like interface in the terminal.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Brainstorming</title>
				<link>/docs/threat-modelling/identify/brainstorming/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/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>Hazards</title>
				<link>/docs/fpga/hazards/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/fpga/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;./docs/fpga/1-bit-mux/&#34;&gt;1-bit multiplexer&lt;/a&gt; and &lt;a href=&#34;./docs/fpga/1-bit-full-addder/&#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;&#xA;&lt;/blockquote&gt;&lt;p&gt;Consider the previously defined &lt;a href=&#34;./docs/fpga/1-bit-mux/&#34;&gt;1-bit multiplexer&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;./docs/fpga/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/threat-modelling/identify/stride/information-disclosure/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/stride/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/threat-modelling/identify/attack-trees/real-world-attack-trees/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/attack-trees/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;./docs/threat-modelling/identify/attack-trees/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;./docs/threat-modelling/identify/attack-trees/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;./docs/threat-modelling/identify/attack-trees/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/threat-modelling/model/diagrams/state-diagrams/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/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>Task Scheduling</title>
				<link>/docs/linux/system-management/task-scheduling/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/system-management/task-scheduling/</guid>
				<description>&lt;h1 id=&#34;task-scheduling&#34;&gt;Task Scheduling&lt;a class=&#34;anchor&#34; href=&#34;#task-scheduling&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Task scheduling runs commands later, repeatedly, or at boot.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;systemd&lt;/code&gt; timers are the native option on modern Linux systems&lt;/li&gt;&#xA;&lt;li&gt;cron is a simple, time-based scheduler that remains widely used&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;systemd-timers&#34;&gt;&lt;code&gt;systemd&lt;/code&gt; timers&lt;a class=&#34;anchor&#34; href=&#34;#systemd-timers&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A timer unit usually has a matching service unit&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;OnBootSec&lt;/code&gt; runs once after boot&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;OnUnitActiveSec&lt;/code&gt; repeats after the previous run&lt;/li&gt;&#xA;&lt;li&gt;Reload unit files with &lt;code&gt;systemctl daemon-reload&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&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;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;[Unit]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;Description&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;My Timer&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;[Timer]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;OnBootSec&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;3min&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;OnUnitActiveSec&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;1hour&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;[Install]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;WantedBy&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;timers.target&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;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;[Unit]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;Description&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;My Service&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;[Service]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;ExecStart&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;/full/path/to/my/script.sh&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;[Install]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57c7ff&#34;&gt;WantedBy&lt;/span&gt;&lt;span style=&#34;color:#ff6ac1&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;multi-user.target&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;cron&#34;&gt;Cron&lt;a class=&#34;anchor&#34; href=&#34;#cron&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Field&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Values&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Minute&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;0-59&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hour&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;0-23&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Day of month&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;1-31&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Month&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;1-12&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Day of week&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;0-7&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-cron&#34; data-lang=&#34;cron&#34;&gt;0 */6 * * * /path/to/update_software.sh&#xA;0 0 1 * * /path/to/scripts/run_scripts.sh&#xA;0 0 * * 0 /path/to/scripts/clean_database.sh&#xA;0 0 * * 7 /path/to/scripts/backup.sh&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use timers when you want native &lt;code&gt;systemd&lt;/code&gt; integration&lt;/li&gt;&#xA;&lt;li&gt;Use cron when you want compact recurring schedules&lt;/li&gt;&#xA;&lt;li&gt;Prefer the simplest scheduler that fits the job&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Transport Layer</title>
				<link>/docs/networking/osi-network-model/transport-layer/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/osi-network-model/transport-layer/</guid>
				<description>&lt;h1 id=&#34;transport-layer&#34;&gt;Transport Layer&lt;a class=&#34;anchor&#34; href=&#34;#transport-layer&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The transport layer provides end-to-end communication services for applications. It handles connection-oriented communication, reliability, flow control, congestion control, and multiplexing.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Connection-oriented communication.&lt;/li&gt;&#xA;&lt;li&gt;In-order delivery.&lt;/li&gt;&#xA;&lt;li&gt;Reliability.&lt;/li&gt;&#xA;&lt;li&gt;Flow control.&lt;/li&gt;&#xA;&lt;li&gt;Congestion control.&lt;/li&gt;&#xA;&lt;li&gt;Multiplexing.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;tcp-vs-udp&#34;&gt;TCP vs. UDP&lt;a class=&#34;anchor&#34; href=&#34;#tcp-vs-udp&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The Transmission Control Protocol (TCP) (&lt;a href=&#34;https://tools.ietf.org/html/rfc793&#34;&gt;RFC 793&lt;/a&gt;) and User Datagram Protocol (UDP) (&lt;a href=&#34;https://tools.ietf.org/html/rfc768&#34;&gt;RFC 768&lt;/a&gt;) reside at the transport layer.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Characteristic&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;TCP&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;UDP&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Transmission&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Connection-oriented&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Connectionless.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Connection establishment&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Uses a three-way handshake.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Does not verify that the destination is listening.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Data delivery&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Stream-based.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Packet-based.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Receipt of data&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Uses sequence and acknowledgment numbers.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Does not track receipt.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Speed&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;More overhead, but reliable.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Faster, but unreliable.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;tcp&#34;&gt;TCP&lt;a class=&#34;anchor&#34; href=&#34;#tcp&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;TCP uses flags in the header. The three flags worth remembering first are SYN, ACK, and FIN.&lt;/p&gt;</description>
			</item>
			<item>
				<title>TShark</title>
				<link>/docs/networking/network-traffic-analysis/tools/tshark/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/network-traffic-analysis/tools/tshark/</guid>
				<description>&lt;h1 id=&#34;tshark&#34;&gt;TShark&lt;a class=&#34;anchor&#34; href=&#34;#tshark&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;TShark is a purpose-built terminal tool based on Wireshark. It shares many of the same features, syntax, and options.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Core Linux Commands</title>
				<link>/docs/linux/core-linux-commands/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/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;p&gt;Common commands are easier to remember when grouped by discovery, inspection, navigation, and search.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;man&lt;/code&gt; and &lt;code&gt;apropos&lt;/code&gt; help you discover commands&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;which&lt;/code&gt; resolves the executable that will run&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;find&lt;/code&gt; is precise and real-time; &lt;code&gt;locate&lt;/code&gt; is fast and indexed&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;discovery&#34;&gt;Discovery&lt;a class=&#34;anchor&#34; href=&#34;#discovery&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Command&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Purpose&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;man&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Read manual pages&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;apropos&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Search manual page descriptions by keyword&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;explainshell&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;External reference for command syntax&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;system-inspection&#34;&gt;System inspection&lt;a class=&#34;anchor&#34; href=&#34;#system-inspection&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Command&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Purpose&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;whoami&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Print the current user&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;id&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Show user and group IDs&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;hostname&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Get or set the hostname&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;uname&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Show kernel and system information&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Print the current directory&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;env&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Show or set environment variables&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ps&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Inspect processes&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;who&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Show logged-in users&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;lsof&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Show open files&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;lsblk&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;List block devices&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;lsusb&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;List USB devices&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;lspci&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;List PCI devices&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;networking&#34;&gt;Networking&lt;a class=&#34;anchor&#34; href=&#34;#networking&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Command&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Purpose&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ifconfig&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Legacy network interface tool&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ip&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Modern network interface tool&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;netstat&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Legacy network status tool&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ss&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Inspect sockets&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;file-and-path-utilities&#34;&gt;File and path utilities&lt;a class=&#34;anchor&#34; href=&#34;#file-and-path-utilities&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Command&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Purpose&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;List directory contents&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Change directory&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;which&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Show the executable path for a command&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&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;-webkit-text-size-adjust:none;&#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;ls -l /etc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;which python&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;ls -a&lt;/code&gt; includes hidden files. &lt;code&gt;cd -&lt;/code&gt; returns to the previous directory.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Denial of Service</title>
				<link>/docs/threat-modelling/identify/stride/denial-of-service/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/stride/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>Limitations and Perspective</title>
				<link>/docs/threat-modelling/identify/attack-trees/limitations-and-perspective/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/attack-trees/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/fpga/overflow-counter/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/fpga/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>Session Layer</title>
				<link>/docs/networking/osi-network-model/session-layer/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/osi-network-model/session-layer/</guid>
				<description>&lt;h1 id=&#34;session-layer&#34;&gt;Session Layer&lt;a class=&#34;anchor&#34; href=&#34;#session-layer&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The session layer provides the mechanism for opening, closing, and managing a session between end-user application processes. It supports a semi-permanent dialogue between endpoints.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Trust Boundaries</title>
				<link>/docs/threat-modelling/model/diagrams/trust-boundaries/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/model/diagrams/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>Wireshark</title>
				<link>/docs/networking/network-traffic-analysis/tools/wireshark/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/network-traffic-analysis/tools/wireshark/</guid>
				<description>&lt;h1 id=&#34;wireshark&#34;&gt;Wireshark&lt;a class=&#34;anchor&#34; href=&#34;#wireshark&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Wireshark is the feature-rich GUI option for traffic capture and analysis. &lt;code&gt;wireshark&lt;/code&gt; supports &lt;a href=&#34;./docs/networking/berkeley-packet-filters/&#34;&gt;Berkeley Packet Filter&lt;/a&gt; syntax.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Clock Division</title>
				<link>/docs/fpga/clock-division/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/fpga/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;./docs/fpga/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/threat-modelling/identify/stride/elevation-of-privelege/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/threat-modelling/identify/stride/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>File Descriptors and Redirection</title>
				<link>/docs/linux/file-descriptors-and-redirection/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/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;p&gt;File descriptors provide a uniform way for processes to read and write streams.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;0&lt;/code&gt; is stdin, &lt;code&gt;1&lt;/code&gt; is stdout, and &lt;code&gt;2&lt;/code&gt; is stderr&lt;/li&gt;&#xA;&lt;li&gt;Redirection rewires those streams to files or &lt;code&gt;/dev/null&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Pipes connect the output of one command to the input of another&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 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;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;FD&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Name&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Purpose&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;STDIN&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Standard input&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;STDOUT&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Standard output&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;STDERR&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Standard error&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;redirection&#34;&gt;Redirection&lt;a class=&#34;anchor&#34; href=&#34;#redirection&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Operator&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Overwrite a file with stdout&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Append stdout to a file&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Use a file as stdin&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;2&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Redirect stderr&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;1&amp;gt;&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Redirect stdout explicitly&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&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;-webkit-text-size-adjust:none;&#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;find /etc/ -name networks 2&amp;gt;/dev/null&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;find /etc/ -name networks &amp;gt; results.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;find /etc/ -name networks 2&amp;gt;/dev/null 1&amp;gt;stdout.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cat &amp;lt; stdout.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;here-documents&#34;&gt;Here documents&lt;a class=&#34;anchor&#34; href=&#34;#here-documents&#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;-webkit-text-size-adjust:none;&#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 &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;lt;&amp;lt; EOF &amp;gt;&amp;gt; stream.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;My&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;Input&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;Stream&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#5af78e&#34;&gt;EOF&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;pipes&#34;&gt;Pipes&lt;a class=&#34;anchor&#34; href=&#34;#pipes&#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;-webkit-text-size-adjust:none;&#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;find /etc/ -name &lt;span style=&#34;color:#5af78e&#34;&gt;&amp;#34;*.conf&amp;#34;&lt;/span&gt; 2&amp;gt;/dev/null | grep systemd | wc -l&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Each process reads from FD &lt;code&gt;0&lt;/code&gt; and writes to FD &lt;code&gt;1&lt;/code&gt; or &lt;code&gt;2&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Redirection changes where those streams go&lt;/li&gt;&#xA;&lt;li&gt;Pipes build dataflow pipelines between commands&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;/dev/null&lt;/code&gt; is a sink for discarded output&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Presentation Layer</title>
				<link>/docs/networking/osi-network-model/presentation-layer/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/osi-network-model/presentation-layer/</guid>
				<description>&lt;h1 id=&#34;presentation-layer&#34;&gt;Presentation Layer&lt;a class=&#34;anchor&#34; href=&#34;#presentation-layer&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The presentation layer serves as the data translator for the network. It provides:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Data conversion.&lt;/li&gt;&#xA;&lt;li&gt;Character code translation.&lt;/li&gt;&#xA;&lt;li&gt;Compression.&lt;/li&gt;&#xA;&lt;li&gt;Encryption and decryption.&lt;/li&gt;&#xA;&lt;li&gt;Serialisation.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Application Layer</title>
				<link>/docs/networking/osi-network-model/application-layer/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/osi-network-model/application-layer/</guid>
				<description>&lt;h1 id=&#34;application-layer&#34;&gt;Application Layer&lt;a class=&#34;anchor&#34; href=&#34;#application-layer&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;The application layer defines the communication protocols and interface methods used by hosts in a network.&lt;/p&gt;&#xA;&lt;h2 id=&#34;http&#34;&gt;HTTP&lt;a class=&#34;anchor&#34; href=&#34;#http&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Hypertext Transfer Protocol (HTTP) lives at the application layer and enables cleartext communication between a client and server over TCP. HTTP commonly uses ports 80 and 8000.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Method&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Description&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;HEAD&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Requests the same resource as &lt;code&gt;GET&lt;/code&gt; without the response body. Useful for metadata and health checks.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Reads data from the server.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;POST&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Submits data for processing.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;PUT&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Creates or replaces a resource at the target URI.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;DELETE&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Removes the resource at the target URI.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;TRACE&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Echoes the request for diagnostics.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;OPTIONS&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Reports the methods supported by the target resource.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;CONNECT&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Establishes a tunnel, usually through a proxy.&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;https&#34;&gt;HTTPS&lt;a class=&#34;anchor&#34; href=&#34;#https&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;HTTP Secure (HTTPS) wraps HTTP in TLS so the conversation can be encrypted end to end. It commonly uses ports 443 and 8443 instead of port 80.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Seven Segment Display</title>
				<link>/docs/fpga/seven-segment-display/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/fpga/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;./docs/fpga/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>
			<item>
				<title>SSH</title>
				<link>/docs/linux/ssh/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/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;SSH is the standard protocol for secure remote command execution and administration on Unix-like systems.&lt;/p&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;ul&gt;&#xA;&lt;li&gt;Provides encrypted remote access without a GUI&lt;/li&gt;&#xA;&lt;li&gt;Is widely installed and efficient on low-resource systems&lt;/li&gt;&#xA;&lt;li&gt;Commonly used for administration, automation, and file transfer workflows&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#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;-webkit-text-size-adjust:none;&#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;ssh user@host&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;SSH replaces insecure remote login methods with an encrypted channel&lt;/li&gt;&#xA;&lt;li&gt;It is the default way to manage many remote Linux systems&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Regular Expressions (Regex)</title>
				<link>/docs/linux/regular-expressions-regex/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/linux/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;Regex patterns match and filter text. In Linux they are commonly used with &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;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;ul&gt;&#xA;&lt;li&gt;Regex is compact and composable&lt;/li&gt;&#xA;&lt;li&gt;Start with simple patterns and add anchors or grouping only when needed&lt;/li&gt;&#xA;&lt;li&gt;Most mistakes come from precedence, escaping, or incorrect anchoring&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;a class=&#34;anchor&#34; href=&#34;#reference&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;core-constructs&#34;&gt;Core constructs&lt;a class=&#34;anchor&#34; href=&#34;#core-constructs&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Pattern&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Any character&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Zero or more of the previous token&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;+&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;One or more of the previous token&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;?&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Zero or one of the previous token&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;^&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Start of line&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;$&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;End of line&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\b&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Word boundary&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\w&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Word character&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Character class&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;()&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Grouping&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;|&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;OR operator&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 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;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Option&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Meaning&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Basic regex&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep -E&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Extended regex; usually preferred&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep -v&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Invert the match&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;common-patterns&#34;&gt;Common patterns&lt;a class=&#34;anchor&#34; href=&#34;#common-patterns&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Use case&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Pattern&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Starts with a word&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;^word&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ends with a word&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;word$&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Contains a word&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;word&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Word boundary&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;\bword\b&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Starts with A, ends with B&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;^A.*B$&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;A or B&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;A|B&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&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;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Task&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Command&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Exclude comment lines&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep -v &#39;#&#39; /etc/ssh/sshd_config&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Match words starting with &lt;code&gt;Permit&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep -E &#39;\bPermit\w*&#39; /etc/ssh/sshd_config&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Match words ending with &lt;code&gt;Authentication&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep -E &#39;\w*Authentication\b&#39; /etc/ssh/sshd_config&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Match lines containing &lt;code&gt;Key&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep &#39;Key&#39; /etc/ssh/sshd_config&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Match lines starting with &lt;code&gt;Password&lt;/code&gt; and containing &lt;code&gt;yes&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep -E &#39;^Password.*yes&#39; /etc/ssh/sshd_config&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Match lines ending with &lt;code&gt;yes&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;grep -E &#39;yes$&#39; /etc/ssh/sshd_config&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;best-practices&#34;&gt;Best practices&lt;a class=&#34;anchor&#34; href=&#34;#best-practices&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Prefer &lt;code&gt;grep -E&lt;/code&gt; for extended regex&lt;/li&gt;&#xA;&lt;li&gt;Avoid unnecessary &lt;code&gt;cat&lt;/code&gt;; pipe the file directly into the command&lt;/li&gt;&#xA;&lt;li&gt;Build patterns incrementally and verify anchors and grouping&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mental-model&#34;&gt;Mental Model&lt;a class=&#34;anchor&#34; href=&#34;#mental-model&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Regex matches text by combining anchors, quantifiers, and grouping&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;^&lt;/code&gt; and &lt;code&gt;$&lt;/code&gt; constrain position&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;*&lt;/code&gt; and &lt;code&gt;+&lt;/code&gt; control repetition&lt;/li&gt;&#xA;&lt;li&gt;Parentheses and &lt;code&gt;|&lt;/code&gt; change matching logic&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title></title>
				<link>/docs/networking/network-traffic-analysis/tools/target/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>/docs/networking/network-traffic-analysis/tools/target/</guid>
				<description>&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD HTML 4.01//EN&#34; &#34;http://www.w3.org/TR/html4/strict.dtd&#34;&gt;&#xA;&lt;html xmlns:fo=&#34;http://www.w3.org/1999/XSL/Format&#34;&gt;&#xA;&lt;head&gt;&#xA;&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=UTF-8&#34;&gt;&#xA;&lt;!--generated with nmap.xsl - version 0.9c by Benjamin Erb - http://www.benjamin-erb.de/nmap_xsl.php --&gt;&lt;style type=&#34;text/css&#34;&gt;&#xA;/* stylesheet print */&#xA;@media print&#xA;{&#xA;  #menu {&#xA;    display:none;&#xA;  }&#xA;&#xA;  body {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;  }&#xA;  &#xA;  h1 {&#xA;    font-size: 13pt;&#xA;    font-weight:bold;&#xA;    margin:4pt 0pt 0pt 0pt;&#xA;    padding:0;&#xA;  }&#xA;&#xA;  h2 {&#xA;    font-size: 12pt;&#xA;    font-weight:bold;&#xA;    margin:3pt 0pt 0pt 0pt;&#xA;    padding:0;&#xA;  }&#xA;&#xA;  h3, a:link, a:visited {&#xA;    font-size: 9pt;&#xA;    font-weight:bold;&#xA;    margin:1pt 0pt 0pt 20pt;&#xA;    padding:0;&#xA;    text-decoration: none;&#xA;    color: #000000;&#xA;  }&#xA;&#xA;  p,ul {&#xA;    font-size: 9pt;&#xA;    margin:1pt 0pt 8pt 40pt;&#xA;    padding:0;&#xA;    text-align:left;&#xA;  }&#xA;&#xA;  li {&#xA;    font-size: 9pt;&#xA;    margin:0;&#xA;    padding:0;&#xA;    text-align:left;&#xA;  }&#xA;&#xA;  table {&#xA;    margin:1pt 0pt 8pt 40pt;&#xA;    border:0px;&#xA;    width:90%&#xA;  }&#xA;&#xA;  td {&#xA;    border:0px;&#xA;    border-top:1px solid black;&#xA;    font-size: 9pt;&#xA;  }&#xA;&#xA;  .head td {&#xA;    border:0px;&#xA;    font-weight:bold;&#xA;    font-size: 9pt;&#xA;  }&#xA;  .noprint { display: none; }&#xA;}&#xA;&#xA;/* stylesheet screen */&#xA;@media screen&#xA;{&#xA;  body {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    margin: 0px;&#xA;    background-color: #FFFFFF;&#xA;    color: #000000;&#xA;    text-align: center;&#xA;  }&#xA;&#xA;  #container {&#xA;    text-align:left;&#xA;    margin: 10px auto;&#xA;    width: 90%;&#xA;  }&#xA;&#xA;  h1 {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    font-weight:bold;&#xA;    font-size: 14pt;&#xA;    color: #FFFFFF;&#xA;    background-color:#2A0D45;&#xA;    margin:10px 0px 0px 0px;&#xA;    padding:5px 4px 5px 4px;&#xA;    width: 100%;&#xA;    border:1px solid black;&#xA;    text-align: left;&#xA;  }&#xA;&#xA;  h2 {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    font-weight:bold;&#xA;    font-size: 11pt;&#xA;    color: #000000;&#xA;    margin:30px 0px 0px 0px;&#xA;    padding:4px;&#xA;    width: 100%;&#xA;    background-color:#F0F8FF;&#xA;    text-align: left;&#xA;  }&#xA;&#xA;  h2.green {&#xA;    color: #000000;&#xA;    background-color:#CCFFCC;&#xA;    border-color:#006400;&#xA;  }&#xA;&#xA;  h2.red {&#xA;    color: #000000;&#xA;    background-color:#FFCCCC;&#xA;    border-color:#8B0000;&#xA;  }&#xA;   &#xA;  h3 {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    font-weight:bold;&#xA;    font-size: 10pt;&#xA;    color:#000000;&#xA;    background-color: #FFFFFF;&#xA;    width: 75%;&#xA;    text-align: left;&#xA;  }&#xA;&#xA;  p {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    font-size: 8pt;&#xA;    color:#000000;&#xA;    background-color: #FFFFFF;&#xA;    width: 75%;&#xA;    text-align: left;&#xA;  }&#xA;&#xA;  p i {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    font-size: 8pt;&#xA;    color:#000000;&#xA;    background-color: #CCCCCC;&#xA;  }&#xA;&#xA;  ul {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    font-size: 8pt;&#xA;    color:#000000;&#xA;    background-color: #FFFFFF;&#xA;    width: 75%;&#xA;    text-align: left;&#xA;  }&#xA;&#xA;  a {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    text-decoration: none;&#xA;    font-size: 8pt;&#xA;    color:#000000;&#xA;    font-weight:bold;&#xA;    background-color: #FFFFFF;&#xA;    color: #000000;&#xA;  }&#xA;&#xA;  li a {&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    text-decoration: none;&#xA;    font-size: 10pt;&#xA;    color:#000000;&#xA;    font-weight:bold;&#xA;    background-color: #FFFFFF;&#xA;    color: #000000;&#xA;  }&#xA;&#xA;  a:hover {&#xA;    text-decoration: underline;&#xA;  }&#xA;&#xA;  a.up {&#xA;      color:#006400;&#xA;  }&#xA;&#xA;  table {&#xA;    width: 80%;&#xA;    border:0px;&#xA;    color: #000000;&#xA;    background-color: #000000;&#xA;    margin:10px;&#xA;  }&#xA;&#xA;  tr {&#xA;    vertical-align:top;&#xA;    font-family: Verdana, Helvetica, sans-serif;&#xA;    font-size: 8pt;&#xA;    color:#000000;&#xA;    background-color: #FFFFFF;&#xA;  }&#xA;&#xA;  tr.head {&#xA;    background-color: #E1E1E1;&#xA;    color: #000000;&#xA;    font-weight:bold;&#xA;  }&#xA;&#xA;  tr.open {&#xA;    background-color: #CCFFCC;&#xA;    color: #000000;&#xA;  }&#xA;&#x9;&#xA;  tr.script {&#xA;    background-color: #EFFFF7;&#xA;    color: #000000;&#xA;  }&#xA;&#xA;  tr.filtered {&#xA;    background-color: #F2F2F2;&#xA;    color: #000000;&#xA;  }&#xA;&#xA;  tr.closed {&#xA;    background-color: #F2F2F2;&#xA;    color: #000000;&#xA;  }&#xA;    &#xA;  td {&#xA;    padding:2px;&#xA;  }&#xA;        &#xA;  #menu li {&#xA;    display         : inline;&#xA;    margin          : 0;&#xA;    /*margin-right    : 10px;*/&#xA;    padding         : 0;&#xA;    list-style-type : none;&#xA;  }    &#xA; &#xA;  #menubox {&#xA;    position: fixed;&#xA;    bottom: 0px;&#xA;    right: 0px;&#xA;    width: 120px;&#xA;  }&#xA;  &#xA;  &#xA;  &#xA;  /* This section handle&#39;s IE&#39;s refusal to honor the fixed CSS attribute */&#xA;  &#xA;  * html div#menubox {&#xA;    position: absolute;&#xA;    top:expression(eval(&#xA;      document.compatMode &amp;&amp; document.compatMode==&#39;CSS1Compat&#39;) ?&#xA;      documentElement.scrollTop+(documentElement.clientHeight-this.clientHeight) &#xA;      : document.body.scrollTop +(document.body.clientHeight-this.clientHeight));&#xA;  }&#xA;  /* This fixes the jerky effect when scrolling in IE*/&#xA;  * html,* html body {&#xA;    background: #fff url(nosuchfile) fixed;&#xA;  }&#xA;&#xA;  &#xA; &#xA;  .up {&#xA;    color: #000000;&#xA;    background-color:#CCFFCC;&#xA;  }&#xA;  &#xA;  .down {&#xA;    color:#626262;&#xA;    background-color: #F2F2F2;&#xA;  }&#xA;&#xA;  .print_only { display: none; }&#xA;  .hidden { display: none; }&#xA;  .unhidden { display: block; }&#xA;  &#xA;}&#xA;&lt;/style&gt;&#xA;&lt;title&gt;Nmap Scan Report - Scanned at Tue Jun 30 10:02:24 2026&lt;/title&gt;&#xA;&lt;script type=&#34;text/javascript&#34;&gt;&#xA;     &#xA;      &#xA;                &#xA;      function toggle(divID) {&#xA;        var item = document.getElementById(divID);&#xA;        if (item) {&#xA;          item.className=(item.className==&#39;hidden&#39;)?&#39;unhidden&#39;:&#39;hidden&#39;;&#xA;        }&#xA;      }&#xA;           &#xA;      function togglePorts(tableID,portState) {&#xA;        var table = document.getElementById(tableID);    &#xA;        var tbody = table.getElementsByTagName(&#34;tbody&#34;)[0];&#xA;        var rows = tbody.getElementsByTagName(&#34;tr&#34;);&#xA;        for (var i=0; i &lt; rows.length; i++) {&#xA;          var value = rows[i].getElementsByTagName(&#34;td&#34;)[2].firstChild.nodeValue;&#xA;          if (value == portState) {&#xA;            rows[i].style.display = (rows[i].style.display == &#39;none&#39;)?&#39;&#39;:&#39;none&#39;;&#xA;          }&#xA;        }&#xA;      }&#xA;      &#xA;      function toggleAll(portState) {&#xA;        var allTables = document.getElementsByTagName(&#34;table&#34;);&#xA;        for (var c=0; c &lt; allTables.length; c++) {&#xA;          if (allTables[c].id != &#34;&#34;) {&#xA;            togglePorts(allTables[c].id, portState)&#xA;          }&#xA;        }&#xA;      }&#xA;      &#xA;      function init (){&#xA;        toggleAll(&#39;closed&#39;);&#xA;        toggleAll(&#39;filtered&#39;);     &#xA;      }     &#xA;            &#xA;      window.onload = init; &#xA;      &#xA;      &#xA;    &#xA;    &lt;/script&gt;&#xA;&lt;/head&gt;&#xA;&lt;body&gt;&#xA;&lt;a name=&#34;top&#34;&gt;&lt;/a&gt;&lt;div id=&#34;container&#34;&gt;&#xA;&lt;h1&gt;Nmap Scan Report - Scanned at Tue Jun 30 10:02:24 2026&lt;/h1&gt;&#xA;&lt;ul id=&#34;menu&#34;&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#scansummary&#34;&gt;Scan Summary&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt; | &lt;a href=&#34;#host_10_129_240_88&#34; class=&#34;up&#34;&gt;10.129.240.88&lt;/a&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;a name=&#34;scansummary&#34;&gt;&lt;/a&gt;&lt;hr class=&#34;print_only&#34;&gt;&#xA;&lt;h2&gt;Scan Summary&lt;/h2&gt;&#xA;&lt;p&gt;&#xA;      Nmap 7.99 was initiated at Tue Jun 30 10:02:24 2026 with these arguments:&lt;br&gt;&lt;i&gt;nmap -sT --disable-arp-ping -oX target 10.129.240.88&lt;/i&gt;&lt;br&gt;&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
