<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>TEA on PseudorandomDog&#39;s Blog</title>
    <link>https://binarydog.top/tags/tea/</link>
    <description>Recent content in TEA on PseudorandomDog&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Thu, 07 Nov 2024 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://binarydog.top/tags/tea/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>DASCTF2024年10月赛留档</title>
      <link>https://binarydog.top/posts/ctf/dasctf2024%E5%B9%B410%E6%9C%88%E8%B5%9B%E7%95%99%E6%A1%A3/</link>
      <pubDate>Thu, 07 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://binarydog.top/posts/ctf/dasctf2024%E5%B9%B410%E6%9C%88%E8%B5%9B%E7%95%99%E6%A1%A3/</guid>
      <description>&lt;h2 class=&#34;heading&#34; id=&#34;ezelf&#34;&gt;&#xA;  ezelf&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#ezelf&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Drink the tea and go to find the fish！！&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ollvm 平坦化过的控制流&lt;/p&gt;&#xA;&lt;p&gt;使用 &lt;a href=&#34;https://github.com/cq674350529/deflat&#34;&gt;deflat&lt;/a&gt; 去平坦化&lt;/p&gt;&#xA;&lt;p&gt;首先要过一个魔改过的 xxtea，这里的明文是密钥 &lt;code&gt;DASCTF{dr1nk_te@_4nd_cont1nu3..}&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;然后过一个魔改过得 blowfish，粗略看了下用的似乎是 rc4 的 sbox，但无所谓，sbox 和 pbox 都调试 dump 出来&lt;/p&gt;&#xA;&lt;p&gt;算法也魔改过，照着抄一个解密&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;pwn&lt;/span&gt; &lt;span style=&#34;color:#c678dd&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;u32&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;p32&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;Crypto.Cipher&lt;/span&gt; &lt;span style=&#34;color:#c678dd&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;Blowfish&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;xxtea_ct&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xb4\xb5&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;ZB&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xa6&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;y&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\x0b\xac\x0e&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;#x&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xde\xe1&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xc6\x1d\xbb&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\x8c\xe2\x94\xfe\x14\xd9\xaa\x03\xe3\x8a\x14\x92\x1c&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;d&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;#xxtea_key=[1234,2341,3412,4123]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;xxtea_key&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;11&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;45&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;14&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;777&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#61afef;font-weight:bold&#34;&gt;shift&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;z&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;e&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;return&lt;/span&gt; ((((&lt;span style=&#34;color:#e06c75&#34;&gt;z&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;)) &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; ((&lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;z&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;))) &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; ((&lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[(&lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;e&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;z&lt;/span&gt;)))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#61afef;font-weight:bold&#34;&gt;decrypt&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;delta&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0x11451400&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;len&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;rounds&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;rounds&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;delta&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0xFFFFFFFF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;rounds&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;e&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e06c75&#34;&gt;z&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;shift&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;z&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;e&lt;/span&gt;)) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0xFFFFFFFF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;z&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;shift&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;z&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;p&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;e&lt;/span&gt;)) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0xFFFFFFFF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;delta&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0xFFFFFFFF&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;#xxtea_vec = [u32(xxtea_ct[i:i+4]) for i in range(0,32,4)]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;#decrypt(xxtea_vec, xxtea_key)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;#blowfish_key = b&amp;#39;&amp;#39;.join(p32(xxtea_vec[i]) for i in range(8))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;blowfish_key&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#98c379&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#39;DASCTF{dr1nk_te@_4nd_cont1nu3..}&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;blowfish_ct&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#98c379&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#39;p&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xb7\xf0\x8d\x8e\xb2\x1e&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;K&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\x1c\\\xc6&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;s&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xfd&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;H&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xde&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;S4&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xdf&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\x98&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;#&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\x91&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\xd8\x82\x11\&amp;#39;\x90\xe7&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;qB&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;\x1f&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;pbox&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0x00000125&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6a8b&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6b5f&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x000000e0&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0x000001a4&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6b08&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6b6f&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x000001c9&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0x00000044&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6b78&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6b15&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x000000af&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0x000000be&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6a3b&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6ba7&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x00000026&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0x0000009a&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;0x243f6ba8&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;[&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;with&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;open&lt;/span&gt;(&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#34;ezelf.dump&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#98c379&#34;&gt;&amp;#34;rb&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#c678dd&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;fp&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;buf&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;fp&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;read&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;256&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;]&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;append&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;u32&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;buf&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;:&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;]))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;append&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;u32&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;buf&lt;/span&gt;[(&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;256&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;:(&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;256&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;]))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;]&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;append&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;u32&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;buf&lt;/span&gt;[(&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;512&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;:(&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;512&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;]))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;]&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;append&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;u32&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;buf&lt;/span&gt;[(&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;768&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;:(&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;768&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;]))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#61afef;font-weight:bold&#34;&gt;swap&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt;,&lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;y&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;x&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#61afef;font-weight:bold&#34;&gt;fes&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;24&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0xff&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0xff&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;c&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;8&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0xff&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;d&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;v&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0xff&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;sa&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;][&lt;span style=&#34;color:#e06c75&#34;&gt;a&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;sb&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;][&lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;sc&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;][&lt;span style=&#34;color:#e06c75&#34;&gt;c&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;sd&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;sbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;][&lt;span style=&#34;color:#e06c75&#34;&gt;d&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;sa&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;sb&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0xffff_ffff&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;sc&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;sd&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0xffff_ffff&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#61afef;font-weight:bold&#34;&gt;bfdec&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;pbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;17&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;17&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;fes&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;swap&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;swap&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;pbox&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;flag&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#98c379&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;u32&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;blowfish_ct&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;8&lt;/span&gt;:&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;u32&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;blowfish_ct&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;:&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;8&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;bfdec&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;flag&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;p32&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;L&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;flag&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;p32&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;R&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e5c07b&#34;&gt;print&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;flag&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;# DASCTF{Y0u_fin@l1y_f1nd_@nswer!}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#34;heading&#34; id=&#34;ezre&#34;&gt;&#xA;  EZRE&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#ezre&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Themida 保护的 exe&lt;/p&gt;</description>
    </item>
    <item>
      <title>DASCTF2023年7月赛留档</title>
      <link>https://binarydog.top/posts/ctf/dasctf2023%E5%B9%B47%E6%9C%88%E8%B5%9B%E7%95%99%E6%A1%A3/</link>
      <pubDate>Mon, 31 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://binarydog.top/posts/ctf/dasctf2023%E5%B9%B47%E6%9C%88%E8%B5%9B%E7%95%99%E6%A1%A3/</guid>
      <description>&lt;h2 class=&#34;heading&#34; id=&#34;controlflow&#34;&gt;&#xA;  controlflow&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#controlflow&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;这个程序的控制流好像有点奇怪&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以通过识别 push ebp 来确定真实的函数的位置&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure class=&#34;&#34;&gt;&#xA;&#xA;    &lt;div class=&#34;img-container&#34; &gt;&#xA;        &lt;img loading=&#34;lazy&#34; alt=&#34;&#34; src=&#34;https://binarydog.top/images/image-1761221923016.webp&#34; &gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &#xA;&lt;/figure&gt;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;设置函数起始处跳过这些插入的代码块并勾选 BP-Based Frame 可以成功 F5&lt;/p&gt;&#xA;&lt;p&gt;每个小函数上下断点可以找到执行的顺序如下&lt;/p&gt;&#xA;&lt;p&gt;main -&amp;gt; func3 -&amp;gt; func5 -&amp;gt; func6 -&amp;gt; func2b -&amp;gt; func1 -&amp;gt; func4&lt;/p&gt;&#xA;&lt;p&gt;main 函数中最后一段还有一部分加密代码&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;main: &lt;code&gt;a[i]^=0x401&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;func3: &lt;code&gt;a[i]+=i**2&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;func5: &lt;code&gt;a[j]^=j*(j+1) for j in range(10,30)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;func6: &lt;code&gt;a[i]-=i&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;func2b: &lt;code&gt;a[i]*=3&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;func4: &lt;code&gt;swap(a[k+1],a[k]) for k in range(10,30,2)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;解密并不难&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#d19a66&#34;&gt;3279&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3264&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3324&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3288&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3363&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3345&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3528&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3453&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3498&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3627&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3708&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#d19a66&#34;&gt;3675&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3753&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3786&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3930&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;3930&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4017&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4173&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4245&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4476&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4989&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4851&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#d19a66&#34;&gt;5166&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;5148&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4659&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4743&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4596&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;5976&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;5217&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;4650&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;6018&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;6135&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;6417&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#d19a66&#34;&gt;6477&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;6672&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;6891&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;7056&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;7398&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;7650&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;7890&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;# func4&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;30&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;# func2b&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;40&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;assert&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;//=&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;# func6&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;40&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;+=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;# func5&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;20&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;10&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;^=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;# func3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;40&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;-=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;# main&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;40&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;^=&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0x401&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;flag&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#98c379&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;join&lt;/span&gt;(&lt;span style=&#34;color:#e5c07b&#34;&gt;chr&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;) &lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e5c07b&#34;&gt;print&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;flag&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;#DASCTF{TWpnemRuSTRkVzVsWVhOMmJqZzNOREoy}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;感觉这题其实是可以 angr 一把梭的，没试&lt;/p&gt;</description>
    </item>
    <item>
      <title>AmateursCTF2023 RE Writeup</title>
      <link>https://binarydog.top/posts/ctf/amateursctf2023-re-writeup/</link>
      <pubDate>Fri, 21 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://binarydog.top/posts/ctf/amateursctf2023-re-writeup/</guid>
      <description>&lt;p&gt;大部分比较水，有几题有点价值，所以贴一下&lt;/p&gt;&#xA;&lt;h2 class=&#34;heading&#34; id=&#34;volcano&#34;&gt;&#xA;  volcano&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#volcano&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Inspired by recent &amp;#34;traumatic&amp;#34; events.&#xA;nc amt.rs 31010&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;过关要求输入 b, v, p 使得：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;b % 22890 == 18476&lt;/li&gt;&#xA;&lt;li&gt;17 &amp;lt;= binary_ones(v) &amp;lt;= 26&lt;/li&gt;&#xA;&lt;li&gt;p % 2 == 1&lt;/li&gt;&#xA;&lt;li&gt;digit_len(b) == digit_len(v)&lt;/li&gt;&#xA;&lt;li&gt;digit_sum(b) == digit_sum(v)&lt;/li&gt;&#xA;&lt;li&gt;4919^b % p == 4919^v % p&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;建立 z3 方程组并爆破条件 2，取条件 4 的十进制长度为 10&lt;/p&gt;&#xA;&lt;p&gt;这个模板也可以用来排除 z3 的多解&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#61afef;font-weight:bold&#34;&gt;fn&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;vv&lt;/span&gt;]&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;as_long&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;cnt&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;=&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;n&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;cnt&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+=&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e5c07b&#34;&gt;print&lt;/span&gt;(&lt;span style=&#34;color:#98c379&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#34;Tried &lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;vv&lt;/span&gt;]&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;as_long&lt;/span&gt;()&lt;span style=&#34;color:#98c379&#34;&gt;=}&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;, &lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;cnt&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;=}&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;cnt&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;and&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;cnt&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;lt;=&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;26&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#61afef;font-weight:bold&#34;&gt;z3gen&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;conds&lt;/span&gt;,&lt;span style=&#34;color:#e06c75&#34;&gt;fn&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;z3&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;Solver&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;add&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;conds&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;result&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;check&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;result&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;z3&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;sat&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;model&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#c678dd&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;fn&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt;) &lt;span style=&#34;color:#56b6c2&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;True&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#c678dd&#34;&gt;yield&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#7f848e&#34;&gt;# exclude the previous result by &amp;#39;AND&amp;#39; a &amp;#39;NOT&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#7f848e&#34;&gt;# &amp;#39;NOT AND&amp;#39; is implemented by &amp;#39;OR NEQ&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;extra&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;var&lt;/span&gt;()&lt;span style=&#34;color:#56b6c2&#34;&gt;!=&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;var&lt;/span&gt;] &lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;m&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;add&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;z3&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;Or&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;extra&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;result&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;check&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;求出一组解 (b, v) = (1080403586, 9422911007)&lt;/p&gt;</description>
    </item>
    <item>
      <title>国赛2022年初赛</title>
      <link>https://binarydog.top/posts/ctf/%E5%9B%BD%E8%B5%9B2022%E5%B9%B4%E5%88%9D%E8%B5%9B/</link>
      <pubDate>Sun, 05 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://binarydog.top/posts/ctf/%E5%9B%BD%E8%B5%9B2022%E5%B9%B4%E5%88%9D%E8%B5%9B/</guid>
      <description>&lt;h2 class=&#34;heading&#34; id=&#34;baby_tree&#34;&gt;&#xA;  baby_tree&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#baby_tree&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;swift 语言的抽象语法树&lt;/p&gt;&#xA;&lt;p&gt;AST 的主体是一个 check 函数&lt;/p&gt;&#xA;&lt;p&gt;写一个语法树到源码的程序太浪费时间，为了减少逆向的难度，可以分层折叠语法树单元，尽量以语句为单位&lt;/p&gt;&#xA;&lt;p&gt;归纳出源码&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#61afef;font-weight:bold&#34;&gt;check&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;r0&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r1&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r2&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r3&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#e5c07b&#34;&gt;len&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;)&lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;r0&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r1&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r2&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r3&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;r2&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; ((&lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;r0&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;)) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0xff&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;r3&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; ((&lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;r1&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;)) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0xff&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;r0&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;r1&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#c678dd&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;b&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;==&lt;/span&gt; [&lt;span style=&#34;color:#d19a66&#34;&gt;88&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;35&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;88&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;225&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;201&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;57&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;94&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#d19a66&#34;&gt;77&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;56&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;75&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;168&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;72&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;218&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;64&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;91&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;101&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;32&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;207&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;73&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;130&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;74&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;128&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#d19a66&#34;&gt;76&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;201&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;248&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;41&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;205&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;103&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;84&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#d19a66&#34;&gt;91&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;99&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;79&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;202&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;22&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;131&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;63&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;255&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;20&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;assert&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;check&lt;/span&gt;(&lt;span style=&#34;color:#e5c07b&#34;&gt;input&lt;/span&gt;(), &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#39;5y34&amp;#39;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到是 4 字节一组步进加密，解密时从尾到头反过来即可&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#abb2bf;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;bytearray&lt;/span&gt;([&lt;span style=&#34;color:#d19a66&#34;&gt;88&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;35&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;88&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;225&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;7&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;201&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;57&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;94&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;77&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;56&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;75&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;168&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;72&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;218&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;64&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;91&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;101&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;32&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;207&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                   &lt;span style=&#34;color:#d19a66&#34;&gt;73&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;130&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;74&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;128&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;76&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;201&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;248&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;41&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;205&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;103&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;84&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;91&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;99&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;79&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;202&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;22&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;131&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;63&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;255&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;20&lt;/span&gt;, &lt;span style=&#34;color:#d19a66&#34;&gt;16&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;bytearray&lt;/span&gt;(&lt;span style=&#34;color:#98c379&#34;&gt;b&lt;/span&gt;&lt;span style=&#34;color:#98c379&#34;&gt;&amp;#39;5y34&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;s&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;copy&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#c678dd&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#e5c07b&#34;&gt;range&lt;/span&gt;(&lt;span style=&#34;color:#d19a66&#34;&gt;38&lt;/span&gt;, &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#56b6c2&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;r1&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;r0&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;r3&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; ((&lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;r1&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;)) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0xff&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;r2&lt;/span&gt; &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;^&lt;/span&gt; ((&lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt; (&lt;span style=&#34;color:#e06c75&#34;&gt;r0&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;4&lt;/span&gt;)) &lt;span style=&#34;color:#56b6c2&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#d19a66&#34;&gt;0xff&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;[&lt;span style=&#34;color:#e06c75&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;r0&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r1&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r2&lt;/span&gt;, &lt;span style=&#34;color:#e06c75&#34;&gt;r3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#56b6c2&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;3&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;0&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;1&lt;/span&gt;], &lt;span style=&#34;color:#e06c75&#34;&gt;k&lt;/span&gt;[&lt;span style=&#34;color:#d19a66&#34;&gt;2&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e5c07b&#34;&gt;print&lt;/span&gt;(&lt;span style=&#34;color:#e06c75&#34;&gt;f&lt;/span&gt;&lt;span style=&#34;color:#56b6c2&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e06c75&#34;&gt;decode&lt;/span&gt;())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7f848e&#34;&gt;#flag{30831242-56db-45b4-96fd-1f47e60da99d}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#34;heading&#34; id=&#34;baby_code&#34;&gt;&#xA;  baby_code&#xA;  &lt;a class=&#34;anchor&#34; href=&#34;#baby_code&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;文件开头字节是 RITE0300&lt;/p&gt;&#xA;&lt;p&gt;查了一下，这是 &lt;a href=&#34;https://github.com/mruby/mruby/blob/66606f71dd5de5b3e5aac7dee1204ff9ed5692c4/doc/internal/opcode.md&#34;&gt;mruby bytecode&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;扒下所有字节码&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;mruby -b babycode.mrb&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;几个关键要点：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;最后一个函数显然是 check 函数&lt;/li&gt;&#xA;&lt;li&gt;XX 看起来像魔数 0x12345678&lt;/li&gt;&#xA;&lt;li&gt;YY 看起来像块长或者轮数 16 而从 times 的调用可以知道这是轮数&lt;/li&gt;&#xA;&lt;li&gt;mask 为 0xffffffff 确定块长为 32&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;可以看出是魔改的 XTEA&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
