<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>David Zhu</title><id>https://dzhy.dev</id><updated>2026-05-24T00:00:00+00:00</updated><link href="https://dzhy.dev" rel="alternate"/><entry><title>Inspirations for this Blog</title><id>https://dzhy.dev/posts/inspirations-for-this-blog</id><updated>2026-05-24T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/inspirations-for-this-blog" rel="alternate"/><published>2026-05-24T00:00:00+00:00</published><content type="html">&lt;h1&gt;Inspirations for this Blog&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2026-05-24&quot;&gt;24 May 2026&lt;/time&gt;
&lt;p&gt;Reasons why I wanted to create a very minimal blog.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://endtimes.dev/why-your-website-should-be-under-14kb-in-size/&quot;&gt;Why your website should be under 14kB in size&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://motherfuckingwebsite.com/&quot;&gt;This is a motherfucking website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://perfectmotherfuckingwebsite.com/&quot;&gt;This is the final motherfucking website.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bearblog.dev/&quot;&gt;Bear Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>Life with RSS</title><id>https://dzhy.dev/posts/life-with-rss</id><updated>2026-01-17T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/life-with-rss" rel="alternate"/><published>2026-01-17T00:00:00+00:00</published><content type="html">&lt;h1&gt;Life with RSS&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2026-01-17&quot;&gt;17 Jan 2026&lt;/time&gt;
&lt;p&gt;Since I &lt;a href=&quot;life-without-infinite-scroll&quot;&gt;stopped infinite scrolling&lt;/a&gt;, I had to find another way
of consuming information.
RSS feeds have been a great solution for that. They allow me
to subscribe to hand-picked sources of information and read them at my own pace.
I can easily add new sources or remove those that no longer interest me.&lt;/p&gt;
&lt;h2 id=&quot;small-web&quot;&gt;Small Web&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;To begin with, while there is no single definition, &quot;small web&quot; typically refers to the
non-commercial part of the web, crafted by individuals to express themselves or share knowledge
without seeking any financial gain. &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I like reading articles from the small web, but discovering them can be hard.
I use Kagi Small Web&apos;s RSS feed to find interesting blogs and add their RSS feeds to my reader.
Kagi Small Web is a curated list of small websites and YouTube channels.&lt;/p&gt;
&lt;p&gt;Or sometimes I come across an interesting post shared on Hacker News and add the blog&apos;s feed.&lt;/p&gt;
&lt;h2 id=&quot;reddit&quot;&gt;Reddit&lt;/h2&gt;
&lt;p&gt;Reddit supports RSS, allowing me to subscribe to subreddits through their feeds. The feed contains the post title and
description; however, I still have to open the link to see the comments.&lt;/p&gt;
&lt;h2 id=&quot;youtube&quot;&gt;YouTube&lt;/h2&gt;
&lt;p&gt;YouTube channels also have RSS feeds, but I prefer to just use my subscriptions page.
I have a plugin to disable the Home page and sidebar recommendations, so I only see new videos from channels
I subscribed to.&lt;/p&gt;
&lt;h2 id=&quot;software-updates&quot;&gt;Software Updates&lt;/h2&gt;
&lt;p&gt;I also use RSS feeds to keep track of updates for my software and devices I use. This is
actually an improvement, as previously I had to manually search for this information, but now
I get notified through my RSS reader.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;P.S. If you maintain a blog, please add a &lt;strong&gt;FULL&lt;/strong&gt; RSS feed (not a truncated one) for
your posts so I can read your posts without leaving my RSS reader.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;/sup&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.kagi.com/small-web&quot;&gt;What is Kagi Small Web?&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><title>Rendering LaTeX math without JavaScript</title><id>https://dzhy.dev/posts/rendering-latex-math-without-javascript</id><updated>2026-01-11T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/rendering-latex-math-without-javascript" rel="alternate"/><published>2026-01-11T00:00:00+00:00</published><content type="html">&lt;h1&gt;Rendering LaTeX math without JavaScript&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2026-01-11&quot;&gt;11 Jan 2026&lt;/time&gt;
&lt;p&gt;Recently, I found out about &lt;a href=&quot;https://www.w3.org/TR/mathml-core/&quot;&gt;MathML Core&lt;/a&gt;,
which allows browsers to render mathematical notation in HTML without the need
for a JavaScript library or converting to images.
This got me very excited because I can add LaTeX math rendering to my SSG &lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; without having
to use JavaScript!&lt;/p&gt;
&lt;p&gt;So, obviously I spent the day adding this feature to my SSG. Unfortunately, for pages that use MathML, a math font has to be loaded, and they are quite large.
I am using Libertinus, which is 396kB! In comparison to my other assets, it&apos;s huge!
For comparison, the sum of all other assets on this page is less than 10kB.&lt;/p&gt;
&lt;p&gt;Anyways, here&apos;s a POC:&lt;/p&gt;
&lt;h3 id=&quot;rendered&quot;&gt;Rendered&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Prefixed Closeness&lt;/dt&gt;
&lt;dd&gt;Let &lt;math&gt;&lt;mi&gt;ϕ&lt;/mi&gt;&lt;/math&gt; be a set of feasible traces.
If &lt;math&gt;&lt;msub&gt;&lt;mi&gt;τ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;msub&gt;&lt;mi&gt;τ&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ϕ&lt;/mi&gt;&lt;/math&gt; then &lt;math&gt;&lt;msub&gt;&lt;mi&gt;τ&lt;/mi&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/msub&gt;&lt;mo&gt;∈&lt;/mo&gt;&lt;mi&gt;ϕ&lt;/mi&gt;&lt;/math&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&quot;html&quot;&gt;HTML&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;syntext synhtml synbasic&quot;&gt;Let 
&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;ϕ&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
be a set of feasible traces.
If 
&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;msub&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;τ&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;1&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;msub&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;msub&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;τ&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;2&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;msub&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mo&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;∈&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mo&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;ϕ&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
then 
&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;msub&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;τ&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;1&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mn&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;msub&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mo&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;∈&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mo&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;ϕ&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;mi&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta syntag synother synhtml&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synbegin synhtml&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;synentity synname syntag synother synhtml&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition syntag synend synhtml&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;markdown&quot;&gt;Markdown&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;syntext synhtml synmarkdown&quot;&gt;&lt;span class=&quot;synmeta synparagraph synmarkdown&quot;&gt;Let $\phi$ be a set of feasible traces.
If $\tau_1\tau_2\in\phi$ then $\tau_1\in\phi$
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;/sup&gt;
&lt;p&gt;Static Site Generator&lt;/p&gt;
&lt;/div&gt;
</content></entry><entry><title>Life without infinite scroll</title><id>https://dzhy.dev/posts/life-without-infinite-scroll</id><updated>2026-01-07T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/life-without-infinite-scroll" rel="alternate"/><published>2026-01-07T00:00:00+00:00</published><content type="html">&lt;h1&gt;Life without infinite scroll&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2026-01-07&quot;&gt;07 Jan 2026&lt;/time&gt;
&lt;p&gt;It&apos;s been a few months since I stopped using anything with infinite scrolling,
and life has been great.&lt;/p&gt;
&lt;p&gt;I feel like a brain-dead zombie while scrolling on these apps. My brain gets foggy afterward,
and I don&apos;t even feel good about the time I just burned.
Now I&apos;ve got more time in my day for things that don&apos;t make me feel shitty afterward.
The time spent doesn&apos;t even have to be a productive activity; even just watching shows is more enjoyable.
So I wouldn&apos;t consider this a productivity improvement, but rather a health improvement.&lt;/p&gt;
&lt;p&gt;I also cut social media out of my life, which is also very enjoyable. Now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I make more effort to catch up with my friends.&lt;/li&gt;
&lt;li&gt;I find out what&apos;s going on in their lives by talking to them directly.&lt;/li&gt;
&lt;li&gt;I keep fake, curated highlight reels out of my sight.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Highly recommend y&apos;all to try it out too!&lt;/p&gt;
</content></entry><entry><title>Hello World Again</title><id>https://dzhy.dev/posts/hello-world-again</id><updated>2026-01-04T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/hello-world-again" rel="alternate"/><published>2026-01-04T00:00:00+00:00</published><content type="html">&lt;h1&gt;Hello World Again&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2026-01-04&quot;&gt;04 Jan 2026&lt;/time&gt;
&lt;p&gt;A very happy new year to everyone reading this! (though slightly late) Anyways,
welcome to my blog where I&apos;ll be spewing random thoughts (again).
Most of it will probably be about tech, with a sprinkle of random stuff
here and there, but we shall see.&lt;/p&gt;
&lt;p&gt;Restarted this blog because I felt like writing stuff and sharing it online but
didn&apos;t want to use any centralized social media sites. What&apos;s the fun in that right?&lt;/p&gt;
</content></entry><entry><title>Comfort with a 34 key Keyboard</title><id>https://dzhy.dev/posts/2021-11-24-comfort-with-a-34-key-keyboard</id><updated>2021-11-24T11:29:48+00:00</updated><link href="https://dzhy.dev/posts/2021-11-24-comfort-with-a-34-key-keyboard" rel="alternate"/><published>2021-11-24T11:29:48+00:00</published><content type="html">&lt;h1&gt;Comfort with a 34 key Keyboard&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2021-11-24&quot;&gt;24 Nov 2021&lt;/time&gt;
&lt;p&gt;&lt;img src=&quot;images/2021-11-24-comfort-with-a-34-key-keyboard/keyboards.webp&quot; alt=&quot;My Keyboards&quot; /&gt;&lt;/p&gt;
&lt;p&gt;My current keyboard is the &lt;a href=&quot;https://github.com/pierrechevalier83/ferris&quot;&gt;Ferris v0.2&lt;/a&gt;. I&apos;ve been
using it for about 6 months now and it feels very much like my endgame keyboard. Before I go onto to
tell you about why this is my endgame keyboard, I&apos;ll tell you about my past keyboards.&lt;/p&gt;
&lt;h2 id=&quot;past-keyboards&quot;&gt;Past Keyboards&lt;/h2&gt;
&lt;h3 id=&quot;corsair-k70&quot;&gt;Corsair K70&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;images/2021-11-24-comfort-with-a-34-key-keyboard/corsair-keyboard.webp&quot; alt=&quot;Corsair K70 Keyboard&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This was the first keyboard I bought, it&apos;s a full sized keyboard, back then having more keys at my disposal seemed like a good idea.&lt;/p&gt;
&lt;p&gt;If I was typing for a long time on this keyboard my finger tips will start to hurt, most likely due
to the switch being a linear switch and there&apos;s no dampening of the impact when I bottom out. On
hindsight, it might help if I added O-rings.&lt;/p&gt;
&lt;p&gt;The other problem was it&apos;s just not comfortable to type on for long periods of time. When typing my
two hands will be close to each other causing my wrist to be bent in an uncomfortable angle. This is
called ulnar deviation.&lt;/p&gt;
&lt;p&gt;The combination of this two issues lead me on a search for a more ergonomic keyboard.&lt;/p&gt;
&lt;h3 id=&quot;ergodox-ez&quot;&gt;Ergodox EZ&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;images/2021-11-24-comfort-with-a-34-key-keyboard/ergodox-ez.webp&quot; alt=&quot;Ergodox EZ&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This lead me to discover Ergodox EZ, a split ortholinear keyboard. This keyboard was not cheap but I
bite the bullet and bought it in the name of ergonomics.&lt;/p&gt;
&lt;p&gt;It was amazing how much more comfortable the typing experience was compared to my previous keyboard.
The fact that it was split solved the issue of my wrist, it being ortholinear also made it easier
for me to touch type. The thumb keys were comfortable to use, it makes sense that we use our thumbs
more, since it is one of our strongest fingers. With the traditional keyboard design, we were under
utilizing out thumbs. The tenting and wrist rest made it comfortable as well.&lt;/p&gt;
&lt;p&gt;The only downside was some keys are far away and I have to shift my hand to reach them. Which made
me interested in smaller form factor keyboards.&lt;/p&gt;
&lt;h3 id=&quot;planck&quot;&gt;Planck&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;images/2021-11-24-comfort-with-a-34-key-keyboard/planck.webp&quot; alt=&quot;Planck&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The planck is a 40% ortholinear keyboard which aims to minimize finger travel.&lt;/p&gt;
&lt;p&gt;I got this keyboard with the intention of it being my portable keyboard and trying out a smaller
form factor, but I found
the keyboard uncomfortable to use, due to ulnar deviation and the high profile, I would need a wrist
rest to type more comfortably. I also found it hard to use due to the limited number of keys,
somehow I had the great idea that it would be fine if I get the slightly bigger version of the planck.
(Including the comfort issue)&lt;/p&gt;
&lt;h3 id=&quot;preonic&quot;&gt;Preonic&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;images/2021-11-24-comfort-with-a-34-key-keyboard/preonic.webp&quot; alt=&quot;Preonic&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The preonic is basically the planck but with an additional row of keys. I would say it has all the
downsides of the planck, and whether the additional row of keys is a pro or con is really dependent
on the user. Currently, since I&apos;ve already gotten used to using my 34 key keyboard, I would think
that it is a con.&lt;/p&gt;
&lt;h2 id=&quot;the-end-game&quot;&gt;The End Game&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;images/2021-11-24-comfort-with-a-34-key-keyboard/ferris.webp&quot; alt=&quot;Ferris&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Based on the experience above, I concluded for a keyboard to be comfortable it has to fit these criteria.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A split keyboard&lt;/li&gt;
&lt;li&gt;Ortholinear&lt;/li&gt;
&lt;li&gt;Low Profile/High Profile with wrist rest&lt;/li&gt;
&lt;li&gt;Small size to minimize finger travel&lt;/li&gt;
&lt;li&gt;Thumb keys&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The ferris meets all of those criteria and with the additional plus of it being rust related :).
Initially I was worried about whether 34 keys is too little, so I changed my Ergodox EZ layout to
only use 34 keys and I got used to it quite comfortably after awhile, so I went ahead and got the
ferris.&lt;/p&gt;
&lt;p&gt;I got the ferris partially assembled so I just had to solder on the switches, it was my first time
soldering and thankfully it all went smoothly. However, when I tested the keyboard, some keys were
not working so I asked around in the Low Profile Keyboards discord group and Pierrec (the creator of
the ferris) told me it was likely that some MCU pins were not soldered properly, he offered to fix
it for me, but I decided to give it a shot and it turned out well, the keyboard works flawlessly
now.&lt;/p&gt;
&lt;p&gt;The one thing that is special about the ferris is that it has column stagger, meaning each column of
keys are shifted to different offsets to better match natural finger alignment.  It was weird at
first, but now that I&apos;ve gotten used to it it feels much more comfortable than linearly aligned keys.&lt;/p&gt;
&lt;p&gt;After 6 months of using the ferris I don&apos;t have much to complain about, I&apos;ve optimized my layout to
my liking as well, which I plan on going into in a later post. The only thing I want now is a better
TRRS cable, my current one is quite ugly.&lt;/p&gt;
</content></entry><entry><title>Understanding rabin2 output</title><id>https://dzhy.dev/posts/2020-02-28-understanding-rabin2-output</id><updated>2020-02-28T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2020-02-28-understanding-rabin2-output" rel="alternate"/><published>2020-02-28T00:00:00+00:00</published><content type="html">&lt;h1&gt;Understanding rabin2 output&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2020-02-28&quot;&gt;28 Feb 2020&lt;/time&gt;
&lt;h2 id=&quot;prelude&quot;&gt;Prelude&lt;/h2&gt;
&lt;p&gt;If you don&apos;t know what rabin2 is/what it does.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Rabin2 understands many file formats: Java CLASS, ELF, PE, Mach-O or any format supported by plugins, and it is able to obtain symbol import/exports, library dependencies, strings of data sections, xrefs, entrypoint address, sections, architecture type. &lt;a href=&quot;https://radare.gitbooks.io/radare2book/tools/rabin2/intro.html&quot;&gt;[src]&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The binary info option of rabin2 outputs quite a lot of information, however there&apos;s no explanation to what each of the values mean, they can be quite cryptic especially to those not familiar with reverse engineering. I tried searching around but couldn&apos;t find any information regarding it so I made this table to help with interpretting the values, not all values are included here, but I added all that I could figure out so far, this may be updated in the future.&lt;/p&gt;
&lt;h2 id=&quot;table&quot;&gt;Table&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Header&lt;/th&gt;&lt;th&gt;Explanation&lt;/th&gt;&lt;th&gt;Remark&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;arch&lt;/td&gt;&lt;td&gt;Architecture of the binary (Eg. ARM, x86)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;baddr&lt;/td&gt;&lt;td&gt;Base Address, used to calculate the absolute address when the program is loaded in memory.&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;laddr&lt;/td&gt;&lt;td&gt;Load Address&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://reverseengineering.stackexchange.com/a/19783&quot;&gt;Reference&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;bits&lt;/td&gt;&lt;td&gt;Size of address pointer of program&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;bintype&lt;/td&gt;&lt;td&gt;The type of binary (Eg. PE, ELF), blank if not a known binary type&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;linenum&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#coff-line-numbers-deprecated&quot;&gt;COFF Line Numbers&lt;/a&gt; for PE or DWARF in ELF, Debugging line numbers relating to the source code.&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;lsyms&lt;/td&gt;&lt;td&gt;Whether the binary contains debug symbols. Having symbols allows you to see function and variable names.&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;endian&lt;/td&gt;&lt;td&gt;Endianness of the binary (Little or Big)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;binsz&lt;/td&gt;&lt;td&gt;Size of the binary in bytes&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Canary&lt;/td&gt;&lt;td&gt;Stack canary. A random value is placed on the stack at the start of the function, this value is checked for modification before a function returns because it has to be overwritten in order to overwrite the return pointer.&lt;/td&gt;&lt;td&gt;Protection Mechanism&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;retguard&lt;/td&gt;&lt;td&gt;Similar function to stack canary. &lt;a href=&quot;https://isopenbsdsecu.re/mitigations/retguard/&quot;&gt;More info&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Protection Mechanism&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;sanitiz&lt;/td&gt;&lt;td&gt;Address Sanitizer (ASAN) a memory error detector for C/C++&lt;/td&gt;&lt;td&gt;Should only be seen for debug builds because of the performance impact of ASAN&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;NX&lt;/td&gt;&lt;td&gt;No execute bit. W^X -&amp;gt; Memory regions cannot be both writable and executable&lt;/td&gt;&lt;td&gt;Protection Mechanism&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;PIC&lt;/td&gt;&lt;td&gt;Position Independent Code, allows ASLR&lt;/td&gt;&lt;td&gt;Protection Mechanism&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;reloc&lt;/td&gt;&lt;td&gt;Performs Load-time relocation&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Relro&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://ctf101.org/binary-exploitation/relocation-read-only/&quot;&gt;Makes some binary sections read-only.&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Protection Mechanism&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rpath&lt;/td&gt;&lt;td&gt;The run-time library search path hard-coded in an executable file or library.&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Signed&lt;/td&gt;&lt;td&gt;Digitally signed&lt;/td&gt;&lt;td&gt;Only for PE binaries&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Static&lt;/td&gt;&lt;td&gt;Whether the binary is statically linked&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Stripped&lt;/td&gt;&lt;td&gt;Whether the binary contain debug information&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;va&lt;/td&gt;&lt;td&gt;Uses virtual addressing&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;sample-outputs&quot;&gt;Sample outputs&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;$ rabin2 -I /bin/bash
arch     x86
baddr    0x0
binsz    1111705
bintype  elf
bits     64
canary   true
sanitiz  false
class    ELF64
crypto   false
endian   little
havecode true
intrp    /lib64/ld-linux-x86-64.so.2
laddr    0x0
lang     c
linenum  false
lsyms    false
machine  AMD x86-64 architecture
maxopsz  16
minopsz  1
nx       true
os       linux
pcalign  0
pic      true
relocs   false
relro    full
rpath    NONE
static   false
stripped true
subsys   linux
va       true
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;$ rabin2 -I /mnt/c/Windows/System32/ipconfig.exe
arch     x86
baddr    0x140000000
binsz    34816
bintype  pe
bits     64
canary   false
retguard false
sanitiz  false
class    PE32+
cmp.csum 0x0000cef7
compiled Tue Jan 14 03:35:17 1986
crypto   false
dbg_file ipconfig.pdb
endian   little
havecode true
hdr.csum 0x0000cef7
guid     FF8C0F8EBC5D9AA01B9260167EE2FC3C1
laddr    0x0
linenum  false
lsyms    false
machine  AMD 64
maxopsz  16
minopsz  1
nx       true
os       windows
overlay  false
pcalign  0
pic      true
relocs   false
signed   false
static   false
stripped true
subsys   Windows CUI
va       true
&lt;/code&gt;&lt;/pre&gt;</content></entry><entry><title>SNI and ESNI</title><id>https://dzhy.dev/posts/2019-07-20-sni-esni</id><updated>2019-07-20T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2019-07-20-sni-esni" rel="alternate"/><published>2019-07-20T00:00:00+00:00</published><content type="html">&lt;h1&gt;SNI and ESNI&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2019-07-20&quot;&gt;20 Jul 2019&lt;/time&gt;
&lt;h2 id=&quot;prelude&quot;&gt;Prelude&lt;/h2&gt;
&lt;p&gt;I have a DNS resolver setup at home which my home devices use and set it to use DNS over TLS (DoT) to resolve queries so ISPs and such can&apos;t see the domains I&apos;m visiting, but SNI is leaking out the sites I&apos;m visiting and there&apos;s nothing much I can do about it for now. 😣&lt;/p&gt;
&lt;h2 id=&quot;what-is-the-purpose-of-sni&quot;&gt;What is the Purpose of SNI&lt;/h2&gt;
&lt;h3 id=&quot;problem&quot;&gt;Problem&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Name-based virtual hosting allows multiple DNS hostnames to be hosted by a single server (usually a web server) on the same IP address. To achieve this, the server uses a hostname presented by the client as part of the protocol (for HTTP the name is presented in the host header). &lt;a href=&quot;https://en.wikipedia.org/wiki/Server_Name_Indication&quot;&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;However, when using HTTPS, the TLS connection happens before the sending of any HTTP data, so we need another way of letting the server know which host we are connecting to so it can establish the TLS connection with the correct certificate.&lt;/p&gt;
&lt;h3 id=&quot;solution&quot;&gt;Solution&lt;/h3&gt;
&lt;p&gt;Server Name Indication (SNI) solves this by having the client send the hostname as part of the TLS handshake. This enables the server to establish the TLS connection with the correct certificate.&lt;/p&gt;
&lt;p&gt;The hostname sent during TLS handshake is not encrypted, so eavesdroppers for example ISPs can see which sites you are visiting.&lt;/p&gt;
&lt;p&gt;Here&apos;s a diagram to illustrate. 🔒 Means that it is encrypted.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;sequenceDiagram
    Client-&amp;gt;&amp;gt;Server: ClientHello + SNI
    Server-&amp;gt;&amp;gt;Client: ServerHello
    Client-&amp;gt;&amp;gt;Server: Finished🔒
    Client-&amp;gt;&amp;gt;Server: HTTP Request🔒
    Server-&amp;gt;&amp;gt;Client: HTTP Response🔒
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I have written a &lt;a href=&quot;https://github.com/PotatoDrug/SNI-Sniffer&quot;&gt;SNI Sniffer&lt;/a&gt; (only tested on linux) to see this in effect, the code quality is pretty bad I&apos;ll update it when I have time.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;➜ sudo sni-sniffer -s eth0
Started capturing on ens33
TCP V4(192.168.14.128):50596 -&amp;gt; V4(172.217.27.46):443
SNI: [
    &amp;quot;google.com&amp;quot;,
]
TCP V4(192.168.14.128):51262 -&amp;gt; V4(117.18.232.200):443
SNI: [
    &amp;quot;az764295.vo.msecnd.net&amp;quot;,
]
TCP V4(192.168.14.128):45508 -&amp;gt; V4(111.221.29.254):443
SNI: [
    &amp;quot;vortex.data.microsoft.com&amp;quot;,
]
TCP V4(192.168.14.128):40952 -&amp;gt; V4(172.217.160.10):443
SNI: [
    &amp;quot;safebrowsing.googleapis.com&amp;quot;,
]
TCP V4(192.168.14.128):37934 -&amp;gt; V4(35.166.72.120):443
SNI: [
    &amp;quot;shavar.services.mozilla.com&amp;quot;,
]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;esni&quot;&gt;ESNI🔒&lt;/h2&gt;
&lt;p&gt;Encrypted SNI is an extension to TLS 1.3 and above which encrypts the SNI so eavesdroppers cannot see which sites you are visiting.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;sequenceDiagram
    Client-&amp;gt;&amp;gt;Server: ClientHello + ESNI🔒
    Server-&amp;gt;&amp;gt;Client: ServerHello
    Client-&amp;gt;&amp;gt;Server: Finished🔒
    Client-&amp;gt;&amp;gt;Server: HTTP Request🔒
    Server-&amp;gt;&amp;gt;Client: HTTP Response🔒
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The general idea of how ESNI works is the server publishes a public key on as a DNS record, which can be fetched by the client before connecting. The client then encrypts the SNI extension using a symmetric encryption key derived using the server&apos;s public key. The server can then decrypt it by deriving the same symmetric encryption key using it&apos;s private key.&lt;/p&gt;
&lt;p&gt;For now the only browser I know that supports ESNI is Firefox, but it is not enabled by default, you have to enable it yourself, by going to &lt;code&gt;about:config&lt;/code&gt; and setting &lt;code&gt;network.security.esni.enabled&lt;/code&gt; to true.&lt;/p&gt;
&lt;p&gt;The problem now is the server you are connecting to has to support ESNI as well, and there isn&apos;t much support for it software wise as the specifications for ESNI is still in draft. Even when the software support is there, most people are probably lazy to setup ESNI for their servers, currently the best/easiest solution is to use cloudflare as a reverse proxy as they have ESNI enabled by default.&lt;/p&gt;
&lt;p&gt;Hopefully specifications for ESNI will be firmed up soon and more sites and browsers will start using ESNI.&lt;/p&gt;
</content></entry><entry><title>CDDC 2019 LSCVM Writeup</title><id>https://dzhy.dev/posts/2019-06-14-cddc-2019-lscvm-writeup</id><updated>2019-06-14T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2019-06-14-cddc-2019-lscvm-writeup" rel="alternate"/><published>2019-06-14T00:00:00+00:00</published><content type="html">&lt;h1&gt;CDDC 2019 LSCVM Writeup&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2019-06-14&quot;&gt;14 Jun 2019&lt;/time&gt;
&lt;p&gt;This is actually a challenge from the qualifiers, but because this challenge will be used in the Finals again so we weren&apos;t allowed to post about it until after the finals. More on that &lt;a href=&quot;rant&quot;&gt;later&lt;/a&gt;, here&apos;s the writeup.&lt;/p&gt;
&lt;h2 id=&quot;lscvm-immaculate-invasion&quot;&gt;LSCVM: Immaculate Invasion&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;DESCRIPTION&lt;/p&gt;
&lt;p&gt;During our recon on the notorious fools of LightSpeedCorp, we have discovered this service which runs on a really simple, tiny, trivial, virtual machine that they have created. We are not sure of its purpose, but it certainly looks fun to play with.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;lscvm-ii.cddc19q.ctf.sg 9001&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;IMPORTANT: We highly recommend you to fully understand this challenge as we will use this VM again in the Final.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;solution&quot;&gt;Solution&lt;/h3&gt;
&lt;p&gt;Looking at the strings in the binary, it looks like we are dealing with a Stack based vm, and those long strings are probably the instructions.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;images/2019-06-14-cddc-2019-lscvm-writeup/lscvm_strings.webp&quot; alt=&quot;Strings&quot; /&gt;&lt;/p&gt;
&lt;p&gt;If we try running it we&apos;ll get an error.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cddc/re/LSCVM ➜ ./lscvm-ii
[-] Flag file open error: No such file or directory
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We find the code that is throwing the error and we can see it is trying to read a file called flag.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;images/2019-06-14-cddc-2019-lscvm-writeup/read_flag.webp&quot; alt=&quot;Read flag&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s create a file called flag to fix this error.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synsupport synfunction synecho synshell&quot;&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; &lt;span class=&quot;synstring synquoted synsingle synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synshell&quot;&gt;&amp;#39;&lt;/span&gt;CTF{flag}&lt;span class=&quot;synpunctuation syndefinition synstring synend synshell&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;gt;&lt;/span&gt; flag&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now when we run it we can see that it asks us for an ID which we have to figure out.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cddc/re/LSCVM ➜ ./lscvm-ii

=== Welcome to LSCVM(LightSpeed Corp Virtual Machine) ===

ID : 1
[-] Wrong id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After doing some analysis, I figured out that if argc is 2 the program will print out &apos;debug&apos; information.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cddc/re/LSCVM ➜ ./lscvm-ii a
@0 c [ 02 ]
@1 f [ 02 05 ]
@2 M [ 0a ]
@3 c [ 0a 02 ]
@4 f [ 0a 02 05 ]
@5 M [ 0a 0a ]
@6 h [ 0a 0a 07 ]
@7 i [ 0a 0a 07 08 ]
@8 M [ 0a 0a 38 ]
@9 f [ 0a 0a 38 05 ]
@10 A [ 0a 0a 3d ]
.
.
.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The information can be interpreted this way.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Instruction pointer&lt;/th&gt;&lt;th&gt;instruction&lt;/th&gt;&lt;th&gt;output&lt;/th&gt;&lt;th&gt;Stack after running instruction&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;@0&lt;/td&gt;&lt;td&gt;c&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;[ 02 ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;@1&lt;/td&gt;&lt;td&gt;f&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;[ 02 05 ]&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;@2&lt;/td&gt;&lt;td&gt;M&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;[ 0a ]&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Using the debug output and static analysis, I was able to recover the whole instruction set.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Opcode (Hex)&lt;/th&gt;&lt;th&gt;Opcode (Char)&lt;/th&gt;&lt;th&gt;Assmebly&lt;/th&gt;&lt;th&gt;Comment&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Default&lt;/td&gt;&lt;td&gt;NIL&lt;/td&gt;&lt;td&gt;nop&lt;/td&gt;&lt;td&gt;no operation, waste cycle&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x0a&lt;/td&gt;&lt;td&gt;\n&lt;/td&gt;&lt;td&gt;nop&lt;/td&gt;&lt;td&gt;no operation, waste cycle&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x20&lt;/td&gt;&lt;td&gt;\s&lt;/td&gt;&lt;td&gt;nop&lt;/td&gt;&lt;td&gt;no operation, waste cycle&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x41&lt;/td&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;add&lt;/td&gt;&lt;td&gt;Pop 2 values from stack and push the addition&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x42&lt;/td&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;hlt&lt;/td&gt;&lt;td&gt;Stop executing code&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x43&lt;/td&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;jmp&lt;/td&gt;&lt;td&gt;Pop and jump to value&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x44&lt;/td&gt;&lt;td&gt;D&lt;/td&gt;&lt;td&gt;pop&lt;/td&gt;&lt;td&gt;Pop a value and do nothing&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x45&lt;/td&gt;&lt;td&gt;E&lt;/td&gt;&lt;td&gt;read&lt;/td&gt;&lt;td&gt;Pop addr and push val. &lt;code&gt;0&lt;/code&gt; &amp;lt;= addr &amp;lt;= &lt;code&gt;0x3fff&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x46&lt;/td&gt;&lt;td&gt;F&lt;/td&gt;&lt;td&gt;sclone&lt;/td&gt;&lt;td&gt;pop value n and (clone) push n+1 th previous stack value&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x47&lt;/td&gt;&lt;td&gt;G&lt;/td&gt;&lt;td&gt;ipadd&lt;/td&gt;&lt;td&gt;Pop value and add it to IP (Instruction Pointer)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x48&lt;/td&gt;&lt;td&gt;H&lt;/td&gt;&lt;td&gt;sshift&lt;/td&gt;&lt;td&gt;pop value n and shift n+1 th previous stack value to the top of the stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x49&lt;/td&gt;&lt;td&gt;I&lt;/td&gt;&lt;td&gt;pint&lt;/td&gt;&lt;td&gt;Pop value and Print as int&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x4a&lt;/td&gt;&lt;td&gt;J&lt;/td&gt;&lt;td&gt;cmp&lt;/td&gt;&lt;td&gt;pop 2 values and push 0 if equal, 1 if first pop is smaller else -1. &lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x4b&lt;/td&gt;&lt;td&gt;K&lt;/td&gt;&lt;td&gt;write&lt;/td&gt;&lt;td&gt;first pop is addr, 2nd pop is value to write&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x4d&lt;/td&gt;&lt;td&gt;M&lt;/td&gt;&lt;td&gt;mul&lt;/td&gt;&lt;td&gt;Pop 2 values from stack and push the multiplication&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x50&lt;/td&gt;&lt;td&gt;P&lt;/td&gt;&lt;td&gt;pchar&lt;/td&gt;&lt;td&gt;Pops value from stack and print as char&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x52&lt;/td&gt;&lt;td&gt;R&lt;/td&gt;&lt;td&gt;rjmp&lt;/td&gt;&lt;td&gt;Jump to previous jump location, cant do twice in a row, because it consumes the previous jump location.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x53&lt;/td&gt;&lt;td&gt;S&lt;/td&gt;&lt;td&gt;sub&lt;/td&gt;&lt;td&gt;subtract 1st pop from 2nd pop push result&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x56&lt;/td&gt;&lt;td&gt;V&lt;/td&gt;&lt;td&gt;div&lt;/td&gt;&lt;td&gt;Divide (floor) 2nd pop by 1st pop and push result&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x5a&lt;/td&gt;&lt;td&gt;Z&lt;/td&gt;&lt;td&gt;ipcadd&lt;/td&gt;&lt;td&gt;conditional add to IP, if 2nd pop is 0, add 1st pop to IP&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x61&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;p0&lt;/td&gt;&lt;td&gt;Push 0x00 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x62&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;td&gt;p1&lt;/td&gt;&lt;td&gt;Push 0x01 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x63&lt;/td&gt;&lt;td&gt;c&lt;/td&gt;&lt;td&gt;p2&lt;/td&gt;&lt;td&gt;Push 0x02 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x64&lt;/td&gt;&lt;td&gt;d&lt;/td&gt;&lt;td&gt;p3&lt;/td&gt;&lt;td&gt;Push 0x03 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x65&lt;/td&gt;&lt;td&gt;e&lt;/td&gt;&lt;td&gt;p4&lt;/td&gt;&lt;td&gt;Push 0x04 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x66&lt;/td&gt;&lt;td&gt;f&lt;/td&gt;&lt;td&gt;p5&lt;/td&gt;&lt;td&gt;Push 0x05 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x67&lt;/td&gt;&lt;td&gt;g&lt;/td&gt;&lt;td&gt;p6&lt;/td&gt;&lt;td&gt;Push 0x06 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x68&lt;/td&gt;&lt;td&gt;h&lt;/td&gt;&lt;td&gt;p7&lt;/td&gt;&lt;td&gt;Push 0x07 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x69&lt;/td&gt;&lt;td&gt;i&lt;/td&gt;&lt;td&gt;p8&lt;/td&gt;&lt;td&gt;Push 0x08 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;0x6a&lt;/td&gt;&lt;td&gt;j&lt;/td&gt;&lt;td&gt;p9&lt;/td&gt;&lt;td&gt;Push 0x09 to stack&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The input we are giving the program is actually being executed by the vm as code.&lt;/p&gt;
&lt;p&gt;To get the flag, we have to provide the vm with code that will write &lt;code&gt;lsc_user&lt;/code&gt; to the vm memory, and then provide another code that will write &lt;code&gt;hi_darkspeed-corp!&lt;/code&gt; to the vm memory.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;images/2019-06-14-cddc-2019-lscvm-writeup/get_flag.webp&quot; alt=&quot;Get flag conditions&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Using the instruction set recovered I wrote this script to generate the vm code required to write the strings to memory and submit it to the service.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;synsource synpython&quot;&gt;&lt;span class=&quot;syncomment synline synnumber-sign synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncomment synpython&quot;&gt;#&lt;/span&gt;!/usr/bin/env python3
&lt;/span&gt;&lt;span class=&quot;synmeta synstatement synimport synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synimport synpython&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;socket&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;nums&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synstructure syndictionary-or-set synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection syndictionary-or-set synbegin synpython&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;00&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;a&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;01&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;b&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;02&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;c&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;03&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;d&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;04&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;e&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;05&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;f&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;06&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;g&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;07&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;h&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;08&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;i&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;09&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;j&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;0a&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jbA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;0b&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jcA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;0c&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jdA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;0d&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jeA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;0e&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jfA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;0f&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jgA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;10&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jhA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;11&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jiA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;12&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;21&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;eiMbA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;2d&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jfM&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;5f&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMchMA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;61&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMcjMAcS&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;63&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMcjMA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;64&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMcjMAbA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;65&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMcjMAcA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;68&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMdhMcAA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;69&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMdhMdAA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;6b&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMdjMAbS&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;6c&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMdjMA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;6f&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMdjMAdA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;70&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMfhMeSA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;72&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMfhMcSA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;73&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMfhMbSA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;synconstant synnumeric syninteger synhexadecimal synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synnumeric synhexadecimal synpython&quot;&gt;0x&lt;/span&gt;75&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;jjMfhMbAA&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syndictionary-or-set synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;synmeta synfunction synpython&quot;&gt;&lt;span class=&quot;synstorage syntype synfunction synpython&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;synentity synname synfunction synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;write_str&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction synparameters synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synparameters synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction synparameters synpython&quot;&gt;&lt;span class=&quot;synvariable synparameter synpython&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synparameters synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synfunction synbegin synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;output&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta synstatement synfor synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synfor synpython&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;synmeta synstatement synfor synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synfor synin synpython&quot;&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstatement synfor synpython&quot;&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;range&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;len&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;target&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synblock synfor synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;output&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synaugmented synpython&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;nums&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synpython&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;ord&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;target&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synpython&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synpython&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synpython&quot;&gt;]&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synarithmetic synpython&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;nums&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synpython&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synpython&quot;&gt;]&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;synkeyword syncontrol synflow synreturn synpython&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;output&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synarithmetic synpython&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;K&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synarithmetic synpython&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;len&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;target&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;id_code&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;write_str&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;lsc_user&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;pass_code&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;write_str&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;hi_darkspeed-corp!&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;ID: &lt;span class=&quot;synconstant synother synplaceholder synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synbegin synpython&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synconstant syncharacter synescape synpython&quot;&gt;\n&lt;/span&gt;Password: &lt;span class=&quot;synconstant synother synplaceholder synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synbegin synpython&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synconstant syncharacter synescape synpython&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;format&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;id_code&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;pass_code&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;Connecting to service...&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;client&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;socket&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synvariable synother synconstant synpython&quot;&gt;AF_INET&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synvariable synother synconstant synpython&quot;&gt;SOCK_STREAM&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;connect&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta syngroup synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;lscvm-ii.cddc19q.ctf.sg&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syntuple synpython&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;synconstant synnumeric syninteger syndecimal synpython&quot;&gt;9001&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;sendall&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synconstant synother synplaceholder synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synbegin synpython&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synconstant syncharacter synescape synpython&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;format&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;id_code&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;encode&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;sendall&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synconstant synother synplaceholder synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synbegin synpython&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synconstant syncharacter synescape synpython&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;format&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;pass_code&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;encode&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synstatement synwhile synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synwhile synpython&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;synconstant synlanguage synpython&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synblock synwhile synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;msg&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;recv&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synconstant synnumeric syninteger syndecimal synpython&quot;&gt;1024&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;decode&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta synstatement synif synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synconditional synpython&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;msg&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synblock synconditional synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;msg&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta synstatement synif synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synconditional synpython&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;$CDDC19${&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synlogical synpython&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;msg&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synblock synconditional synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;close&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;synkeyword syncontrol synflow synpython&quot;&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;cddc/re/LSCVM ➜ ./solve.py
ID: jjMdjMAajjMfhMbSAbjjMcjMAcjjMchMAdjjMfhMbAAejjMfhMbSAfjjMcjMAcAgjjMfhMcSAhKKKKKKKK
Password: jjMdhMcAAajjMdhMdAAbjjMchMAcjjMcjMAbAdjjMcjMAcSejjMfhMcSAfjjMdjMAbSgjjMfhMbSAhjjMfhMeSA
ijjMcjMAcAjjjMcjMAcAjbAjjMcjMAbAjcAjfMjdAjjMcjMAjeAjjMdjMAdAjfAjjMfhMcSAjgAjjMfhMeSAjhAeiMbAjiAKK
KKKKKKKKKKKKKKKK

Connecting to service...


=== Welcome to LSCVM(LightSpeed Corp Virtual Machine) ===

ID : Password :
Login Successful! $CDDC19${IcY_GrE37ings_Fr0M_LigHT5pEeDC0Rp}

lsc_user, Good Bye!
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;flag&quot;&gt;Flag&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$CDDC19${IcY_GrE37ings_Fr0M_LigHT5pEeDC0Rp}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;rant&quot;&gt;Rant&lt;/h2&gt;
&lt;p&gt;The organizers stated in the qualifiers LSCVM challenges that it is important to fully understand the VM as it will be used again in the Finals.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;IMPORTANT: We highly recommend you to fully understand this challenge as we will use this VM again in the Final.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The way they brought this accross made me think that it will play a big part in the finals, so I built a &lt;a href=&quot;https://github.com/PotatoDrug/LSCVM-Tool&quot;&gt;tool&lt;/a&gt; for the purpose of working on LSCVM challenge(s) during the Finals. However LSCVM was not a big part of the Finals and I didn&apos;t get to use my tool at all.&lt;/p&gt;
&lt;p&gt;The finals also had Rings where you have to solve a certain number of challenges to unlock the next ring. Personally I don&apos;t think the rings concept is a good idea, because what if it just so happens the participant can&apos;t solve the starting challenges but they can solve the ones in the next or next next ring? I would&apos;ve preferred it if the challenges were all available at the start.&lt;/p&gt;
&lt;p&gt;I understand that it was implemented to limit the number of teams that can attempt the hardware challenges because they don&apos;t have enought equipment for everyone to attempt at the same time, but this can also be done by only unlocking the hardware challenges once a team reach a certain number of points/solves, instead of implementing Rings.&lt;/p&gt;
&lt;p&gt;There&apos;s not gonna be any writeup for the finals challenges cause I did everything on the provided laptop and didn&apos;t transfer the files out.&lt;/p&gt;
</content></entry><entry><title>CDDC 2019 Qualifiers Writeup</title><id>https://dzhy.dev/posts/2019-06-04-cddc-2019-qualifiers-writeup</id><updated>2019-06-04T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2019-06-04-cddc-2019-qualifiers-writeup" rel="alternate"/><published>2019-06-04T00:00:00+00:00</published><content type="html">&lt;h1&gt;CDDC 2019 Qualifiers Writeup&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2019-06-04&quot;&gt;04 Jun 2019&lt;/time&gt;
&lt;p&gt;This year&apos;s CDDC Qualifiers was very different from the previous year which was more of an &apos;red team&apos; ctf, this year&apos;s qualifiers is a jeopardy style ctf and it&apos;s pretty focused on OSINT which I&apos;m not really into, but anyways here are the writeups for some of the more interesting challenges I solved.&lt;/p&gt;
&lt;h2 id=&quot;b-1-fight-the-binary-monster&quot;&gt;[B-1] Fight the Binary Monster&lt;/h2&gt;
&lt;p&gt;Category: OSINT_Blue&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Drats, we found an unknown executable that someone uploaded to one of our web servers. How weird, it seems to be make heavy reference to trees. Is the author some kind of environmentalist, perhaps?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;solution&quot;&gt;Solution&lt;/h3&gt;
&lt;p&gt;When we execute the binary it asks us for the domain it is accessing.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; .\tree_monster.exe
What domain is being accessed by this executable file?
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If we grep for a common TLD &lt;code&gt;.com&lt;/code&gt; in the binary, we find &lt;code&gt;pastebin.com&lt;/code&gt; and 2 pastebin links.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;cddc/osint_blue/Fight&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; the Binary Monster ➜ strings tree_monster.exe&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synlogical synpipe synshell&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;grep&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; &lt;span class=&quot;synstring synquoted synsingle synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synshell&quot;&gt;&amp;#39;&lt;/span&gt;\.com&lt;span class=&quot;synpunctuation syndefinition synstring synend synshell&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;https://pastebin.com/raw/EcrLPtRP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;https://pastebin.com/raw/v1cRRWEW&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;pastebin.com&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Browsing to &lt;code&gt;https://pastebin.com/raw/v1cRRWEW&lt;/code&gt; we get the word &lt;code&gt;post&lt;/code&gt; repeated a lot times.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;post post post post post post post post post post post post post post post post post post post post post post post post post post post post
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Browsing to &lt;code&gt;https://pastebin.com/raw/EcrLPtRP&lt;/code&gt; we get a tree. We see characters of the flag being the nodes of the tree, the previous pastebin link is a hint on using post order traversal to trasverse the tree to get the flag.
&lt;img src=&quot;images/2019-06-04-cddc-2019-qualifiers-writeup/tree.webp&quot; alt=&quot;tree&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;flag&quot;&gt;Flag&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$CDDC19${havesometrees}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;funshop&quot;&gt;FunShop&lt;/h2&gt;
&lt;p&gt;Category: Crypto&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Oops, I forgot what&apos;s the product code. Please help me to recover it!&lt;/p&gt;
&lt;p&gt;http://funshop.cddc19q.ctf.sg/&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;solution-1&quot;&gt;Solution&lt;/h3&gt;
&lt;p&gt;When we click get on fun ant or fun guy we can see it is sending a get request to &lt;code&gt;/page/transaction.php&lt;/code&gt; with the corresponding prod_code as the parameter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;images/2019-06-04-cddc-2019-qualifiers-writeup/funshop.webp&quot; alt=&quot;Challenge site&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When we send one ourself we can see that it&apos;s hinting that there&apos;s a debug mode we can enable by supplying the &lt;code&gt;debug_mode=1&lt;/code&gt; get parameter.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;cddc/crypto/FunShop&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; ➜ curl &lt;span class=&quot;synstring synquoted synsingle synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synshell&quot;&gt;&amp;#39;&lt;/span&gt;http://funshop.cddc19q.ctf.sg/page/transaction.php?prod_code=94-04-3Q
mM-ulP-c0z-k&lt;span class=&quot;synpunctuation syndefinition synstring synend synshell&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt;&lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;lt;&lt;/span&gt;!-- &lt;span class=&quot;synkeyword synoperator synregexp synquantifier synshell&quot;&gt;?&lt;/span&gt;debug_mode=1 --&lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;Success:&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; Actually, I&lt;span class=&quot;synstring synquoted synsingle synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synshell&quot;&gt;&amp;#39;&lt;/span&gt;m not an ant. &amp;quot;I am Groot. :P&amp;quot;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When we supply the &lt;code&gt;debug_mode=1&lt;/code&gt; get parameter, we get the source code of the &lt;code&gt;transcation.php&lt;/code&gt;.
&lt;img src=&quot;images/2019-06-04-cddc-2019-qualifiers-writeup/funshop_sourcecode.webp&quot; alt=&quot;Source code&quot; /&gt;&lt;/p&gt;
&lt;p&gt;To get the flag we have to send a &lt;code&gt;prod_code&lt;/code&gt; that is not &lt;code&gt;94-04-3QmM-ulP-c0z-k&lt;/code&gt; or &lt;code&gt;W8-31-5053-0kX-QiL-1&lt;/code&gt;, but to do this we need to know the private key, lucky for us this is an insecure implementation of a MAC which is vulnerable to hash length extension attack. We get a valid hash and we can append data to it and get the hash for the string with appended data, without having to know the private key. The only requirement for this attack is to know the length of the private key, which we can bruteforce.&lt;/p&gt;
&lt;p&gt;Solve script&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;synsource synpython&quot;&gt;&lt;span class=&quot;syncomment synline synnumber-sign synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncomment synpython&quot;&gt;#&lt;/span&gt;!/usr/bin/env python3
&lt;/span&gt;&lt;span class=&quot;synmeta synstatement synimport synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synimport synpython&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;hashpumpy&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synstatement synimport synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synimport synpython&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;base64&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synstatement synimport synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synimport synpython&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;requests&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synstatement synimport synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synimport synpython&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;urllib&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;url&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;http://funshop.cddc19q.ctf.sg/page/transaction.php&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;r&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;requests&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synconstant synother synplaceholder synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synbegin synpython&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;?prod_code=94-04-3QmM-ulP-c0z-k&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;format&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;url&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;transaction_hash&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;cookies&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synpython&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;transaction_hash&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synpython&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;prod_code&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;base64&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;b64decode&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;urllib&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;unquote&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;cookies&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synpython&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;prod_code&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synpython&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;decode&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;syncomment synline synnumber-sign synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncomment synpython&quot;&gt;#&lt;/span&gt; brute force the private key length
&lt;/span&gt;&lt;span class=&quot;synmeta synstatement synfor synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synfor synpython&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;synmeta synstatement synfor synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synfor synin synpython&quot;&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstatement synfor synpython&quot;&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;range&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synconstant synnumeric syninteger syndecimal synpython&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synconstant synnumeric syninteger syndecimal synpython&quot;&gt;200&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synblock synfor synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;x&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;hashpumpy&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;hashpump&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;transaction_hash&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;prod_code&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;data_to_add&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;new_hash&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synpython&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synpython&quot;&gt;&lt;span class=&quot;synconstant synnumeric syninteger syndecimal synpython&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synpython&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;crafted_data&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;base64&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;b64encode&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synpython&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synpython&quot;&gt;&lt;span class=&quot;synconstant synnumeric syninteger syndecimal synpython&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synpython&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;decode&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;cookies&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synstructure syndictionary-or-set synpython&quot;&gt;&lt;span class=&quot;synpunctuation synsection syndictionary-or-set synbegin synpython&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;prod_code&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;crafted_data&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator syndictionary-or-set synpython&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;transaction_hash&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synkey-value synpython&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;new_hash&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syndictionary-or-set synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;r&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;requests&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;url&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synvariable synparameter synpython&quot;&gt;cookies&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;cookies&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;

    &lt;span class=&quot;synmeta synstatement synif synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synconditional synpython&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;text&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator syncomparison synpython&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&amp;lt;!-- ?debug_mode=1 --&amp;gt;&lt;span class=&quot;synconstant syncharacter synescape synpython&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synblock synconditional synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;PRIVATE_KEY length = &lt;span class=&quot;synconstant synother synplaceholder synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synbegin synpython&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synconstant syncharacter synescape synpython&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;synconstant synother synplaceholder synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synbegin synpython&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synplaceholder synend synpython&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;format&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;exit&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;Failed&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;cddc/crypto/FunShop&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; ➜ ./length_extension.py&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;PRIVATE_KEY&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; length = 14&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt;&lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;lt;&lt;/span&gt;!-- &lt;span class=&quot;synkeyword synoperator synregexp synquantifier synshell&quot;&gt;?&lt;/span&gt;debug_mode=1 --&lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;&lt;span class=&quot;synmeta syngroup synexpansion synparameter synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synshell&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;synvariable synother synreadwrite synshell&quot;&gt;CDDC19&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synexpansion synparameter synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synshell&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synexpansion synparameter synbegin synshell&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synexpansion synparameter synshell&quot;&gt;&lt;span class=&quot;synvariable synother synreadwrite synshell&quot;&gt;Me0w_m30w_@wesome!_h0w_c@n_y0u_find_me&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synexpansion synparameter synshell&quot;&gt;&lt;span class=&quot;synkeyword synoperator synassignment synshell&quot;&gt;?&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synexpansion synparameter synshell&quot;&gt;_FUNFUN&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synexpansion synparameter synshell&quot;&gt;&lt;span class=&quot;synpunctuation synsection synexpansion synparameter synend synshell&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;flag-1&quot;&gt;Flag&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$CDDC19${Me0w_m30w_@wesome!_h0w_c@n_y0u_find_me?_FUNFUN}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;lemonade&quot;&gt;Lemonade&lt;/h2&gt;
&lt;p&gt;Category: Reverse&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If we need lemons to make lemonade... Then what about Lemonade.EXE?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;solution-2&quot;&gt;Solution&lt;/h3&gt;
&lt;p&gt;Looking at the strings in the binary I realized that it is a compiled AutoIT script.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;images/2019-06-04-cddc-2019-qualifiers-writeup/autoit.webp&quot; alt=&quot;Strings in the binary&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Then I looked for a decompiler online and I found &lt;a href=&quot;https://files.planet-dl.org/Cw2k/MyAutToExe/index.html&quot;&gt;MyAut2EXE&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The tool found the version of AutoIT used to be &lt;code&gt;AutoIT v3.3.14.5&lt;/code&gt;, and successfully decompiled it. Now we have the source code of the AutoIT script, and we can see the flag in plaintext in the code.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-au3&quot;&gt;LOCAL $INT1 = GUICTRLREAD($INPUT1)
LOCAL $INT2 = GUICTRLREAD($INPUT2)
IF $INT1 = &amp;quot;&amp;quot; OR $INT2 = &amp;quot;&amp;quot; THEN

    MSGBOX(0, &amp;quot;NOPEEEE&amp;quot;, &amp;quot;Please input numbers :)&amp;quot;)
ELSEIF $INT1 = 941228 AND $INT2 = 940628 THEN
    MSGBOX(0, &amp;quot;Congratulations XD!!&amp;quot;, &amp;quot;$CDDC19${easy_peasy_Autoit_squeezy}&amp;quot;)
ELSEIF NOT STRINGISINT($INT1) OR NOT STRINGISINT($INT2) THEN
    MSGBOX(0, &amp;quot;NOPEEEE&amp;quot;, &amp;quot;Only numbers allowed :(&amp;quot;)
ELSE
    MSGBOX(0, &amp;quot;Result!!&amp;quot;, $INT1 + $INT2)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;flag-2&quot;&gt;Flag&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$CDDC19${easy_peasy_Autoit_squeezy}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;_&quot;&gt;\&apos;_&apos;/&lt;/h2&gt;
&lt;p&gt;Category: Web&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;\&apos;_&apos;/&lt;/p&gt;
&lt;p&gt;http://가나다라마바사아자차카타파하.cddc19q.ctf.sg/&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;solution-3&quot;&gt;Solution&lt;/h3&gt;
&lt;p&gt;When we browse to the site we are given the source code of the php file, I modified it for easier testing locally.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&lt;span class=&quot;synembedding synphp&quot;&gt;&lt;span class=&quot;syntext synhtml synbasic&quot;&gt;&lt;span class=&quot;synmeta synembedded synblock synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synembedded synbegin synphp&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synembedded synblock synphp&quot;&gt;&lt;span class=&quot;synsource synphp&quot;&gt;
&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;1: &lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strpos&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;    &lt;span class=&quot;syncomment synline syndouble-slash synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncomment synphp&quot;&gt;//&lt;/span&gt; strting must start with _
&lt;/span&gt;&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;2: &lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;stripos&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;syncomment synline syndouble-slash synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncomment synphp&quot;&gt;//&lt;/span&gt; string must start with _
&lt;/span&gt;&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;3: &lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strrpos&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;syncomment synline syndouble-slash synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncomment synphp&quot;&gt;//&lt;/span&gt; last position of _ in string must be 0
&lt;/span&gt;&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;4: &lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strripos&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;syncomment synline syndouble-slash synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncomment synphp&quot;&gt;//&lt;/span&gt; last position of _ in string must be 0
&lt;/span&gt;&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;5: &lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strstr&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;6: &lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strpbrk&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;7: &lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synphp_pcre synphp&quot;&gt;preg_match&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synstring synregexp syndouble-quoted synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;/&lt;/span&gt;&lt;span class=&quot;synstring synregexp syncharacter-class synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncharacter-class synphp&quot;&gt;[&lt;/span&gt;a-z&lt;span class=&quot;synpunctuation syndefinition syncharacter-class synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synregexp syncharacter-class synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncharacter-class synphp&quot;&gt;[&lt;/span&gt;0-9._&lt;span class=&quot;synpunctuation syndefinition syncharacter-class synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;/&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;8: &lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synphp_pcre synphp&quot;&gt;preg_match&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synstring synregexp syndouble-quoted synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;/&lt;/span&gt;ABCDEFGHIJKLMNOPQRSTUVWXYZ&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;/&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synstring synphp&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synvar synphp&quot;&gt;print_r&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_GET&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;=========================================================================&amp;lt;br&amp;gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strpos&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator syncomparison synphp&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;synconstant synlanguage synphp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;\&amp;#39;1&amp;#39;/&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;stripos&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator syncomparison synphp&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;synconstant synlanguage synphp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;\&amp;#39;2&amp;#39;/&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strrpos&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator syncomparison synphp&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;synconstant synlanguage synphp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;\&amp;#39;3&amp;#39;/&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strripos&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator syncomparison synphp&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;synconstant synlanguage synphp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;\&amp;#39;4&amp;#39;/&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strstr&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator syncomparison synphp&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;synconstant synlanguage synphp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;\&amp;#39;5&amp;#39;/&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synstring synphp&quot;&gt;strpbrk&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator syncomparison synphp&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;synconstant synlanguage synphp&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;\&amp;#39;6&amp;#39;/&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synphp_pcre synphp&quot;&gt;preg_match&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synstring synregexp syndouble-quoted synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;/&lt;/span&gt;&lt;span class=&quot;synstring synregexp syncharacter-class synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncharacter-class synphp&quot;&gt;[&lt;/span&gt;a-z&lt;span class=&quot;synpunctuation syndefinition syncharacter-class synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synregexp syncharacter-class synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition syncharacter-class synphp&quot;&gt;[&lt;/span&gt;0-9._&lt;span class=&quot;synpunctuation syndefinition syncharacter-class synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;/&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;\&amp;#39;7&amp;#39;/&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synphp_pcre synphp&quot;&gt;preg_match&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synstring synregexp syndouble-quoted synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;/&lt;/span&gt;ABCDEFGHIJKLMNOPQRSTUVWXYZ&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;/&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synphp&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synvariable synother synglobal synsafer synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_SERVER&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;QUERY_STRING&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;\&amp;#39;8&amp;#39;/&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;isset&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synvariable synother synglobal synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_GET&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;_1234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZ-qwertyuiopasdfghjklzxcvbnm_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synphp&quot;&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;synmeta syngroup synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection syngroup synbegin synphp&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;synvariable synother synglobal synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synvariable synphp&quot;&gt;$&lt;/span&gt;_GET&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synbegin synphp&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synarguments synphp&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted synsingle synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted synsingle synphp&quot;&gt;_1234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZ-qwertyuiopasdfghjklzxcvbnm_&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synitem-access synphp&quot;&gt;&lt;span class=&quot;synpunctuation synsection synbrackets synend synphp&quot;&gt;]&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator syncomparison synphp&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;🚣‍♀️ 🚣🏻‍♀️ 🚣🏼‍♀️ 🚣🏽‍♀️ 🚣🏾‍♀️ 🚣🏿‍♀️ 🚣‍♂️ 🚣🏻‍♂️ 🚣🏼‍♂️ 🚣🏽‍♂️ 🚣🏾‍♂️ 🚣🏿‍♂️&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection syngroup synend synphp&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;CTF{Flag}&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;Param value not correct&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;synkeyword syncontrol synphp&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;synpunctuation synsection synblock synbegin synphp&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;synsupport synfunction synconstruct synphp&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synstring synquoted syndouble synphp&quot;&gt;&lt;span class=&quot;synmeta synstring-contents synquoted syndouble synphp&quot;&gt;Required param not set&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synphp&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synterminator synexpression synphp&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;synpunctuation synsection synblock synend synphp&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synembedded synend synphp&quot;&gt;?&amp;gt;&lt;span class=&quot;synmeta synhtml-newline-after-php synphp&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After some testing we found out these 2 conditions has to be true.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;strting must start with _&lt;/li&gt;
&lt;li&gt;last position of _ in string must be 0&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Which is not possible if we want to set the get parameter &lt;code&gt;_1234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZ-qwertyuiopasdfghjklzxcvbnm_&lt;/code&gt;. Then it just hit me that the korean subdomain is a hint to the solution, url encoding. Since &lt;code&gt;$_SERVER[&quot;QUERY_STRING&quot;&lt;/code&gt; gets the query string without parsing it, this should work.&lt;/p&gt;
&lt;p&gt;I used this Cyber Chef recipe to url encode &lt;code&gt;_1234567890-ABCDEFGHIJKLMNOPQRSTUVWXYZ-qwertyuiopasdfghjklzxcvbnm_&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;To_Hex(&apos;Space&apos;)
Find_/_Replace({&apos;option&apos;:&apos;Regex&apos;,&apos;string&apos;:&apos;\\s&apos;},&apos;%&apos;,true,false,true,false)
Find_/_Replace({&apos;option&apos;:&apos;Regex&apos;,&apos;string&apos;:&apos;^&apos;},&apos;%&apos;,true,false,true,false)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is our payload url.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http://가나다라마바사아자차카타파하.cddc19q.ctf.sg/?%5f%31%32%33%34%35%36%37%38%39%30%2d%41%42%43%44%45%46%47%48%49%4a%4b%4c%4d%4e%4f%50%51%52%53%54%55%56%57%58%59%5a%2d%71%77%65%72%74%79%75%69%6f%70%61%73%64%66%67%68%6a%6b%6c%7a%78%63%76%62%6e%6d%5f=🚣‍♀️ 🚣🏻‍♀️ 🚣🏼‍♀️ 🚣🏽‍♀️ 🚣🏾‍♀️ 🚣🏿‍♀️ 🚣‍♂️ 🚣🏻‍♂️ 🚣🏼‍♂️ 🚣🏽‍♂️ 🚣🏾‍♂️ 🚣🏿‍♂️
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sure enought it worked.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;images/2019-06-04-cddc-2019-qualifiers-writeup/php_flag.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;flag-3&quot;&gt;Flag&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$CDDC19${PHP_tricks_are_very_fun!}
&lt;/code&gt;&lt;/pre&gt;</content></entry><entry><title>System32 Magic</title><id>https://dzhy.dev/posts/2019-05-21-system32-magic</id><updated>2019-05-21T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2019-05-21-system32-magic" rel="alternate"/><published>2019-05-21T00:00:00+00:00</published><content type="html">&lt;h1&gt;System32 Magic&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2019-05-21&quot;&gt;21 May 2019&lt;/time&gt;
&lt;p&gt;So I was using &lt;strong&gt;32-bit&lt;/strong&gt; python on windows and trying to read a binary in System32.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;synsource synpython&quot;&gt;&lt;span class=&quot;synmeta synstatement synwith synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synwith synpython&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;open&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synstorage syntype synstring synpython&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synsource synregexp synpython&quot;&gt;C:&lt;span class=&quot;synconstant syncharacter syncharacter-class synregexp&quot;&gt;\W&lt;/span&gt;indows&lt;span class=&quot;synconstant syncharacter syncharacter-class synregexp&quot;&gt;\S&lt;/span&gt;ystem32&lt;span class=&quot;synconstant syncharacter synescape synbackslash synregexp&quot;&gt;\F&lt;/span&gt;ileHistory&lt;span class=&quot;synconstant syncharacter syncharacter-class synregexp&quot;&gt;.&lt;/span&gt;exe&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;rb&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synmeta synstatement synwith synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synwith synas synpython&quot;&gt;as&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstatement synwith synpython&quot;&gt; &lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synblock synwith synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;content&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;read&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I was thrown the following error.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;images/2019-05-21-system32-magic/error.webp&quot; alt=&quot;Ah shit, here we go again&quot; /&gt;&lt;/p&gt;
&lt;p&gt;This makes no sense, I know the file exists in System32.&lt;/p&gt;
&lt;p&gt;After some hair tearing and swearing, I figured it out. This error occurs because 32-bit applications are redirected to SysWOW64 when they try to access System32 and there is no &lt;code&gt;FileHistory.exe&lt;/code&gt; in SysWOW64.&lt;/p&gt;
&lt;p&gt;To access the real System32 with 32-bit applications, replace System32 with Sysnative. Sysnative is a special alias that is only visible and accessible from 32-bit programs. So in this case I have to use the following path to actually read the file.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;synsource synpython&quot;&gt;&lt;span class=&quot;synmeta synstatement synwith synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synwith synpython&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synsupport synfunction synbuiltin synpython&quot;&gt;open&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synpython&quot;&gt;&lt;span class=&quot;synstorage syntype synstring synpython&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synsource synregexp synpython&quot;&gt;C:&lt;span class=&quot;synconstant syncharacter syncharacter-class synregexp&quot;&gt;\W&lt;/span&gt;indows&lt;span class=&quot;synconstant syncharacter syncharacter-class synregexp&quot;&gt;\S&lt;/span&gt;ysnative&lt;span class=&quot;synconstant syncharacter synescape synbackslash synregexp&quot;&gt;\F&lt;/span&gt;ileHistory&lt;span class=&quot;synconstant syncharacter syncharacter-class synregexp&quot;&gt;.&lt;/span&gt;exe&lt;/span&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synseparator synarguments synpython&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstring synpython&quot;&gt;&lt;span class=&quot;synstring synquoted synsingle synpython&quot;&gt;rb&lt;span class=&quot;synpunctuation syndefinition synstring synend synpython&quot;&gt;&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synmeta synstatement synwith synpython&quot;&gt;&lt;span class=&quot;synkeyword syncontrol synflow synwith synas synpython&quot;&gt;as&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synstatement synwith synpython&quot;&gt; &lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synblock synwith synpython&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;content&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synkeyword synoperator synassignment synpython&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;synmeta synfunction-call synpython&quot;&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synmeta syngeneric-name synpython&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;synpunctuation synaccessor syndot synpython&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synqualified-name synpython&quot;&gt;&lt;span class=&quot;synvariable synfunction synpython&quot;&gt;read&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synbegin synpython&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synarguments synend synpython&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;why&quot;&gt;Why?&lt;/h2&gt;
&lt;p&gt;Microsoft wants to split the DLLs and other stuff used by 64-bit and 32-bit applications. 64-bit DLLs will be located in System32 because it is a hardcoded path by a lot of apps.&lt;/p&gt;
&lt;p&gt;Intuitively SysWOW64 seems like it should contain 64-bit stuff, but WOW64 stands for &lt;em&gt;Windows 32-bit on Windows 64-bit&lt;/em&gt; so it actually contains 32-bit stuff.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In computing on Microsoft platforms, WoW64 (Windows 32-bit on Windows 64-bit) is a subsystem of the Windows operating system capable of running 32-bit applications on 64-bit Windows.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Why not keep 32-bit stuff in System32 and apply the redirection to 64-bit apps instead, and name the 64-bit folder something more intuitive like System64 so it won&apos;t be so confusing? Maybe Microsoft is in the forefront of implementing security by confusion.&lt;/p&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm&quot;&gt;The &apos;Sysnative&apos; folder in 64-bit Windows explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.thewindowsclub.com/difference-system32-and-syswow64-folders&quot;&gt;Difference between System32 and SysWOW64 folders in Windows 10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/WoW64&quot;&gt;WOW64&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>Where are the Strings in Windows Binaries</title><id>https://dzhy.dev/posts/2019-05-04-where-are-the-strings-in-windows-binaries</id><updated>2019-05-04T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2019-05-04-where-are-the-strings-in-windows-binaries" rel="alternate"/><published>2019-05-04T00:00:00+00:00</published><content type="html">&lt;h1&gt;Where are the Strings in Windows Binaries&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2019-05-04&quot;&gt;04 May 2019&lt;/time&gt;
&lt;h2 id=&quot;prelude&quot;&gt;Prelude&lt;/h2&gt;
&lt;p&gt;The Windows Binaries I&apos;m talking about here are the ones that comes default with Windows provided by Microsoft.&lt;/p&gt;
&lt;h2 id=&quot;searching-for-strings-in-the-binary&quot;&gt;Searching for Strings in the binary&lt;/h2&gt;
&lt;p&gt;I was analyzing a Windows binary &lt;code&gt;C:\Windows\System32\where.exe&lt;/code&gt; when I realized the help text of the binary cannot be found anywhere in the binary.&lt;/p&gt;
&lt;p&gt;After some futher investigation using &lt;code&gt;Process Monitor&lt;/code&gt; from  Windows Sysinternals I found out that it is reading from &lt;code&gt;C:\Windows\System32\en-US\where.exe.mui&lt;/code&gt; during it&apos;s execution.&lt;/p&gt;
&lt;h2 id=&quot;searching-for-strings-in-the-mui&quot;&gt;Searching for Strings in the MUI&lt;/h2&gt;
&lt;p&gt;I did some googling to find out more about the MUI file type and realized that it&apos;s how Windows enable support for different user interface languages.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Multilingual User Interface (MUI) enables the localization of user interfaces for globalized applications. MUI also supports the creation of resources for any number of user interface languages.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Further googling on how to open it says that it can be opened using 7zip, so I did and found the strings in &lt;code&gt;.rsrc\string.txt&lt;/code&gt; in the archieve.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;52	Type &amp;quot;WHERE /?&amp;quot; for usage help.\n
58	ERROR: Invalid directory specified.\n
60	ERROR: &amp;quot;$env:pattern&amp;quot; cannot be used with /R.\n
63	ERROR: Missing pattern in &amp;quot;$env:pattern&amp;quot;.\n
64	INFO: Could not find &amp;quot;%s&amp;quot;.\n
--------------------------snip--------------------------
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What&apos;s weird is when I ran linux&apos;s &lt;code&gt;strings&lt;/code&gt; on the MUI file which did not manage to find the strings in the MUI file, so I initially thought that the MUI file is compressed.&lt;/p&gt;
&lt;p&gt;I then ran &lt;code&gt;file&lt;/code&gt; on &lt;code&gt;where.exe.mui&lt;/code&gt; and it returned &lt;code&gt;PE32 executable (DLL) (GUI) Intel 80386, for MS Windows&lt;/code&gt;, I thought that&apos;s weird, so I tried opening the file in CFF Explorer and it worked! So a MUI file is actually a PE file.&lt;/p&gt;
&lt;p&gt;If we check the resource directories of &lt;code&gt;where.exe.mui&lt;/code&gt; using CFF Explorer we can see a resource directory called &lt;code&gt;String Tables&lt;/code&gt;. If we check the data within the Directory, we can find all the strings we previously seen using 7zip.&lt;/p&gt;
&lt;p&gt;The only thing that&apos;s weird was each character was followed by a null byte, which turns out to be because the strings are stored as unicode. Now it makes sense why linux&apos;s &lt;code&gt;strings&lt;/code&gt; did not find anything, it does not search for unicode strings. I tried again with the &lt;code&gt;strings&lt;/code&gt; tool from Windows Sysinternals and it managed to find the strings because it also searches for unicode strings.&lt;/p&gt;
&lt;p&gt;I also looked at &lt;code&gt;bash.exe.mui&lt;/code&gt; and realized that the strings can also be in the &lt;code&gt;MESSAGETABLE&lt;/code&gt; section of the resource directory, which have the ID of &lt;code&gt;0xb&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;All the resource type can be found from the &lt;a href=&quot;https://docs.microsoft.com/en-us/windows/desktop/menurc/resource-types&quot;&gt;Microsoft Documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;ending-notes&quot;&gt;Ending Notes&lt;/h2&gt;
&lt;p&gt;Most of the Windows binaries does this, but not all, if you want to extract all the strings used by a Windows binary you should combine finding strings in the binary and the MUI.&lt;/p&gt;
&lt;p&gt;The strings can be in &lt;code&gt;STRING&lt;/code&gt; (ID of &lt;code&gt;0x6&lt;/code&gt;) and &lt;code&gt;MESSAGETABLE&lt;/code&gt; (ID of &lt;code&gt;0xb&lt;/code&gt;) section of the resource directory of the MUI file.&lt;/p&gt;
&lt;p&gt;I have made a &lt;a href=&quot;https://github.com/PotatoDrug/MUI-Strings&quot;&gt;tool in rust&lt;/a&gt; to retrieve the strings from a MUI file.&lt;/p&gt;
</content></entry><entry><title>Preventing Email Spoofing with SPF, DKIM and DMARC</title><id>https://dzhy.dev/posts/2019-04-11-securing-email-domain</id><updated>2019-04-11T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2019-04-11-securing-email-domain" rel="alternate"/><published>2019-04-11T00:00:00+00:00</published><content type="html">&lt;h1&gt;Preventing Email Spoofing with SPF, DKIM and DMARC&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2019-04-11&quot;&gt;11 Apr 2019&lt;/time&gt;
&lt;p&gt;Preventing email spoofing is important to all domain owners, even if you are not using your domain for email services as it affects the reputation of your domain. In this post I will talk about how to prevent email spoofing with SPF, DKIM and DMARC.&lt;/p&gt;
&lt;h2 id=&quot;sender-policy-framework-spf&quot;&gt;Sender Policy Framework (SPF)&lt;/h2&gt;
&lt;p&gt;SPF allows the receiver to check that an email claiming to come from a specific domain comes from an IP address authorized by that domain&apos;s administrators. The list of authorized sending hosts and IP addresses for a domain is in the SPF record for the domain which is published in the DNS TXT records for that domain.&lt;/p&gt;
&lt;h3 id=&quot;how-it-works&quot;&gt;How it works&lt;/h3&gt;
&lt;p&gt;The receiver checks if the sender is valid by querying the domain in the message header field &lt;code&gt;Return-Path&lt;/code&gt; aka &lt;code&gt;MAIL FROM&lt;/code&gt; for SPF record and checking the sender&apos;s IP against that record.&lt;/p&gt;
&lt;h3 id=&quot;setup&quot;&gt;Setup&lt;/h3&gt;
&lt;p&gt;Place the SPF record at the root of your domain.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Directive&lt;/th&gt;&lt;th&gt;Effect&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;-all&lt;/td&gt;&lt;td&gt;non-matching emails will be rejected&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;~all&lt;/td&gt;&lt;td&gt;non-matching emails will be accepted but marked&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;+all&lt;/td&gt;&lt;td&gt;allows any ip to send email from your domain.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;This SPF record below will allow emails from &lt;code&gt;10.0.0.1&lt;/code&gt;, &lt;code&gt;2001:0db8:85a3:0000:0000:8a2e:0370:7334&lt;/code&gt; and all the allowed IPs from the spf record from &lt;code&gt;example.com&lt;/code&gt; and reject emails sent from all other IPs.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;v=spf1 ip4:10.0.0.1 ip6:2001:0db8:85a3:0000:0000:8a2e:0370:7334 include:example.com -all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For more options check out the &lt;a href=&quot;https://tools.ietf.org/html/rfc7208#section-4.6.1&quot;&gt;rfc&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;things-to-note&quot;&gt;Things to Note&lt;/h4&gt;
&lt;p&gt;SPF records cannot include more than ten dns queries.&lt;/p&gt;
&lt;p&gt;A single TXT record cannot be more than 255 characters, but we can &lt;a href=&quot;https://kb.isc.org/docs/aa-00356&quot;&gt;concate TXT records&lt;/a&gt; to form a SPF record of a longer length.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The DNS overhead for a reply that contains a single TXT record with two strings is about 34 bytes, plus the length of the hostname that’s being queries (e.g. &quot;spf.example.com&quot; is 15 bytes). So to keep within the 512 byte limit you need to break your SPF into chunks of no more than 478 minus the length of the hostname.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Another option is &lt;a href=&quot;https://help.blacknight.com/hc/en-us/articles/212512389-Creating-large-SPF-records-with-many-entries&quot;&gt;SPF record chaining&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can check your spf record using this &lt;a href=&quot;http://spf.myisp.ch/&quot;&gt;SPF Checker&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;macros&quot;&gt;Macros&lt;/h4&gt;
&lt;p&gt;It is possible to create more complex SPF records using &lt;a href=&quot;https://tools.ietf.org/html/rfc7208#section-7&quot;&gt;marcros&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;problem&quot;&gt;Problem&lt;/h3&gt;
&lt;p&gt;SPF does not validate the &lt;code&gt;From&lt;/code&gt; header which is shown in most clients as the actual sender of the message, but uses the &lt;code&gt;Return-Path&lt;/code&gt; to determine the sending domain.&lt;/p&gt;
&lt;p&gt;For example, a email was sent with the &lt;code&gt;Return-Path&lt;/code&gt; of &lt;code&gt;example.com&lt;/code&gt; and a &lt;code&gt;From&lt;/code&gt; field of &lt;code&gt;david@dzhy.dev&lt;/code&gt; assuming &lt;code&gt;dzhy.dev&lt;/code&gt; have SPF setup to not allow any IPs, if &lt;code&gt;example.com&lt;/code&gt; has a SPF record that allows my IP, the SPF check will still pass, because it does not check the &lt;code&gt;From&lt;/code&gt; field, instead it checks the &lt;code&gt;Return-Path&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;domain-keys-identified-mail-dkim&quot;&gt;Domain Keys Identified Mail (DKIM)&lt;/h2&gt;
&lt;p&gt;DKIM checks that an email was indeed send and authorized by the owner of that domain using digital signatures. This DKIM signature is a header that is added to the message and is secured with encryption.&lt;/p&gt;
&lt;h3 id=&quot;how-it-works-1&quot;&gt;How it works&lt;/h3&gt;
&lt;p&gt;The DKIM signature is generated by the MTA (Mail Transfer Agent). It creates a hash of the email. This hash value is encrypted using the private key and attached to the email as the DKIM signature in the header.&lt;/p&gt;
&lt;p&gt;After receiving the email, the receiver verifies the DKIM signature using the public key in the TXT record of the domain specified in the signature, by decrypting the DKIM signature and comparing the decrypted hash value with the hash value of the email it received. If these two hashes are the same the MTA knows that the email has not been altered. This gives the user confirmation that the email was actually sent from the listed domain.&lt;/p&gt;
&lt;h3 id=&quot;setup-1&quot;&gt;Setup&lt;/h3&gt;
&lt;p&gt;Refer to your email service provider&apos;s documentation. Typically all you have to do is to add a DNS TXT record to your domain.&lt;/p&gt;
&lt;h3 id=&quot;finding-dkim-selector&quot;&gt;Finding DKIM selector&lt;/h3&gt;
&lt;p&gt;The DKIM record is at &lt;code&gt;selector._domainkey.dzhy.dev&lt;/code&gt;, the selector can be any string, we can only find out the selector of a domain if we have the DKIM-Signature, of a email sent by that domain.&lt;/p&gt;
&lt;p&gt;In the signature, the &lt;code&gt;s&lt;/code&gt; field is the selector, so in this case &lt;code&gt;s=zoho&lt;/code&gt; means the selector is &lt;code&gt;zoho&lt;/code&gt; and the DKIM public key will be at &lt;code&gt;zoho._domainkey.dzhy.dev&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1554622568; 
s=zoho; d=dzhy.dev; i=david@dzhy.dev; h=Date:From:To:Message-Id:Subject:MIME-
Version:Content-Type; l=721; bh=YLjE/ckf0hWWS6SSYjvfMS06DZjBcD0C0ignKAs7TUs=;
b=HT4wf4u2t5PiApv9zgAWiyTbC8dwoE5qV7vZbGO+/1t+XUPOOlwGV3tfM/0/GqYl
oVtsVDqykG1B2iKGlXIDJGSU6qzsuzxCmHlv3YaddIR7WWLteCvMM4lOg3ZzwSHtiNx 
dVwG2fJ/iSgzB1AFrSQJa/C21ZewOKL0J8piwKYg=
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;problem-1&quot;&gt;Problem&lt;/h3&gt;
&lt;p&gt;The dkim signature can be valid and have no relation to the &lt;code&gt;From&lt;/code&gt; header.&lt;/p&gt;
&lt;p&gt;For example, I can have the following DKIM signature&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1554622568; 
s=zoho; d=dzhy.dev; i=david@dzhy.dev; h=Date:From:To:Message-Id:Subject:MIME-
Version:Content-Type; l=721; bh=YLjE/ckf0hWWS6SSYjvfMS06DZjBcD0C0ignKAs7TUs=;
b=HT4wf4u2t5PiApv9zgAWiyTbC8dwoE5qV7vZbGO+/1t+XUPOOlwGV3tfM/0/GqYl
oVtsVDqykG1B2iKGlXIDJGSU6qzsuzxCmHlv3YaddIR7WWLteCvMM4lOg3ZzwSHtiNx 
dVwG2fJ/iSgzB1AFrSQJa/C21ZewOKL0J8piwKYg=
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;which is for the domain &lt;code&gt;dzhy.dev&lt;/code&gt; but my &lt;code&gt;From&lt;/code&gt; field is &lt;code&gt;david@example.com&lt;/code&gt;, this will be valid because the signature is valid for the given domain &lt;code&gt;dzhy.dev&lt;/code&gt;, it does not check the signature using the domain in the &lt;code&gt;From&lt;/code&gt; field.&lt;/p&gt;
&lt;h2 id=&quot;domain-based-message-authentication-reporting-conformance-dmarc&quot;&gt;Domain-based Message Authentication, Reporting &amp;amp; Conformance (DMARC)&lt;/h2&gt;
&lt;p&gt;DMARC builds on the widely deployed SPF and DKIM protocols, to improve and monitor protection of the domain from fraudulent email. It is meant to fix the issues of SPF and DKIM. Implementing SPF and DKIM by themselves does not prevent spoofing, but combined with DMARC they will work great.&lt;/p&gt;
&lt;p&gt;DMARC requires authentication alignment with the domain used in the header &lt;code&gt;From&lt;/code&gt;, for both SPF and DKIM. Meaning the domain in DKIM must share the same &lt;a href=&quot;https://tools.ietf.org/html/rfc7489#section-3.2&quot;&gt;organizational domain&lt;/a&gt; as the &lt;code&gt;From&lt;/code&gt; header or be the exact same depending on the configuration, the domain for SPF the &lt;code&gt;Return-Path&lt;/code&gt; and the header &lt;code&gt;From&lt;/code&gt; should share an &lt;a href=&quot;https://tools.ietf.org/html/rfc7489#section-3.2&quot;&gt;organizational domain&lt;/a&gt; or be the exact same depending on the configuration.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works-2&quot;&gt;How it works&lt;/h2&gt;
&lt;p&gt;The receiver extracts the domain in the &lt;code&gt;From&lt;/code&gt; header, and queries for a DMARC policy record of that domain. If it exists, perform DKIM and SPF checks, then perform Identifier Alignment checks. Emails that fail the DMARC mechanism check are disposed of in accordance with the discovered DMARC policy of the Domain Owner.&lt;/p&gt;
&lt;h2 id=&quot;setup-2&quot;&gt;Setup&lt;/h2&gt;
&lt;p&gt;Domain Owner DMARC preferences are stored as DNS TXT records in subdomains named &lt;code&gt;_dmarc&lt;/code&gt;.  For example, the Domain Owner of &lt;code&gt;example.com&lt;/code&gt; would post DMARC preferences in a TXT record at &lt;code&gt;_dmarc.example.com&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The table below explains each tag of the sample DMARC policy.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tag&lt;/th&gt;&lt;th&gt;Effect&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;v=DMARC1&lt;/td&gt;&lt;td&gt;Specify DMARC version&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;p=reject&lt;/td&gt;&lt;td&gt;Reject any mail that fails the DMARC check&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rua=mailto:dmarc@dzhy.dev&lt;/td&gt;&lt;td&gt;Send aggregate reports to &lt;code&gt;dmarc@dzhy.dev&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;adkim=s&lt;/td&gt;&lt;td&gt;DKIM Identifier Alignment strict mode&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;adkim=s&lt;/td&gt;&lt;td&gt;SPF Identifier Alignment strict mode&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ruf=mailto:dmarc@dzhy.dev&lt;/td&gt;&lt;td&gt;Send failure reports to &lt;code&gt;dmarc@dzhy.dev&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fo=1&lt;/td&gt;&lt;td&gt;Generate a DMARC failure report if any checks failed&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;By default daily aggregate reports will be sent if you set a &lt;code&gt;rua&lt;/code&gt; address.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sample DMARC policy.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;v=DMARC1; p=reject; rua=mailto:dmarc@dzhy.dev; adkim=s ; aspf=s ; ruf=mailto:dmarc@dzhy.dev ; fo=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For other options refer to &lt;a href=&quot;https://tools.ietf.org/html/rfc7489#section-6.3&quot;&gt;rfc7489 Section 6.3&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tools.ietf.org/html/rfc7208&quot;&gt;SPF RFC 7208&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.dkim.org/specs/draft-ietf-dkim-deployment-11.html&quot;&gt;DKIM Development, Deployment and Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dmarc.org/resources/specification/&quot;&gt;DMARC Specification&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>Firefly III Setup with Docker and HTTPS</title><id>https://dzhy.dev/posts/2019-04-06-firefly-iii-setup-with-docker-and-https</id><updated>2019-04-06T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2019-04-06-firefly-iii-setup-with-docker-and-https" rel="alternate"/><published>2019-04-06T00:00:00+00:00</published><content type="html">&lt;h1&gt;Firefly III Setup with Docker and HTTPS&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2019-04-06&quot;&gt;06 Apr 2019&lt;/time&gt;
&lt;p&gt;In this tutorial we will setup &lt;a href=&quot;https://firefly-iii.org/&quot;&gt;Firefly III&lt;/a&gt; using docker and setup a reverse proxy to enable https, as &lt;em&gt;Firefly III&lt;/em&gt; itself does not support https. For the purpose of this tutorial we will be using &lt;code&gt;firefly.example.com&lt;/code&gt; as the domain.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: This tutorial assumes you have already setup a mysql/postgres database.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;docker&quot;&gt;Docker&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;If you have not yet installed docker refere to &lt;a href=&quot;https://docs.docker.com/install/&quot;&gt;docker install documentation&lt;/a&gt; to install it first.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;First we create persistent volumes to store uploaded files and exported data.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;docker&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; volume create firefly_iii_export&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;docker&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; volume create firefly_iii_upload&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To ensure the site works behind our reverse proxy and all the links on the site is using https we have to set the following environment variables.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synvariable synother synreadwrite synassignment synshell&quot;&gt;APP_URL&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synassignment synshell&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;synstring synunquoted synshell&quot;&gt;https://firefly.example.com&lt;/span&gt;
&lt;span class=&quot;synvariable synother synreadwrite synassignment synshell&quot;&gt;TRUSTED_PROXIES&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synassignment synshell&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;synstring synunquoted synshell&quot;&gt;&lt;span class=&quot;synkeyword synoperator synregexp synquantifier synshell&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synregexp synquantifier synshell&quot;&gt;*&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The app key is any 32 character alphanumeric string. The database by default is assumed to be MySQL, if you are using a Postgres database you have to set an extra environment vairable &lt;code&gt;DB_CONNECTION=pgsql&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The following command will run the firefly-iii container and map it to port &lt;code&gt;4040&lt;/code&gt; on the host.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;docker&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; run&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;d&lt;/span&gt; &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;v&lt;/span&gt; firefly_iii_export:/var/www/firefly-iii/storage/export &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;v&lt;/span&gt; firefly_iii_upload:/var/www/firefly-iii/storage/upload &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;p&lt;/span&gt; 127.0.0.1:4040:80 &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; FF_APP_ENV=local &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; FF_APP_KEY=12345678901234567890123456789012 &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; FF_DB_HOST=CHANGEME &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; FF_DB_PORT=CHANGEME &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; FF_DB_NAME=CHANGEME &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; FF_DB_USER=CHANGEME &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; FF_DB_PASSWORD=CHANGEME &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; APP_URL=https://firefly.example.com &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;-&lt;/span&gt;e&lt;/span&gt; TRUSTED_PROXIES=&lt;span class=&quot;synkeyword synoperator synregexp synquantifier synshell&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;synkeyword synoperator synregexp synquantifier synshell&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;--&lt;/span&gt;name&lt;/span&gt; firefly-iii-c1 &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;jc5x/firefly-iii:latest&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;enable-recurring-transactions&quot;&gt;Enable Recurring Transactions&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;You can ignore this if you are not planning on using recurring transactions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Drop into shell on the container&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;docker&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; exec&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;it&lt;/span&gt; firefly-iii-c1 /bin/bash&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Install cron in docker container&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;apt&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; update&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;apt&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; install cron&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Run &lt;code&gt;crontab -e&lt;/code&gt; to edit cronjobs, then add the following cron job to enable recurring transactions.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;0 0 * * * /usr/local/bin/php /var/www/firefly-iii/artisan firefly:cron
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These changes will persist even if you restart the container, however if you start another container from the image &lt;code&gt;jc5x/firefly-iii:latest&lt;/code&gt; you have to do these steps again.&lt;/p&gt;
&lt;h2 id=&quot;setup-nginx&quot;&gt;Setup Nginx&lt;/h2&gt;
&lt;p&gt;If you are using cloudflare as your dns provider, you can refer to [this post]({% post_url 2019-04-03-Certbot-Cloudflare-DNS-Plugin %}) on getting TLS certificates from &lt;em&gt;Let&apos;s Encrypt&lt;/em&gt; using the cloudflare dns plugin.&lt;/p&gt;
&lt;p&gt;This is a sample site configuration for nginx. Change &lt;code&gt;firefly.example.com&lt;/code&gt; to your domain. You should also change the &lt;code&gt;proxy_pass&lt;/code&gt; parameter on line 17 if you mapped the host port of &lt;em&gt;Firefly III&lt;/em&gt; to a port other than &lt;code&gt;4040&lt;/code&gt;, or if the docker container is running on another host.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name firefly.example.com;

    # SSL
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    # logging
    access_log /var/log/nginx/firefly.example.com.access.log;
    error_log /var/log/nginx/firefly.example.com.error.log warn;

    # reverse proxy
    location / {
        proxy_pass http://127.0.0.1:4040;
        proxy_http_version      1.1;
        proxy_cache_bypass      $http_upgrade;
        proxy_set_header Upgrade                $http_upgrade;
        proxy_set_header Connection             &amp;quot;upgrade&amp;quot;;
        proxy_set_header Host                   $host;
        proxy_set_header X-Real-IP              $remote_addr;
        proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto      $scheme;
        proxy_set_header X-Forwarded-Host       $host;
        proxy_set_header X-Forwarded-Port       $server_port;
    }
    
    # security headers
    add_header X-Frame-Options &amp;quot;SAMEORIGIN&amp;quot; always;
    add_header X-XSS-Protection &amp;quot;1; mode=block&amp;quot; always;
    add_header X-Content-Type-Options &amp;quot;nosniff&amp;quot; always;
    add_header Referrer-Policy &amp;quot;no-referrer-when-downgrade&amp;quot; always;
    add_header Content-Security-Policy &amp;quot;default-src * data: &apos;unsafe-eval&apos; &apos;unsafe-inline&apos;&amp;quot; always;
    add_header Strict-Transport-Security &amp;quot;max-age=31536000; includeSubDomains; preload&amp;quot; always;

    # . files
    location ~ /\.(?!well-known) {
        deny all;
    }

    # gzip
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss applica
    tion/atom+xml image/svg+xml;
}

# subdomains redirect
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name *.firefly.example.com;

    # SSL
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    return 301 https://firefly.example.com$request_uri;
}

# HTTP redirect
server {
    listen 80;
    listen [::]:80;
    server_name .firefly.example.com;

    location / {
        return 301 https://firefly.example.com$request_uri;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.firefly-iii.org/en/latest/installation/docker.html&quot;&gt;Installation Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.firefly-iii.org/en/latest/installation/cronjob.html#cronjobs&quot;&gt;Cronjob Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry><entry><title>Certbot - Cloudflare DNS Plugin</title><id>https://dzhy.dev/posts/2019-04-03-certbot-cloudflare-dns-plugin</id><updated>2019-04-02T00:00:00+00:00</updated><link href="https://dzhy.dev/posts/2019-04-03-certbot-cloudflare-dns-plugin" rel="alternate"/><published>2019-04-02T00:00:00+00:00</published><content type="html">&lt;h1&gt;Certbot - Cloudflare DNS Plugin&lt;/h1&gt;
&lt;time class=&quot;post-date&quot; datetime=&quot;2019-04-02&quot;&gt;02 Apr 2019&lt;/time&gt;
&lt;p&gt;In this tutorial we will get a wildcard certificate from letsencrypt using the cloudflare dns plugin. For the purpose of this tutorial we will be using &lt;code&gt;example.com&lt;/code&gt; as the domain.&lt;/p&gt;
&lt;h3 id=&quot;install-cloudflare-dns-plugin&quot;&gt;Install Cloudflare DNS Plugin&lt;/h3&gt;
&lt;p&gt;This tutorial assumes you have already installed certbot. If you have not, you can follow the instructions from &lt;a href=&quot;https://certbot.eff.org/&quot;&gt;certbot-eff&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;sudo&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; apt update&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;sudo&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; apt install python3-certbot-dns-cloudflare&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;y&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;api-credentials&quot;&gt;API Credentials&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;mkdir&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;p&lt;/span&gt; /root/secrets/certbot&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Retrieve your api key from cloudflare.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Login to the Cloudflare account.&lt;/li&gt;
&lt;li&gt;Go to My Profile.&lt;/li&gt;
&lt;li&gt;Scroll down to API Keys and locate Global API Key.&lt;/li&gt;
&lt;li&gt;Click API Key to see your API identifier.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Create the file below with your cloudflare information. We will save the file at &lt;code&gt;/root/secrets/certbot/cloudflare.ini&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Cloudflare API credentials used by Certbot
dns_cloudflare_email = cloudflare@example.com
dns_cloudflare_api_key = 0123456789abcdef0123456789abcdef01234567
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Secure the folder and file.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;find&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; /root/secrets&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;type&lt;/span&gt; d&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;exec&lt;/span&gt; chmod 700 &lt;span class=&quot;synmeta syngroup synexpansion synbrace synshell&quot;&gt;&lt;span class=&quot;synpunctuation synsection synexpansion synbrace synbegin synshell&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synexpansion synbrace synend synshell&quot;&gt;}&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synconstant syncharacter synescape synshell&quot;&gt;\;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;find&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; /root/secrets&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;type&lt;/span&gt; f&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;exec&lt;/span&gt; chmod 600 &lt;span class=&quot;synmeta syngroup synexpansion synbrace synshell&quot;&gt;&lt;span class=&quot;synpunctuation synsection synexpansion synbrace synbegin synshell&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;synpunctuation synsection synexpansion synbrace synend synshell&quot;&gt;}&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;synconstant syncharacter synescape synshell&quot;&gt;\;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;requesting-for-certificate&quot;&gt;Requesting for Certificate&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;--dns-cloudflare-propagation-seconds&lt;/code&gt; option defines the number of seconds to wait before doing the validation checks, you can change it accordingly.&lt;/p&gt;
&lt;p&gt;It is important that we specify the server to be the ACME v2 server as the v1 server does not support wildcard certificates.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;certbot&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; certonly &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;  --&lt;/span&gt;preferred-challenges&lt;/span&gt; dns &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;  --&lt;/span&gt;email&lt;/span&gt; admin@example.com&lt;/span&gt;
  &lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;--dns-cloudflare-credentials&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; /root/secrets/certbot/cloudflare.ini &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;  --&lt;/span&gt;dns-cloudflare-propagation-seconds&lt;/span&gt; 60 &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;  -&lt;/span&gt;d&lt;/span&gt; &lt;span class=&quot;synstring synquoted syndouble synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synstring synbegin synshell&quot;&gt;&amp;quot;&lt;/span&gt;*.example.com&lt;span class=&quot;synpunctuation syndefinition synstring synend synshell&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;d&lt;/span&gt; example.com &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;  --&lt;/span&gt;server&lt;/span&gt; https://acme-v02.api.letsencrypt.org/directory &lt;span class=&quot;synpunctuation synseparator syncontinuation synline synshell&quot;&gt;\
&lt;/span&gt;&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt;  --&lt;/span&gt;agree-tos&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We should now have our cert at &lt;code&gt;/etc/letsencrypt/live/example.com/&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;synsource synshell synbash&quot;&gt;&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;root@server:&lt;span class=&quot;synmeta syngroup synexpansion syntilde&quot;&gt;&lt;span class=&quot;synvariable synlanguage syntilde synshell&quot;&gt;~&lt;/span&gt;&lt;/span&gt;#&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; ls&lt;span class=&quot;synvariable synparameter synoption synshell&quot;&gt;&lt;span class=&quot;synpunctuation syndefinition synparameter synshell&quot;&gt; -&lt;/span&gt;la&lt;/span&gt; /etc/letsencrypt/live/example.com&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;total&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; 12&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;drwxr-xr-x&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; 2 root root 4096 Apr  3 10:44 .&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;drwx------&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; 3 root root 4096 Apr  3 10:44 ..&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;lrwxrwxrwx&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; 1 root root   34 Apr  3 10:44 cert.pem -&lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;gt;&lt;/span&gt; ../../archive/example.com/cert1.pem&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;lrwxrwxrwx&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; 1 root root   35 Apr  3 10:44 chain.pem -&lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;gt;&lt;/span&gt; ../../archive/example.com/chain1.pem&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;lrwxrwxrwx&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; 1 root root   39 Apr  3 10:44 fullchain.pem -&lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;gt;&lt;/span&gt; ../../archive/example.com/fullchain1.pem&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;lrwxrwxrwx&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; 1 root root   37 Apr  3 10:44 privkey.pem -&lt;span class=&quot;synkeyword synoperator synassignment synredirection synshell&quot;&gt;&amp;gt;&lt;/span&gt; ../../archive/example.com/privkey1.pem&lt;/span&gt;
&lt;span class=&quot;synmeta synfunction-call synshell&quot;&gt;&lt;span class=&quot;synvariable synfunction synshell&quot;&gt;-rw-r--r--&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;synmeta synfunction-call synarguments synshell&quot;&gt; 1 root root  692 Apr  3 10:44 README&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://certbot.eff.org/&quot;&gt;Certbot-eff&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://certbot-dns-cloudflare.readthedocs.io/en/stable/&quot;&gt;certbot-dns-cloudflare&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.cloudflare.com/hc/en-us/articles/200167836-Where-do-I-find-my-Cloudflare-API-key-&quot;&gt;Cloudflare API Key&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content></entry></feed>