<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>panthadori</title>
    <link>https://panthadori.com/</link>
    <description>Recent content on panthadori</description>
    <atom:link href="https://panthadori.com/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Passing the OSCP</title>
      <link>https://panthadori.com/oscp/</link>
      <pubDate>Wed, 19 Nov 2025 00:00:00 +0000</pubDate>
      
      <guid>https://panthadori.com/oscp/</guid>
      <description>&lt;h2 id=&#34;metrics&#34;&gt;Metrics&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I took the OSCP on October 15th, 2025, and passed with 80/100 points on my first try.&lt;/li&gt;
&lt;li&gt;I studied sparingly for 6 months and very intensely for 4.&lt;/li&gt;
&lt;li&gt;It took me about 9 hours to get a passing score of 70.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;disclaimers&#34;&gt;Disclaimers&lt;/h2&gt;
&lt;p&gt;I took the OSCP using my company&amp;rsquo;s money and therefore got the &lt;a href=&#34;https://www.offsec.com/products/learn-one/expensive&#34;&gt;expensive training&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;prior-knowledge&#34;&gt;Prior Knowledge&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve been working as an application security engineer for a few years and have also participated in a handful of CTFs, but I do not believe these experiences contributed greatly to my passing score. The OSCP is enitrely network penetration testing, which I had very little experience in before beginning to study.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re starting from absolute 0 (like you don&amp;rsquo;t work with computers at all) you &lt;em&gt;may&lt;/em&gt; want to consider taking Sec+ first to get a basic idea of ports, protocols, and how the network stack works.&lt;/p&gt;
&lt;h2 id=&#34;phase-1-gathering-knowledge&#34;&gt;Phase 1: Gathering Knowledge&lt;/h2&gt;
&lt;p&gt;I highly recommend taking the paid OSCP training. It is structured, understandable, and created &lt;em&gt;by the people who will test you&lt;/em&gt;, so it enforces good habits early on. If you can afford it, or can get your company to pay for it, do so.&lt;/p&gt;
&lt;p&gt;The OSCP training has ~27 modules at the time of writing. Almost every one of them is important. I took notes on every module, and still wished I had taken more and organized them better. I recommend taking notes on the purpose and requirements of every single command.&lt;/p&gt;
&lt;p&gt;For example, if the module uses this command: &lt;code&gt;nmap -p22 $IP --script ssh-auth-methods --script-args=&amp;quot;ssh.user= $USER&lt;/code&gt;, I would take note of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;every argument (&lt;code&gt;--script&lt;/code&gt;, &lt;code&gt;-p&lt;/code&gt;, what are they, what do they add, how to use)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;when&lt;/em&gt; I could use this command (what systems, and with what information)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;why&lt;/em&gt; I would use this command (what does this accomplish, what information should I gain)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are some modules I found less practical than others, but they are all fair game for the exam.&lt;/p&gt;
&lt;p&gt;One thing to note here; although there are metasploit commands listed throughout the modules, the OSCP exam limits your use of metasploit to &lt;strong&gt;ONE&lt;/strong&gt; machine. That means you cannot use it to tunnel, and if you rely too heavily on it you&amp;rsquo;ll miss other machines. I tried to use metasploit as &lt;em&gt;little as possible&lt;/em&gt; when studying. There are other ways to find exploit scripts, and it&amp;rsquo;s better to learn how to edit them and pass arguments correctly anyway. I would only use metasploit as a &lt;strong&gt;last resort&lt;/strong&gt; on the exam.&lt;/p&gt;
&lt;p&gt;If you &lt;em&gt;can&amp;rsquo;t&lt;/em&gt; afford the training, take a look at &lt;a href=&#34;https://www.netsecfocus.com/oscp/2019/03/29/The_Journey_to_Try_Harder-_TJNulls_Preparation_Guide_for_PWK_OSCP.html&#34;&gt;TJNull&amp;rsquo;s list here&lt;/a&gt; and start from the top. I&amp;rsquo;ll be referencing this guide in the next section anyway; it&amp;rsquo;s a great resource.&lt;/p&gt;
&lt;h3 id=&#34;key-points&#34;&gt;Key Points&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I&amp;rsquo;d say a good general timeframe for obtaining a knowledge base is ~ 3 months (7hr days) - 7 months (3 hour days)&lt;/li&gt;
&lt;li&gt;Take excellent, robust notes that are easily searchable, focusing on commands&lt;/li&gt;
&lt;li&gt;Do the practice problems within the modules&lt;/li&gt;
&lt;li&gt;Join the OSCP discord. It&amp;rsquo;s okay to look at hints, but only do so when you&amp;rsquo;re banging your head against the keyboard. And be sure to take note of why you needed the hint - this indicates something is missing from your notes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;phase-2-using-the-knowledge&#34;&gt;Phase 2: Using the Knowledge&lt;/h2&gt;
&lt;p&gt;Once I finished the modules, I started with the Challenge Labs. I did labs 0-2 and 4-6, completely skipping the &amp;ldquo;stretch goal&amp;rdquo; and harder labs. This is because my primary goal was to pass the exam within the timeframe I had committed to.&lt;/p&gt;
&lt;p&gt;I finished the Challenge Labs about a month before my exam. This left me a lot of time for the Proving Grounds Labs - other labs that Offsec provides access to as part of the paid training I purchased. &lt;strong&gt;At this point, I&amp;rsquo;d recommend just doing as many labs as possible to fill in your notes! Every machine you complete can teach you something new.&lt;/strong&gt; I followed a &lt;a href=&#34;https://docs.google.com/spreadsheets/d/18weuz_Eeynr6sXFQ87Cd5F0slOj9Z6rt/edit?gid=487240997#gid=487240997&#34;&gt;list on this excel sheet&lt;/a&gt; (the Proving Grounds Practice section on row 47) and got through about 30 of them before the exam.&lt;/p&gt;
&lt;p&gt;If you didn&amp;rsquo;t purchase the full training, you can still go through some of the labs in that list or purchase lab access separately for a much more reasonable price. There are also a lot of OSCP-like machines on HackTheBox and TryHackMe, as seen on the excel sheet and in TJNull&amp;rsquo;s list. Ideally, you&amp;rsquo;d have more than a month to go through all of these; I felt a bit rushed at this point.&lt;/p&gt;
&lt;h3 id=&#34;key-points-1&#34;&gt;Key Points&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I&amp;rsquo;d recommend giving yourself at least 1 - 2 months of daily practice. I tried to complete 2-4 labs every day (after the Challenge Labs)&lt;/li&gt;
&lt;li&gt;Refine your testing process. You should be using and refining your notes for every lab. This &lt;em&gt;is&lt;/em&gt; your cheatsheet and your playbook!&lt;/li&gt;
&lt;li&gt;Try not to use metasploit&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;phase-3-pre-exam-preparation&#34;&gt;Phase 3: Pre-Exam Preparation&lt;/h2&gt;
&lt;p&gt;About 2 weeks before the exam, I began paying more attention to my setup. I checked their &lt;a href=&#34;https://help.offsec.com/hc/en-us/sections/360008126631-Proctored-Exams&#34;&gt;operating system requirements for proctoring&lt;/a&gt; and scheduled several test sessions to ensure their proctoring software worked on my machine. I read all &lt;a href=&#34;https://help.offsec.com/hc/en-us/articles/360040165632-OSCP-Exam-Guide&#34;&gt;their guidelines&lt;/a&gt;; they want screenshots and flags to be submitted in a very particular way. And I created a Google Doc (I do not recommend LibreOffice - mine frozed when I added too many screenshots) following their recommended report template.&lt;/p&gt;
&lt;p&gt;I ensured my playbook/cheatsheet/notes were ready for the exam and could be easily accessed. At this point you should &lt;em&gt;already have&lt;/em&gt; a dedicated playbook that you&amp;rsquo;ve been using for all your labs. It should be familiar and rich with commands and suggestions. I host &lt;a href=&#34;https://git.sr.ht/~panthadori/cmdbook&#34;&gt;my notebook in this repo&lt;/a&gt; if you want an idea of what I&amp;rsquo;m talking about, but you should definitely create your own.&lt;/p&gt;
&lt;p&gt;On the day-of, you&amp;rsquo;re going to want every little thing accounted for and out of the way. Make sure you&amp;rsquo;re ready so you don&amp;rsquo;t waste any time with setup once the clock starts!&lt;/p&gt;
&lt;h3 id=&#34;key-points-2&#34;&gt;Key Points&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Treat your labs as the actual test. Take notes and use your cheatsheet as you would on test day.&lt;/li&gt;
&lt;li&gt;Ensure your environment is ready according to their guidelines&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;phase-4-exam-day&#34;&gt;Phase 4: Exam Day&lt;/h2&gt;
&lt;p&gt;Schedule your exam early if you&amp;rsquo;re like me and can&amp;rsquo;t sleep the night before important events. I probably got 2 hours of sleep and barely choked down breakfast at 7am, and still had to wait until 10am to start.&lt;/p&gt;
&lt;p&gt;At 10am I got the login email, logged into the proctor portal, followed their instructions, and started at 10:15am. By 3:50pm, I only had 10 points. And by 7:30pm, I had 70. It&amp;rsquo;s okay to get stuck and then come back. I waited to do the AD set after I had tried all the standalones, but the order doesn&amp;rsquo;t really matter.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Take a deep breath and rely on your notes&lt;/li&gt;
&lt;li&gt;Enumerate, enumerate, enumerate&lt;/li&gt;
&lt;li&gt;You&amp;rsquo;re not allowed to record your screen, so give yourself time to check your screenshots and flags during the exam&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;final-recommendations&#34;&gt;Final Recommendations&lt;/h2&gt;
&lt;p&gt;There is a lot of amazing advice on r/OSCP; check out the top posts on there.&lt;/p&gt;
&lt;p&gt;My favorite tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ligolo-ng&lt;/li&gt;
&lt;li&gt;Winpeas/linpeas&lt;/li&gt;
&lt;li&gt;Bloodhound&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Looking back, I genuinely enjoyed the process and feel infinitely more capable than when I started&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. If you&amp;rsquo;re planning on taking the test soon, I wish you the best of luck!!&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;But there was a strange since of loss when it was over; after all the adrenaline passed, I wondered &amp;lsquo;where do I go from here&amp;rsquo;?&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Sunshine CTF 2023 RE Challenge</title>
      <link>https://panthadori.com/re_dill_pyc/</link>
      <pubDate>Tue, 10 Oct 2023 00:00:00 +0000</pubDate>
      
      <guid>https://panthadori.com/re_dill_pyc/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;Sunshine CTF 2023 had two reverse-engineering challenges that my team completed (just before time ran out, too!). This post describes my thought process behind Dill, a challenge worth 100 points.&lt;/p&gt;
&lt;h2 id=&#34;dill&#34;&gt;Dill&lt;/h2&gt;
&lt;p&gt;&amp;lsquo;Dill&amp;rsquo; provides players with a .pyc file that is unreadable to users. A .pyc file contains the bytecode of the python file, not the source code. The source code has already been compiled, and we need to decompile it to read it. We can also understand what the .pyc file is doing by running it in a debugger,&lt;/p&gt;
&lt;p&gt;Luckily for us, this .pyc file can be easily decompiled by a tool called uncompyle.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It can be downloaded here: &lt;a href=&#34;https://pypi.org/project/uncompyle6/#files&#34;&gt;https://pypi.org/project/uncompyle6/#files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Choose the latest .whl file and install like: &lt;code&gt;pip install uncompyle6-3.2.3-py27-none-any.whl&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You should now be able to type &lt;code&gt;uncompyle6 --version&lt;/code&gt; via commandline and receive a version number.&lt;/li&gt;
&lt;li&gt;With this tool, we can decompile dill.pyc like so: &lt;code&gt;uncompyle6 dill.pyc&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;details&gt;
&lt;summary&gt;Now we have the source code:&lt;/summary&gt;


&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-py&#34; data-lang=&#34;py&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Dill&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;prefix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;sun{&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;fm&#34;&gt;__init__&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encrypted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;bGVnbGxpaGVwaWNrdD8Ka2V0ZXRpZGls&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;validate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;startswith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dill&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;prefix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;endswith&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dill&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dill&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;prefix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;):&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Dill&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Dill&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;encrypted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/details&gt;


&lt;p&gt;Here is what I notice when reading through the class:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the prefix and suffix are irrelevant to the encrypted string, since they are just part of the flag for Sunshine CTF.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;self.encrypted&lt;/code&gt; must be the encrypted string. We will have to understand how it was created to understand how to decrypt it.&lt;/li&gt;
&lt;li&gt;the length of the encrypted and decrypted string is the same (32)&lt;/li&gt;
&lt;li&gt;there seems to be a strange ordering of numbers in array &lt;code&gt;o&lt;/code&gt; declared at the top&lt;/li&gt;
&lt;li&gt;&lt;code&gt;c&lt;/code&gt; and &lt;code&gt;value&lt;/code&gt; build the encrypted string. This is where we will be focusing the most, since we will have to undo this process.&lt;/li&gt;
&lt;/ul&gt;


&lt;details&gt;
&lt;summary&gt; I want to run this script locally to test it first. I removed the class and added a main function. I also wanted to understand what `c` and `value` were doing, so I printed them out. &lt;/summary&gt;


&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-py&#34; data-lang=&#34;py&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;prefix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;sun{&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;encrypted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;bGVnbGxpaGVwaWNrdD8Ka2V0ZXRpZGls&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;validate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;not right length&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;#for every group of 4 letters letter in value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# add back the quartets in a strange order&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encrypted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encrypted&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;validate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/details&gt;


&lt;h2 id=&#34;output&#34;&gt;Output&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;../img/dill3.png&#34; alt=&#34;challenges screenshot&#34;&gt;&lt;/p&gt;
&lt;p&gt;Ah, so these blocks of 4 letters have been rearranged according to the order listed in &lt;code&gt;o&lt;/code&gt;. To put them back, we have to create a new array that organizes them in order. Since 0 should be the first block and is listed last in the array &lt;code&gt;o&lt;/code&gt;, we know that the last index 7 should be printed first. Similarly, since 1 is the second block and is printed at index 1. 2 is the third block and is printed at index 5.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;o = [5, 1, 3, 4, 7, 2, 6, 0]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To print the blocks in the correct order again, we will use this new array:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;a = [7, 1, 5, 2, 3, 0, 6, 4]&lt;/code&gt;&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt; By reordering the blocks, we arrive at the solution: &lt;/summary&gt;


&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-py&#34; data-lang=&#34;py&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;prefix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;sun{&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;suffix&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;o&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;encrypted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;bGVnbGxpaGVwaWNrdD8Ka2V0ZXRpZGls&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;validate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;str&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;not right length&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;#for every group of 4 letters letter in value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;range&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# add back the quartets out of order to &amp;#39;encrypt&amp;#39; them&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;# reorder the quartets to decrypt them&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;unencrypt&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;join&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;c&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;here&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;unencrypt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encrypted&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;encrypted&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;validate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;vm&#34;&gt;__name__&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Solution output:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../img/dill4.png&#34; alt=&#34;solution output&#34;&gt;&lt;/p&gt;
&lt;p&gt;Just add the prefix back to the string, and we have the flag!&lt;/p&gt;


&lt;/details&gt;


</description>
    </item>
    
    
    
    <item>
      <title>Boba Tea Ratings</title>
      <link>https://panthadori.com/milk-tea/</link>
      <pubDate>Thu, 21 Sep 2023 00:00:00 +0000</pubDate>
      
      <guid>https://panthadori.com/milk-tea/</guid>
      <description>&lt;h2 id=&#34;overall&#34;&gt;Overall&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;9.5&lt;/strong&gt; Orobae, California&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;9.0&lt;/strong&gt; Cha Kyojyou, Japan, Kyoto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8.8&lt;/strong&gt; Matcha Republic, Japan, Uji&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8.7&lt;/strong&gt; Omomo, California&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8.1&lt;/strong&gt; Tea 18, Japan, Hiroshima&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8.0&lt;/strong&gt; BobaPop, California&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;7.6&lt;/strong&gt; Tiger Sugar, Maryland&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;7.5&lt;/strong&gt; Kung Fu Tea, California&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;7.2&lt;/strong&gt; Ding Tea, California&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6.6&lt;/strong&gt; XiuXiu Cafe, Japan, Kyoto&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;by-location&#34;&gt;By Location&lt;/h2&gt;


&lt;div style=&#34;position: relative;&#34;&gt;
  &lt;img src=&#34;../img/world_map.png&#34; style=&#34;width: 100%; height: auto;&#34;&gt;
  &lt;a href=&#34;#ca&#34;&gt;&lt;div style=&#34;position: absolute; left: 13%; top: 38%; width: 5%; height: 10%;&#34;&gt;&lt;/div&gt;&lt;/a&gt;
  &lt;a href=&#34;#md&#34;&gt;&lt;div style=&#34;position: absolute; left: 23%; top: 36%; width: 5%; height: 10%;&#34;&gt;&lt;/div&gt;&lt;/a&gt;
  &lt;a href=&#34;#jp&#34;&gt;&lt;div style=&#34;position: absolute; left: 83%; top: 33%; width: 6%; height: 14%;&#34;&gt;&lt;/div&gt;&lt;/a&gt;
&lt;/div&gt;



&lt;h2 id=&#34;ca&#34;&gt;California&lt;/h2&gt;
&lt;h3 id=&#34;95-orobae&#34;&gt;&lt;strong&gt;9.5&lt;/strong&gt; &lt;em&gt;Orobae&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Osmanthus oolong milk tea, 0% sugar&lt;/p&gt;
&lt;h3 id=&#34;87-omomo&#34;&gt;&lt;strong&gt;8.7&lt;/strong&gt; &lt;em&gt;Omomo&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Osmanthus oolong milk tea, 0% sugar&lt;/p&gt;
&lt;p&gt;Deliciously floral, bright, and similarly woody. The milk adds a creaminess that blends well with the natural sweetness of the osmanthus flowers and tender boba pearls.&lt;/p&gt;
&lt;h3 id=&#34;80-bobapop&#34;&gt;&lt;strong&gt;8.0&lt;/strong&gt; &lt;em&gt;BobaPop&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Osmanthus oolong tea 30% sugar&lt;/p&gt;
&lt;p&gt;This drink&amp;rsquo;s flowery and grainy heartiness are dimmed with the addition of milk, and enhanced with a small addition of sweetner. Refreshing and classic. The boba is firmly chewy and sweet (but not sweet enough to replace the sweetner).&lt;/p&gt;
&lt;h3 id=&#34;75-kung-fu-tea&#34;&gt;&lt;strong&gt;7.5&lt;/strong&gt; &lt;em&gt;Kung Fu Tea&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Oolong or green milk tea 0% sugar&lt;/p&gt;
&lt;p&gt;Kung Fu tea could be called the Starbucks of boba. They&amp;rsquo;re consistent, everywhere, and brew decent tea. Both the oolong and green tea are good; not the best in their class but flavorful (without being bitter) nonetheless. The oolong comes off as a more earthy black tea while the green is akin to a jasmine. I like getting the milk tea and the milk cap for a creamier sip.&lt;/p&gt;
&lt;h3 id=&#34;72-ding-tea&#34;&gt;&lt;strong&gt;7.2&lt;/strong&gt; &lt;em&gt;Ding Tea&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;../img/milktea1.jpg&#34; alt=&#34;ding tea boba&#34;&gt;&lt;/p&gt;
&lt;p&gt;Oolong Milk Tea with Boba, 0% sugar&lt;/p&gt;
&lt;p&gt;This tea has a pleasantly strong oolong taste that nears hojicha. Earthy and not bitter. The boba is soft, very slightly flavored like brown sugar, and almost too gooey. The drink would benefit from a sweeter boba mixture.&lt;/p&gt;
&lt;h2 id=&#34;md&#34;&gt;Maryland&lt;/h2&gt;
&lt;h3 id=&#34;76-tiger-sugar&#34;&gt;&lt;strong&gt;7.6&lt;/strong&gt; &lt;em&gt;Tiger Sugar&lt;/em&gt;&lt;/h3&gt;
&lt;h2 id=&#34;jp&#34;&gt;Japan&lt;/h2&gt;
&lt;h3 id=&#34;90-cha-koujyou&#34;&gt;&lt;strong&gt;9.0&lt;/strong&gt; &lt;em&gt;Cha Koujyou&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;../img/milktea2.jpg&#34; alt=&#34;cha koujyou boba&#34;&gt;&lt;/p&gt;
&lt;p&gt;Brown Sugar Milk Tea&lt;/p&gt;
&lt;p&gt;This small shop nestled in an underground train station mall serves some of the best boba in Japan. The tea selection is broad, and all the flavors I tried were high quality. The boba was perfectly honey-sweet and chewy.&lt;/p&gt;
&lt;h3 id=&#34;88-matcha-republic&#34;&gt;&lt;strong&gt;8.8&lt;/strong&gt; &lt;em&gt;Matcha Republic&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;../img/milktea5.jpg&#34; alt=&#34;matcha republic tea&#34;&gt;
Matcha Latte&lt;/p&gt;
&lt;p&gt;Deliciously thick and flavorful matcha drink with freshly ground matcha. The best I&amp;rsquo;ve had. No bitterness, only a sweet grassy flavor.&lt;/p&gt;
&lt;h3 id=&#34;81-tea-18&#34;&gt;&lt;strong&gt;8.1&lt;/strong&gt; &lt;em&gt;Tea 18&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;../img/milktea4.jpg&#34; alt=&#34;tea 18  boba&#34;&gt;
Taejilang oolong milk tea&lt;/p&gt;
&lt;p&gt;A gentle drink with full-flavored oolong and sweet boba.&lt;/p&gt;
&lt;h3 id=&#34;66-xiuxiu-cafe&#34;&gt;&lt;strong&gt;6.6&lt;/strong&gt; &lt;em&gt;XiuXiu Cafe&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;../img/milktea3.jpg&#34; alt=&#34;xiuxiu cafe boba&#34;&gt;&lt;/p&gt;
&lt;p&gt;Golden black milk tea with boba&lt;/p&gt;
&lt;p&gt;Tea had a slight bitter taste that lingered beneath a floral and wheaty earl grey flavor. The boba was firm and chewy but lacked sweetness.&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Secure a New Ford Vehicle by Disconnecting the TCU</title>
      <link>https://panthadori.com/disconnect_tcu_ford/</link>
      <pubDate>Sat, 04 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>https://panthadori.com/disconnect_tcu_ford/</guid>
      <description>&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;Ford, and many other car manufacturers, have begun demanding that you forsake your right to privacy by connecting your phone to your vehicle during the buying process. This post describes a simple method of severing this connection, and is intended for fellow members of the tinfoil hat community that are ready to forgo the very savory convenience of starting your car from inside the house when it&amp;rsquo;s 30F outside.&lt;/p&gt;
&lt;h2 id=&#34;the-what-and-why-behind-the-tcu&#34;&gt;The What and Why behind the TCU&lt;/h2&gt;
&lt;p&gt;Phone apps such as &amp;lsquo;FordPass&amp;rsquo;, &amp;lsquo;Toyota&amp;rsquo;, and &amp;lsquo;HondaLink&amp;rsquo; allow owners to remotely start, lock, unlock, and monitor their vehicle. These apps work by communicating with the TCU in the vehicle.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;TCU&lt;/strong&gt; (Telematics Control Unit) is an embedded system in a vehicle that wirelessly connects the vehicle to cloud services or other vehicles over a cellular network.&lt;/p&gt;
&lt;p&gt;How convenient! Unfortunately, this very same module allows car manufacturers to collect data from your vehicle, and upon connection, your phone.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As I have recently purchased a new Ford, this post will focus on Ford&amp;rsquo;s privacy policies, apps, and vehicles.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;According to the &lt;a href=&#34;https://www.fordpass.com/content/ford_com/fp_app/en_us/termsprivacy.html&#34;&gt;FordPass privacy policy&lt;/a&gt;, Ford will collect:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vehicle location&lt;/li&gt;
&lt;li&gt;driving data (including speed, brakes, steering, seat belts)&lt;/li&gt;
&lt;li&gt;voice commands (when the vehicle&amp;rsquo;s voice recognition system is in &amp;ldquo;active listen&amp;rdquo; state)&lt;/li&gt;
&lt;li&gt;phone location&lt;/li&gt;
&lt;li&gt;phone specifications&lt;/li&gt;
&lt;li&gt;app usage metrics&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;FordPass does not have multi-factor authenticaion, so anyone who has your password and the VIN of your vehicle is able to start, lock, and unlock your car.&lt;/p&gt;
&lt;p&gt;The TCU is also vulnerable to remote vehicle attacks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.securityweek.com/tcu-flaws-expose-cars-remote-hacking/&#34;&gt;TCU flaws expose cars to remote hacking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://upstream.auto/blog/from-a-single-tcu-to-full-control/&#34;&gt;From a single TCU to full control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.bleepingcomputer.com/news/security/security-flaws-found-in-2g-modems-used-by-bmw-ford-infiniti-and-nissan-cars/&#34;&gt;Security flaws found in 2G modems used by BMW, Ford, Infiniti, and Nissan cars&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These vulnerabilities can be mitigated by removing the TCU from its power source. I used a pair of pliers.&lt;/p&gt;
&lt;h2 id=&#34;how-to-disconnect-the-tcu&#34;&gt;How to Disconnect the TCU&lt;/h2&gt;
&lt;p&gt;This process will vary depending on the specific make and model of the vehicle.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the owner&amp;rsquo;s manual, under &amp;lsquo;Fuses&amp;rsquo;, find the fuse labelled &amp;lsquo;Telematics control unit module&amp;rsquo;. &lt;em&gt;Specific to my car, this is located under the passenger&amp;rsquo;s glovebox.&lt;/em&gt;
&lt;img src=&#34;../img/disconnect_tcu_ford_1.jpg&#34; alt=&#34;owner&amp;amp;rsquo;s manual fuse list&#34;&gt;&lt;/li&gt;
&lt;li&gt;If needed, remove the cover panel to reveal the fusebox. &lt;em&gt;I took mine from the bottom and pulled gently to un-latch three tabs.&lt;/em&gt;
&lt;img src=&#34;../img/disconnect_tcu_ford_2.jpg&#34; alt=&#34;covered fusebox&#34;&gt;&lt;/li&gt;
&lt;li&gt;Identify the fuse.
&lt;img src=&#34;../img/disconnect_tcu_ford_3.png&#34; alt=&#34;fusebox panel&#34;&gt;&lt;/li&gt;
&lt;li&gt;Pull out the fuse. &lt;em&gt;While the car is off, use pliers or fingers to gently remove the fuse.&lt;/em&gt;
&lt;img src=&#34;../img/disconnect_tcu_ford_4.jpg&#34; alt=&#34;fusebox panel missing fuse&#34;&gt;
&lt;img src=&#34;../img/disconnect_tcu_ford_5.jpg&#34; alt=&#34;pulled out fuse next to pliers&#34;&gt;&lt;/li&gt;
&lt;li&gt;Replace the panel cover.&lt;/li&gt;
&lt;li&gt;Ensure that the vehicle is disconnected.
&lt;img src=&#34;../img/disconnect_tcu_ford_6.png&#34; alt=&#34;app showing remote start does not work&#34;&gt;&lt;/li&gt;
&lt;li&gt;Keep the fuse in a safe place in case of vehicle return, repair, or investigation.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;outcomes&#34;&gt;Outcomes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Disconnecting the TCU successfully deactivates cellular service to and from the vehicle&lt;/li&gt;
&lt;li&gt;Bluetooth and radio are still operational&lt;/li&gt;
&lt;li&gt;There are no error messages or warnings within the vehicle&lt;/li&gt;
&lt;li&gt;Taking the vehicle to Ford for other recalls has not yet raised alarms among the employees&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    
    
    
  </channel>
</rss>
